diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-05-26 14:55:47 +0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-05-26 14:55:47 +0200 |
commit | a8edf185a9e1677088c8c30acc9d281c8350bca7 (patch) | |
tree | 80f53725d7e209f56629b4caef7d84075e14e471 /src | |
parent | c273c15cb13bb86420dda1e5341a4e19517532b5 (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')
-rw-r--r-- | src/libexpr/primops.cc | 11 |
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(); |