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); | ||||
|     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(); | ||||
|  |  | |||
|  | @ -46,7 +46,7 @@ for i in lang/eval-okay-*.nix; do | |||
|         if test -e lang/$i.flags; then | ||||
|             flags=$(cat lang/$i.flags) | ||||
|         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" | ||||
|             fail=1 | ||||
|         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> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue