diff options
Diffstat (limited to 'src/libexpr/primops.cc')
-rw-r--r-- | src/libexpr/primops.cc | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc index 4f0a9f1bdbf5..dbb8f51b0243 100644 --- a/src/libexpr/primops.cc +++ b/src/libexpr/primops.cc @@ -357,21 +357,21 @@ static Expr primFalse(EvalState & state, const ATermVector & args) /* Return the null value. */ -Expr primNull(EvalState & state, const ATermVector & args) +static Expr primNull(EvalState & state, const ATermVector & args) { return makeNull(); } /* Determine whether the argument is the null value. */ -Expr primIsNull(EvalState & state, const ATermVector & args) +static Expr primIsNull(EvalState & state, const ATermVector & args) { return makeBool(matchNull(evalExpr(state, args[0]))); } /* Apply a function to every element of a list. */ -Expr primMap(EvalState & state, const ATermVector & args) +static Expr primMap(EvalState & state, const ATermVector & args) { Expr fun = evalExpr(state, args[0]); Expr list = evalExpr(state, args[1]); @@ -388,11 +388,22 @@ Expr primMap(EvalState & state, const ATermVector & args) } +/* Return a string constant representing the current platform. Note! + that differs between platforms, so Nix expressions using + `__currentSystem' can evaluate to different values on different + platforms. */ +static Expr primCurrentSystem(EvalState & state, const ATermVector & args) +{ + return makeStr(toATerm(thisSystem)); +} + + void EvalState::addPrimOps() { addPrimOp("true", 0, primTrue); addPrimOp("false", 0, primFalse); addPrimOp("null", 0, primNull); + addPrimOp("__currentSystem", 0, primCurrentSystem); addPrimOp("import", 1, primImport); addPrimOp("derivation", 1, primDerivation); |