nix print-dev-env

Warning: This program is experimental and its interface is subject to change.

# Name

`nix print-dev-env` - print shell code that can be sourced by bash to reproduce the build environment of a derivation

# Synopsis

`nix print-dev-env` [option...] installable

# Examples

- Apply the build environment of GNU hello to the current shell:

      # . <(nix print-dev-env nixpkgs#hello)

- Get the build environment in JSON format:

      # nix print-dev-env nixpkgs#hello --json

  The output will look like this:

      {
        "bashFunctions": {
          "buildPhase": " \n    runHook preBuild;\n...",
          ...
        },
        "variables": {
          "src": {
            "type": "exported",
            "value": "/nix/store/3x7dwzq014bblazs7kq20p9hyzz0qh8g-hello-2.10.tar.gz"
          },
          "postUnpackHooks": {
            "type": "array",
            "value": ["_updateSourceDateEpochFromSourceRoot"]
          },
          ...
        }
      }

# Description

This command prints a shell script that can be sourced by `bash` and that sets the variables and shell functions defined by the build process of installable. This allows you to get a similar build environment in your current shell rather than in a subshell (as with `nix develop`).

With `--json`, the output is a JSON serialisation of the variables and functions defined by the build process.

# Options

- `--json`
  Produce output in JSON format, suitable for consumption by another program.

- `--profile` path
  The profile to update.

- `--redirect` installable outputs-dir
  Redirect a store path to a mutable location.

Common evaluation options:

- `--arg` name expr
  Pass the value expr as the argument name to Nix functions.

- `--argstr` name string
  Pass the string string as the argument name to Nix functions.

- `--eval-store` store-url
  The Nix store to use for evaluations.

- `--impure`
  Allow access to mutable paths and repositories.

- `--include` / `-I` path
  Add path to the list of locations used to look up `<...>` file names.

- `--override-flake` original-ref resolved-ref
  Override the flake registries, redirecting original-ref to resolved-ref.

Common flake-related options:

- `--commit-lock-file`
  Commit changes to the flake's lock file.

- `--inputs-from` flake-url
  Use the inputs of the specified flake as registry entries.

- `--no-registries`
  Don't allow lookups in the flake registries. This option is deprecated; use `--no-use-registries`.

- `--no-update-lock-file`
  Do not allow any updates to the flake's lock file.

- `--no-write-lock-file`
  Do not write the flake's newly generated lock file.

- `--override-input` input-path flake-url
  Override a specific flake input (e.g. `dwarffs/nixpkgs`). This implies `--no-write-lock-file`.

- `--recreate-lock-file`
  Recreate the flake's lock file from scratch.

- `--update-input` input-path
  Update a specific flake input (ignoring its previous entry in the lock file).

Options that change the interpretation of installables:

- `--derivation`
  Operate on the store derivation rather than its outputs.

- `--expr` expr
  Interpret installables as attribute paths relative to the Nix expression expr.

- `--file` / `-f` file
  Interpret installables as attribute paths relative to the Nix expression stored in file. If file is the character -, then a Nix expression will be read from standard input.