mkShell: add builder (#30975)
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
{ lib, stdenv }:
|
||||
|
||||
# A special kind of derivation that is only meant to be consumed by the
|
||||
# nix-shell.
|
||||
{
|
||||
inputsFrom ? [], # a list of derivations whose inputs will be made available to the environment
|
||||
buildInputs ? [],
|
||||
nativeBuildInputs ? [],
|
||||
propagatedBuildInputs ? [],
|
||||
propagatedNativeBuildInputs ? [],
|
||||
...
|
||||
}@attrs:
|
||||
let
|
||||
mergeInputs = name:
|
||||
let
|
||||
op = item: sum: sum ++ item."${name}" or [];
|
||||
nul = [];
|
||||
list = [attrs] ++ inputsFrom;
|
||||
in
|
||||
lib.foldr op nul list;
|
||||
|
||||
rest = builtins.removeAttrs attrs [
|
||||
"inputsFrom"
|
||||
"buildInputs"
|
||||
"nativeBuildInputs"
|
||||
"propagatedBuildInputs"
|
||||
"propagatedNativeBuildInputs"
|
||||
];
|
||||
in
|
||||
|
||||
stdenv.mkDerivation ({
|
||||
name = "nix-shell";
|
||||
phases = ["nobuildPhase"];
|
||||
|
||||
buildInputs = mergeInputs "buildInputs";
|
||||
nativeBuildInputs = mergeInputs "nativeBuildInputs";
|
||||
propagatedBuildInputs = mergeInputs "propagatedBuildInputs";
|
||||
propagatedNativeBuildInputs = mergeInputs "propagatedNativeBuildInputs";
|
||||
|
||||
nobuildPhase = ''
|
||||
echo
|
||||
echo "This derivation is not meant to be built, aborting";
|
||||
echo
|
||||
exit 1
|
||||
'';
|
||||
} // rest)
|
||||
Reference in New Issue
Block a user