mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 06:53:01 +00:00
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:
parent
7693c5d59b
commit
c6b62f2381
@ -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 ];
|
||||
}
|
||||
```
|
||||
|
@ -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
|
||||
|
@ -245,7 +245,7 @@ let
|
||||
ps.toolz
|
||||
]);
|
||||
in mkShell {
|
||||
buildInputs = [
|
||||
packages = [
|
||||
pythonEnv
|
||||
|
||||
black
|
||||
|
@ -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`.
|
||||
|
@ -2,8 +2,11 @@
|
||||
}:
|
||||
with nixpkgs;
|
||||
mkShell {
|
||||
buildInputs = [
|
||||
bash luarocks-nix nix-prefetch-scripts parallel
|
||||
packages = [
|
||||
bash
|
||||
luarocks-nix
|
||||
nix-prefetch-scripts
|
||||
parallel
|
||||
];
|
||||
LUAROCKS_NIXPKGS_PATH = toString nixpkgs.path;
|
||||
}
|
||||
|
@ -4,5 +4,5 @@ in
|
||||
pkgs.mkShell {
|
||||
name = "nixos-manual";
|
||||
|
||||
buildInputs = with pkgs; [ xmlformat jing xmloscopy ruby ];
|
||||
packages = with pkgs; [ xmlformat jing xmloscopy ruby ];
|
||||
}
|
||||
|
@ -7,10 +7,10 @@ let
|
||||
rev = "860da04ca91cbb69c9b881a54248d16bdaaf9923";
|
||||
sha256 = "1r3xmyk9rfgx7ln69dk8mgbnh3awcalm3r1c5ia2shlsrymvv1df";
|
||||
};
|
||||
in
|
||||
pkgs.mkShell {
|
||||
|
||||
in pkgs.mkShell {
|
||||
|
||||
buildInputs = [
|
||||
packages = [
|
||||
pkgs.bash
|
||||
];
|
||||
|
||||
|
@ -29,7 +29,7 @@ let
|
||||
in [ promise semaphore ]);
|
||||
|
||||
in pkgs.mkShell {
|
||||
buildInputs = [
|
||||
packages = [
|
||||
pkgs.git
|
||||
pkgs.nix
|
||||
pkgs.bash
|
||||
|
@ -1,7 +1,7 @@
|
||||
{ pkgs ? import <nixpkgs> {} }:
|
||||
{ pkgs ? import <nixpkgs> { } }:
|
||||
|
||||
pkgs.mkShell {
|
||||
buildInputs = [
|
||||
packages = [
|
||||
pkgs.poetry2nix.cli
|
||||
pkgs.pkg-config
|
||||
pkgs.libvirt
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Builder for Agda packages.
|
||||
|
||||
{ stdenv, lib, self, Agda, runCommandNoCC, makeWrapper, writeText, mkShell, ghcWithPackages, nixosTests }:
|
||||
{ stdenv, lib, self, Agda, runCommandNoCC, makeWrapper, writeText, ghcWithPackages, nixosTests }:
|
||||
|
||||
with lib.strings;
|
||||
|
||||
|
@ -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
|
||||
|
@ -115,7 +115,7 @@ let
|
||||
in
|
||||
pkgs.mkShell rec {
|
||||
name = "androidenv-demo";
|
||||
buildInputs = [ androidSdk platformTools jdk pkgs.android-studio ];
|
||||
packages = [ androidSdk platformTools jdk pkgs.android-studio ];
|
||||
|
||||
LANG = "C.UTF-8";
|
||||
LC_ALL = "C.UTF-8";
|
||||
|
@ -1,9 +1,9 @@
|
||||
{ pkgs ? import ../../../../. {} }:
|
||||
{ pkgs ? import ../../../../. { } }:
|
||||
|
||||
with pkgs;
|
||||
|
||||
mkShell {
|
||||
buildInputs = [
|
||||
packages = [
|
||||
common-updater-scripts
|
||||
curl
|
||||
dotnetCorePackages.sdk_5_0
|
||||
|
Loading…
Reference in New Issue
Block a user