mirror of
https://github.com/NixOS/nix
synced 2025-07-08 06:53:54 +02:00
Make the Nix search path declarative
Nix search path lookups like <nixpkgs> are now desugared to ‘findFile
nixPath <nixpkgs>’, where ‘findFile’ is a new primop. Thus you can
override the search path simply by saying
let
nixPath = [ { prefix = "nixpkgs"; path = "/my-nixpkgs"; } ];
in ... <nixpkgs> ...
In conjunction with ‘scopedImport’ (commit
c273c15cb1
), the Nix search path can be
propagated across imports, e.g.
let
overrides = {
nixPath = [ ... ] ++ builtins.nixPath;
import = fn: scopedImport overrides fn;
scopedImport = attrs: fn: scopedImport (overrides // attrs) fn;
builtins = builtins // overrides;
};
in scopedImport overrides ./nixos
This commit is contained in:
parent
39d72640c2
commit
62a6eeb1f3
7 changed files with 51 additions and 17 deletions
|
@ -1 +1 @@
|
|||
"abcc"
|
||||
"abcca"
|
||||
|
|
|
@ -8,3 +8,4 @@ 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>
|
||||
+ (let nixPath = [ { path = ./dir1; } { path = ./dir2; } ]; in import <a.nix>)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue