From 42cc98f8d66627ff7e396fb809034d3389b3bd0a Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 8 Dec 2020 21:52:22 +0100 Subject: Add 'nix develop' and `nix print-dev-env' manpages --- src/nix/develop.md | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 src/nix/develop.md (limited to 'src/nix/develop.md') diff --git a/src/nix/develop.md b/src/nix/develop.md new file mode 100644 index 000000000..7a906d10d --- /dev/null +++ b/src/nix/develop.md @@ -0,0 +1,94 @@ +R""( + +# 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 + # 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: + + ```cosnole + # nix develop /tmp/my-build-env + ``` + +* Replace all occurences of the store path corresponding to + `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. + +# 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` 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 run` tries the following +flake output attributes: + +* `devShell.` + +* `defaultPackage.` + +)"" -- cgit v1.2.3 From 4e065229c75455d3cee8bc9e791c10faa93c1b50 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 8 Dec 2020 23:01:50 +0100 Subject: Typo --- src/nix/develop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/nix/develop.md') diff --git a/src/nix/develop.md b/src/nix/develop.md index 7a906d10d..e71d9f8aa 100644 --- a/src/nix/develop.md +++ b/src/nix/develop.md @@ -50,7 +50,7 @@ R""( * Use a build environment previously recorded in a profile: - ```cosnole + ```console # nix develop /tmp/my-build-env ``` -- cgit v1.2.3 From 037c86ee04d681170cedaf71f9d75c186abe9719 Mon Sep 17 00:00:00 2001 From: regnat Date: Tue, 13 Jul 2021 11:44:19 +0200 Subject: nix develop: Search in `devShells.${system}` by default Make `nix develop .#foo` search `.#devShells.${system}.foo` first --- src/nix/develop.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/nix/develop.md') diff --git a/src/nix/develop.md b/src/nix/develop.md index e71d9f8aa..c86c4872b 100644 --- a/src/nix/develop.md +++ b/src/nix/develop.md @@ -84,11 +84,20 @@ the flake's `nixConfig` attribute. # Flake output attributes -If no flake output attribute is given, `nix run` tries the following +If no flake output attribute is given, `nix develop` tries the following flake output attributes: * `devShell.` * `defaultPackage.` +If a flake output *name* is given, `nix develop` tries the following flake +output attributes: + +* `devShells..` + +* `packages..` + +* `legacyPackages..` + )"" -- cgit v1.2.3