nix-shell1Nixnix-shellstart an interactive shell based on a Nix expressionnix-shellnamevaluenamevalueattrPathcmdregexppathDescriptionThe command nix-shell will build the
dependencies of the specified derivation, but not the derivation
itself. It will then start an interactive shell in which all
environment variables defined by the derivation
path have been set to their corresponding
values, and the script $stdenv/setup has been
sourced. This is useful for reproducing the environment of a
derivation for development.If path is not given,
nix-shell defaults to
shell.nix if it exists, and
default.nix otherwise.If the derivation defines the variable
shellHook, it will be evaluated after
$stdenv/setup has been sourced. Since this hook is
not executed by regular Nix builds, it allows you to perform
initialisation specific to nix-shell. For example,
the derivation attribute
shellHook =
''
echo "Hello shell!"
'';
will cause nix-shell to print Hello shell!.OptionsAll options not listed here are passed to nix-store
--realise, except for and
/ which are passed to
nix-instantiate. See
also .cmdIn the environment of the derivation, run the
shell command cmd instead of starting
an interactive shell. However, if you end the shell command with
return, you still get an interactive shell.
This can be useful for doing any additional
initialisation.regexpDo not build any dependencies whose store path
matches the regular expression regexp.
This option may be specified multiple times.If this flag is specified, the environment is
almost entirely cleared before the interactive shell is started,
so you get an environment that more closely corresponds to the
“real” Nix build. A few variables, in particular
HOME, USER and
DISPLAY, are retained. Note that
~/.bashrc and (depending on your Bash
installation) /etc/bashrc are still sourced,
so any variables set there will affect the interactive
shell.The following common options are supported:ExamplesTo build the dependencies of the package Pan, and start an
interactive shell in which to build it:
$ nix-shell '<nixpkgs>' -A pan
$ unpackPhase
$ cd pan-*
$ configurePhase
$ buildPhase
$ ./pan/gui/pan
To clear the environment first, and do some additional automatic
initialisation of the interactive shell:
$ nix-shell '<nixpkgs>' -A pan --pure \
--command 'export NIX_DEBUG=1; export NIX_CORES=8; return'
Environment variables