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
+6 -4
View File
@@ -1,15 +1,17 @@
# pkgs.mkShell {#sec-pkgs-mkShell}
`pkgs.mkShell` is a special kind of derivation that is only useful when using it combined with `nix-shell`. It will in fact fail to instantiate when invoked with `nix-build`.
`pkgs.mkShell` is a special kind of derivation that is only useful when using
it combined with `nix-shell`. It will in fact fail to instantiate when invoked
with `nix-build`.
## Usage {#sec-pkgs-mkShell-usage}
```nix
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
# this will make all the build inputs from hello and gnutar
# available to the shell environment
# specify which packages to add to the shell environment
packages = [ pkgs.gnumake ];
# add all the dependencies, of the given packages, to the shell environment
inputsFrom = with pkgs; [ hello gnutar ];
buildInputs = [ pkgs.gnumake ];
}
```
+2 -2
View File
@@ -10,7 +10,7 @@ with import <nixpkgs> {};
mkShell {
name = "dotnet-env";
buildInputs = [
packages = [
dotnet-sdk_3
];
}
@@ -25,7 +25,7 @@ with import <nixpkgs> {};
mkShell {
name = "dotnet-env";
buildInputs = [
packages = [
(with dotnetCorePackages; combinePackages [
sdk_3_1
sdk_3_0
+1 -1
View File
@@ -245,7 +245,7 @@ let
ps.toolz
]);
in mkShell {
buildInputs = [
packages = [
pythonEnv
black
+1 -1
View File
@@ -106,7 +106,7 @@ let
name = "gems-for-some-project";
gemdir = ./.;
};
in mkShell { buildInputs = [ gems gems.wrappedRuby ]; }
in mkShell { packages = [ gems gems.wrappedRuby ]; }
```
With this file in your directory, you can run `nix-shell` to build and use the gems. The important parts here are `bundlerEnv` and `wrappedRuby`.