2020-12-08 20:52:22 +00:00
R""(
2024-04-29 13:39:10 +00:00
**Note:** this command's interface is based heavily around [*installables* ](./nix.md#installables ), which you may want to read about first (`nix --help`).
2020-12-08 20:52:22 +00:00
# Examples
* Start a shell with the build environment of the default package of
the flake in the current directory:
```console
# nix develop
```
Typical commands to run inside this shell are:
```console
# configurePhase
# buildPhase
# installPhase
```
Alternatively, you can run whatever build tools your project uses
directly, e.g. for a typical Unix project:
```console
# ./configure --prefix=$out
# make
# make install
```
* Run a particular build phase directly:
```console
2021-10-08 22:19:50 +00:00
# nix develop --unpack
2020-12-08 20:52:22 +00:00
# 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:
```console
# nix develop nixpkgs#hello
```
* Record a build environment in a profile:
```console
# nix develop --profile /tmp/my-build-env nixpkgs#hello
```
* Use a build environment previously recorded in a profile:
2020-12-08 22:01:50 +00:00
```console
2020-12-08 20:52:22 +00:00
# nix develop /tmp/my-build-env
```
2022-01-30 08:51:39 +00:00
* Replace all occurrences of the store path corresponding to
2020-12-08 20:52:22 +00:00
`glibc.dev` with a writable directory:
```console
# 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.
2022-09-06 15:18:13 +00:00
* Run a series of script commands:
```console
2023-09-12 15:15:36 +00:00
# nix develop --command bash -c "mkdir build & & cmake .. & & make"
2022-09-06 15:18:13 +00:00
```
2020-12-08 20:52:22 +00:00
# Description
`nix develop` starts a `bash` shell that provides an interactive build
environment nearly identical to what Nix would use to build
2022-12-01 00:57:02 +00:00
[*installable* ](./nix.md#installables ). Inside this shell, environment variables and shell
2020-12-08 20:52:22 +00:00
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
2022-05-10 20:55:25 +00:00
`bash-prompt` , `bash-prompt-prefix` , and `bash-prompt-suffix` settings in
`nix.conf` or in the flake's `nixConfig` attribute.
2020-12-08 20:52:22 +00:00
# Flake output attributes
2021-07-13 09:44:19 +00:00
If no flake output attribute is given, `nix develop` tries the following
2020-12-08 20:52:22 +00:00
flake output attributes:
2022-02-22 13:32:56 +00:00
* `devShells.<system>.default`
2020-12-08 20:52:22 +00:00
2022-02-22 13:32:56 +00:00
* `packages.<system>.default`
2020-12-08 20:52:22 +00:00
2021-07-13 09:44:19 +00:00
If a flake output *name* is given, `nix develop` tries the following flake
output attributes:
* `devShells.<system>.<name>`
* `packages.<system>.<name>`
* `legacyPackages.<system>.<name>`
2020-12-08 20:52:22 +00:00
)""