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"; } ]
This commit is contained in:
parent
c273c15cb1
commit
a8edf185a9
3 changed files with 20 additions and 2 deletions
|
@ -1352,6 +1352,17 @@ void EvalState::createBaseEnv()
|
||||||
evalFile(path, v);
|
evalFile(path, v);
|
||||||
addConstant("derivation", 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,
|
/* Now that we've added all primops, sort the `builtins' set,
|
||||||
because attribute lookups expect it to be sorted. */
|
because attribute lookups expect it to be sorted. */
|
||||||
baseEnv.values[0]->attrs->sort();
|
baseEnv.values[0]->attrs->sort();
|
||||||
|
|
|
@ -46,7 +46,7 @@ for i in lang/eval-okay-*.nix; do
|
||||||
if test -e lang/$i.flags; then
|
if test -e lang/$i.flags; then
|
||||||
flags=$(cat lang/$i.flags)
|
flags=$(cat lang/$i.flags)
|
||||||
fi
|
fi
|
||||||
if ! NIX_PATH=lang/dir3:lang/dir4_PATH nix-instantiate $flags --eval --strict lang/$i.nix > lang/$i.out; then
|
if ! NIX_PATH=lang/dir3:lang/dir4 nix-instantiate $flags --eval --strict lang/$i.nix > lang/$i.out; then
|
||||||
echo "FAIL: $i should evaluate"
|
echo "FAIL: $i should evaluate"
|
||||||
fail=1
|
fail=1
|
||||||
elif ! diff lang/$i.out lang/$i.exp; then
|
elif ! diff lang/$i.out lang/$i.exp; then
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
assert builtins.pathExists <nix/buildenv.nix>;
|
with import ./lib.nix;
|
||||||
|
with builtins;
|
||||||
|
|
||||||
|
assert pathExists <nix/buildenv.nix>;
|
||||||
|
|
||||||
|
assert length nixPath == 3;
|
||||||
|
assert length (filter (x: x.prefix == "nix") nixPath) == 1;
|
||||||
|
assert length (filter (x: baseNameOf x.path == "dir4") nixPath) == 1;
|
||||||
|
|
||||||
import <a.nix> + import <b.nix> + import <c.nix> + import <dir5/c.nix>
|
import <a.nix> + import <b.nix> + import <c.nix> + import <dir5/c.nix>
|
||||||
|
|
Loading…
Reference in a new issue