mkshell: improve mergeInputs
mergeInputs is now simply defined in terms of `concatLists` and
`catAttrs` instead of a more complicated `foldr`.
Note that the order of PATH has also changed. For example running the
following with nix-shell:
let
pkgs = import <nixpkgs> {};
shell1 = pkgs.mkShell {
buildInputs = [ pkgs.htop ];
};
shell2 = pkgs.mkShell {
buildInputs = [ pkgs.hello ];
};
shell3 = pkgs.mkShell {
inputsFrom = [ shell1 shell2 ];
buildInputs = [ pkgs.tree ];
};
in shell3
Results in the following PATH:
$ echo $PATH
...
/nix/store/yifq4bikf7m07160bpia7z48ciqddbfi-tree-1.8.0/bin:
/nix/store/vhxqk81234ivqw1a7j200a1c69k8mywi-htop-2.2.0/bin:
/nix/store/n9vm3m58y1n3rg3mlll17wanc9hln58k-hello-2.10/bin
...
Previously the order was:
/nix/store/n9vm3m58y1n3rg3mlll17wanc9hln58k-hello-2.10/bin
/nix/store/vhxqk81234ivqw1a7j200a1c69k8mywi-htop-2.2.0/bin:
/nix/store/yifq4bikf7m07160bpia7z48ciqddbfi-tree-1.8.0/bin:
I think the new order makes more sense because it allows to override
the PATH in the outermost mkShell.
This commit is contained in:
@@ -11,13 +11,8 @@
|
|||||||
...
|
...
|
||||||
}@attrs:
|
}@attrs:
|
||||||
let
|
let
|
||||||
mergeInputs = name:
|
mergeInputs = name: lib.concatLists (lib.catAttrs name
|
||||||
let
|
([attrs] ++ inputsFrom));
|
||||||
op = item: sum: sum ++ item."${name}" or [];
|
|
||||||
nul = [];
|
|
||||||
list = [attrs] ++ inputsFrom;
|
|
||||||
in
|
|
||||||
lib.foldr op nul list;
|
|
||||||
|
|
||||||
rest = builtins.removeAttrs attrs [
|
rest = builtins.removeAttrs attrs [
|
||||||
"inputsFrom"
|
"inputsFrom"
|
||||||
|
|||||||
Reference in New Issue
Block a user