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…
	
	Add table
		Add a link
		
	
		Reference in a new issue