aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2014-05-26 14:55:47 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2014-05-26 14:55:47 +0200
commita8edf185a9e1677088c8c30acc9d281c8350bca7 (patch)
tree80f53725d7e209f56629b4caef7d84075e14e471 /src/libexpr
parentc273c15cb13bb86420dda1e5341a4e19517532b5 (diff)
Add constant ‘nixPath’
It contains the Nix expression search path as a list of { prefix, path } sets, e.g. [ { path = "/nix/var/nix/profiles/per-user/root/channels/nixos"; prefix = ""; } { path = "/etc/nixos/configuration.nix"; prefix = "nixos-config"; } { path = "/home/eelco/Dev/nix/inst/share/nix/corepkgs"; prefix = "nix"; } ]
Diffstat (limited to 'src/libexpr')
-rw-r--r--src/libexpr/primops.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc
index 533ae3768..e492ff683 100644
--- a/src/libexpr/primops.cc
+++ b/src/libexpr/primops.cc
@@ -1352,6 +1352,17 @@ void EvalState::createBaseEnv()
evalFile(path, v);
addConstant("derivation", v);
+ /* Add a value containing the current Nix expression search path. */
+ mkList(v, searchPath.size());
+ int n = 0;
+ for (auto & i : searchPath) {
+ Value * v2 = v.list.elems[n++] = allocValue();
+ mkAttrs(*v2, 2);
+ mkString(*allocAttr(*v2, symbols.create("path")), i.second);
+ mkString(*allocAttr(*v2, symbols.create("prefix")), i.first);
+ }
+ addConstant("nixPath", v);
+
/* Now that we've added all primops, sort the `builtins' set,
because attribute lookups expect it to be sorted. */
baseEnv.values[0]->attrs->sort();