about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/fix.cc9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/fix.cc b/src/fix.cc
index 9111cd372733..420dd7c0495c 100644
--- a/src/fix.cc
+++ b/src/fix.cc
@@ -161,7 +161,8 @@ static Expr evalExpr2(EvalState & state, Expr e)
     }
 
     /* Application. */
-    if (ATmatch(e, "App(<term>, [<list>])", &e1, &e2)) {
+    if (ATmatch(e, "Call(<term>, [<list>])", &e1, &e2) ||
+        ATmatch(e, "App(<term>, [<list>])", &e1, &e2)) {
         e1 = evalExpr(state, e1);
         if (!ATmatch(e1, "Function([<list>], <term>)", &e3, &e4))
             throw badTerm("expecting a function", e1);
@@ -277,6 +278,12 @@ static Expr evalExpr2(EvalState & state, Expr e)
                 }
                 fs.derive.env.push_back(StringPair(key, s1));
             }
+            else if (ATmatch(value, "True")) {
+                fs.derive.env.push_back(StringPair(key, "1"));
+            }
+            else if (ATmatch(value, "False")) {
+                fs.derive.env.push_back(StringPair(key, ""));
+            }
             else throw badTerm("invalid package argument", value);
 
             bnds = ATinsert(bnds,