diff options
Diffstat (limited to 'src/libexpr')
-rw-r--r-- | src/libexpr/nixexpr.hh | 6 | ||||
-rw-r--r-- | src/libexpr/primops.cc | 17 |
2 files changed, 14 insertions, 9 deletions
diff --git a/src/libexpr/nixexpr.hh b/src/libexpr/nixexpr.hh index 9c49751c7dbb..b7decaa3d953 100644 --- a/src/libexpr/nixexpr.hh +++ b/src/libexpr/nixexpr.hh @@ -89,11 +89,5 @@ void checkVarDefs(const ATermMap & def, Expr e); /* Create an expression representing a boolean. */ Expr makeBool(bool b); -/* Create an expression representing a string. */ -Expr makeString(const string & s); - -/* Create an expression representing a path. */ -Expr makePath(const Path & path); - #endif /* !__NIXEXPR_H */ 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); |