nix3-develop - Man Page
run a bash shell that provides the build environment of a derivation
Warning
This program is experimental and its interface is subject to change.
Synopsis
nix develop [option…] installable
Examples
- Start a shell with the build environment of the default package of the flake in the current directory:
# nix develop
Typical commands to run inside this shell are:
# configurePhase # buildPhase # installPhase
Alternatively, you can run whatever build tools your project uses directly, e.g. for a typical Unix project:
# ./configure --prefix=$out # make # make install
- Run a particular build phase directly:
# nix develop --unpack # nix develop --configure # nix develop --build # nix develop --check # nix develop --install # nix develop --installcheck
- Start a shell with the build environment of GNU Hello:
# nix develop nixpkgs#hello
- Record a build environment in a profile:
# nix develop --profile /tmp/my-build-env nixpkgs#hello
- Use a build environment previously recorded in a profile:
# nix develop /tmp/my-build-env
- Replace all occurrences of the store path corresponding to
glibc.devwith a writable directory:
# nix develop --redirect nixpkgs#glibc.dev ~/my-glibc/outputs/dev
Note that this is useful if you’re running a nix develop shell for nixpkgs#glibc in ~/my-glibc and want to compile another package against it.
- Run a series of script commands:
# nix develop --command bash -c "mkdir build && cmake .. && make"
Description
nix develop starts a bash shell that provides an interactive build environment nearly identical to what Nix would use to build installable . Inside this shell, environment variables and shell functions are set up so that you can interactively and incrementally build your package.
Nix determines the build environment by building a modified version of the derivation installable that just records the environment initialised by stdenv and exits. This build environment can be recorded into a profile using --profile.
The prompt used by the bash shell can be customised by setting the bash-prompt, bash-prompt-prefix, and bash-prompt-suffix settings in nix.conf or in the flake’s nixConfig attribute.
Flake output attributes
If no flake output attribute is given, nix develop tries the following flake output attributes:
devShells.<system>.defaultpackages.<system>.default
If a flake output name is given, nix develop tries the following flake output attributes:
devShells.<system>.<name>packages.<system>.<name>legacyPackages.<system>.<name>
Options
--buildRun the
buildphase.--checkRun the
checkphase.--command/-ccommand argsInstead of starting an interactive shell, start the specified command and arguments.
--configureRun the
configurephase.--installRun the
installphase.--installcheckRun the
installcheckphase.--phasephase-nameThe stdenv phase to run (e.g.
buildorconfigure).--profilepathThe profile to operate on.
--redirectinstallable outputs-dirRedirect a store path to a mutable location.
--unpackRun the
unpackphase.
Common evaluation options
--argname exprPass the value expr as the argument name to Nix functions.
--arg-from-filename pathPass the contents of file path as the argument name to Nix functions.
--arg-from-stdinnamePass the contents of stdin as the argument name to Nix functions.
--argstrname stringPass the string string as the argument name to Nix functions.
--debuggerStart an interactive environment if evaluation fails.
--eval-storestore-urlThe URL of the Nix store to use for evaluation, i.e. to store derivations (
.drvfiles) and inputs referenced by them.--impureAllow access to mutable paths and repositories.
--include/-IpathAdd path to search path entries used to resolve lookup paths
This option may be given multiple times.
Paths added through
-Itake precedence over thenix-pathconfiguration setting and theNIX_PATHenvironment variable .--override-flakeoriginal-ref resolved-refOverride the flake registries, redirecting original-ref to resolved-ref.
Miscellaneous global options
--helpShow usage information.
--offlineDisable substituters and consider all previously downloaded files up-to-date.
--optionname valueSet the Nix configuration setting name to value (overriding
nix.conf).--refreshConsider all previously downloaded files out-of-date.
--repairDuring evaluation, rewrite missing or corrupted files in the Nix store. During building, rebuild missing or corrupted store paths.
--versionShow version information.
Options that change environment variables
--ignore-env/-iClear the entire environment, except for those specified with
--keep-env-var.--keep-env-var/-knameKeep the environment variable name, when using
--ignore-env.--set-env-var/-sname valueSets an environment variable name with value.
--unset-env-var/-unameUnset the environment variable name.
Options that change the interpretation of installables
--exprexprInterpret installables as attribute paths relative to the Nix expression expr.
--file/-ffileInterpret installables as attribute paths relative to the Nix expression stored in file. If file is the character -, then a Nix expression is read from standard input. Implies
--impure.Note
See
man nix.conffor overriding configuration settings with command line flags.