diff options
author | zimbatm <zimbatm@zimbatm.com> | 2017-12-20 23:42:07 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-20 23:42:07 +0000 |
commit | adc5c9b83df203c9e425efe00f9a788ed3554c2d (patch) | |
tree | 04ce943811c6bfffa250069666d38cff2301d0cf /pkgs/build-support/mkshell/default.nix | |
parent | 02d361cea9d20fe4746092a9ced207b1d0dcd9e9 (diff) | |
download | nixpkgs-adc5c9b83df203c9e425efe00f9a788ed3554c2d.tar nixpkgs-adc5c9b83df203c9e425efe00f9a788ed3554c2d.tar.gz nixpkgs-adc5c9b83df203c9e425efe00f9a788ed3554c2d.tar.bz2 nixpkgs-adc5c9b83df203c9e425efe00f9a788ed3554c2d.tar.lz nixpkgs-adc5c9b83df203c9e425efe00f9a788ed3554c2d.tar.xz nixpkgs-adc5c9b83df203c9e425efe00f9a788ed3554c2d.tar.zst nixpkgs-adc5c9b83df203c9e425efe00f9a788ed3554c2d.zip |
mkShell: add builder (#30975)
Diffstat (limited to 'pkgs/build-support/mkshell/default.nix')
-rw-r--r-- | pkgs/build-support/mkshell/default.nix | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/pkgs/build-support/mkshell/default.nix b/pkgs/build-support/mkshell/default.nix new file mode 100644 index 00000000000..a98b4affacb --- /dev/null +++ b/pkgs/build-support/mkshell/default.nix @@ -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) |