mkShell: introduce packages argument (#122180)

The distinction between the inputs doesn't really make sense in the
mkShell context.  Technically speaking, we should be using the
nativeBuildInputs most of the time.

So in order to make this function more beginner-friendly, add "packages"
as an attribute, that maps to nativeBuildInputs.

This commit also updates all the uses in nixpkgs.
This commit is contained in:
Jonas Chevalier
2021-05-13 19:17:29 +02:00
committed by GitHub
parent 7693c5d59b
commit c6b62f2381
13 changed files with 40 additions and 31 deletions
+14 -10
View File
@@ -3,18 +3,22 @@
# 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 ? [],
...
# a list of packages to add to the shell environment
packages ? [ ]
, # propagate all the inputs from the given derivations
inputsFrom ? [ ]
, buildInputs ? [ ]
, nativeBuildInputs ? [ ]
, propagatedBuildInputs ? [ ]
, propagatedNativeBuildInputs ? [ ]
, ...
}@attrs:
let
mergeInputs = name: lib.concatLists (lib.catAttrs name
([attrs] ++ inputsFrom));
([ attrs ] ++ inputsFrom));
rest = builtins.removeAttrs attrs [
"packages"
"inputsFrom"
"buildInputs"
"nativeBuildInputs"
@@ -26,15 +30,15 @@ in
stdenv.mkDerivation ({
name = "nix-shell";
phases = ["nobuildPhase"];
phases = [ "nobuildPhase" ];
buildInputs = mergeInputs "buildInputs";
nativeBuildInputs = mergeInputs "nativeBuildInputs";
nativeBuildInputs = packages ++ (mergeInputs "nativeBuildInputs");
propagatedBuildInputs = mergeInputs "propagatedBuildInputs";
propagatedNativeBuildInputs = mergeInputs "propagatedNativeBuildInputs";
shellHook = lib.concatStringsSep "\n" (lib.catAttrs "shellHook"
(lib.reverseList inputsFrom ++ [attrs]));
(lib.reverseList inputsFrom ++ [ attrs ]));
nobuildPhase = ''
echo