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 operate on. -
--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. -
--debugger
Start an interactive environment if evaluation fails. -
--eval-store
store-url The URL of the Nix store to use for evaluation, i.e. to store derivations (.drv
files) and inputs referenced by them. -
--impure
Allow access to mutable paths and repositories. -
--include
/-I
path Add path to the Nix search path. The Nix search path is initialized from the colon-separatedNIX_PATH
environment variable, and is used to look up the location of Nix expressions using paths enclosed in angle brackets (i.e.,<nixpkgs>
).For instance, passing
-I /home/eelco/Dev -I /etc/nixos
will cause Nix to look for paths relative to
/home/eelco/Dev
and/etc/nixos
, in that order. This is equivalent to setting theNIX_PATH
environment variable to/home/eelco/Dev:/etc/nixos
It is also possible to match paths against a prefix. For example, passing
-I nixpkgs=/home/eelco/Dev/nixpkgs-branch -I /etc/nixos
will cause Nix to search for
<nixpkgs/path>
in/home/eelco/Dev/nixpkgs-branch/path
and/etc/nixos/nixpkgs/path
.If a path in the Nix search path starts with
http://
orhttps://
, it is interpreted as the URL of a tarball that will be downloaded and unpacked to a temporary location. The tarball must consist of a single top-level directory. For example, passing-I nixpkgs=https://github.com/NixOS/nixpkgs/archive/master.tar.gz
tells Nix to download and use the current contents of the
master
branch in thenixpkgs
repository.The URLs of the tarballs from the official
nixos.org
channels (see the manual page fornix-channel
) can be abbreviated aschannel:<channel-name>
. For instance, the following two flags are equivalent:-I nixpkgs=channel:nixos-21.05 -I nixpkgs=https://nixos.org/channels/nixos-21.05/nixexprs.tar.xz
You can also fetch source trees using flake URLs and add them to the search path. For instance,
-I nixpkgs=flake:nixpkgs
specifies that the prefix
nixpkgs
shall refer to the source tree downloaded from thenixpkgs
entry in the flake registry. Similarly,-I nixpkgs=flake:github:NixOS/nixpkgs/nixos-22.05
makes
<nixpkgs>
refer to a particular branch of theNixOS/nixpkgs
repository on GitHub. -
--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. -
--output-lock-file
flake-lock-path Write the given lock file instead offlake.lock
within the top-level flake. -
--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. -
--reference-lock-file
flake-lock-path Read the given lock file instead offlake.lock
within the top-level flake. -
--update-input
input-path Update a specific flake input (ignoring its previous entry in the lock file).
Logging-related options:
-
--debug
Set the logging verbosity level to 'debug'. -
--log-format
format Set the format of log output; one ofraw
,internal-json
,bar
orbar-with-logs
. -
--print-build-logs
/-L
Print full build logs on standard error. -
--quiet
Decrease the logging verbosity level. -
--verbose
/-v
Increase the logging verbosity level.
Miscellaneous global options:
-
--help
Show usage information. -
--offline
Disable substituters and consider all previously downloaded files up-to-date. -
--option
name value Set the Nix configuration setting name to value (overridingnix.conf
). -
--refresh
Consider all previously downloaded files out-of-date. -
--repair
During evaluation, rewrite missing or corrupted files in the Nix store. During building, rebuild missing or corrupted store paths. -
--version
Show version information.
Options that change the interpretation of installables:
-
--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. Implies--impure
.
Options to override configuration settings:
-
--accept-flake-config
Enable theaccept-flake-config
setting. -
--access-tokens
value Set theaccess-tokens
setting. -
--allow-dirty
Enable theallow-dirty
setting. -
--allow-import-from-derivation
Enable theallow-import-from-derivation
setting. -
--allow-new-privileges
Enable theallow-new-privileges
setting. -
--allow-symlinked-store
Enable theallow-symlinked-store
setting. -
--allow-unsafe-native-code-during-evaluation
Enable theallow-unsafe-native-code-during-evaluation
setting. -
--allowed-impure-host-deps
value Set theallowed-impure-host-deps
setting. -
--allowed-uris
value Set theallowed-uris
setting. -
--allowed-users
value Set theallowed-users
setting. -
--auto-allocate-uids
Enable theauto-allocate-uids
setting. -
--auto-optimise-store
Enable theauto-optimise-store
setting. -
--bash-prompt
value Set thebash-prompt
setting. -
--bash-prompt-prefix
value Set thebash-prompt-prefix
setting. -
--bash-prompt-suffix
value Set thebash-prompt-suffix
setting. -
--build-hook
value Set thebuild-hook
setting. -
--build-poll-interval
value Set thebuild-poll-interval
setting. -
--build-users-group
value Set thebuild-users-group
setting. -
--builders
value Set thebuilders
setting. -
--builders-use-substitutes
Enable thebuilders-use-substitutes
setting. -
--commit-lockfile-summary
value Set thecommit-lockfile-summary
setting. -
--compress-build-log
Enable thecompress-build-log
setting. -
--connect-timeout
value Set theconnect-timeout
setting. -
--cores
value Set thecores
setting. -
--diff-hook
value Set thediff-hook
setting. -
--download-attempts
value Set thedownload-attempts
setting. -
--download-speed
value Set thedownload-speed
setting. -
--eval-cache
Enable theeval-cache
setting. -
--experimental-features
value Set theexperimental-features
setting. -
--extra-access-tokens
value Append to theaccess-tokens
setting. -
--extra-allowed-impure-host-deps
value Append to theallowed-impure-host-deps
setting. -
--extra-allowed-uris
value Append to theallowed-uris
setting. -
--extra-allowed-users
value Append to theallowed-users
setting. -
--extra-build-hook
value Append to thebuild-hook
setting. -
--extra-experimental-features
value Append to theexperimental-features
setting. -
--extra-extra-platforms
value Append to theextra-platforms
setting. -
--extra-hashed-mirrors
value Append to thehashed-mirrors
setting. -
--extra-ignored-acls
value Append to theignored-acls
setting. -
--extra-nix-path
value Append to thenix-path
setting. -
--extra-platforms
value Set theextra-platforms
setting. -
--extra-plugin-files
value Append to theplugin-files
setting. -
--extra-sandbox-paths
value Append to thesandbox-paths
setting. -
--extra-secret-key-files
value Append to thesecret-key-files
setting. -
--extra-substituters
value Append to thesubstituters
setting. -
--extra-system-features
value Append to thesystem-features
setting. -
--extra-trusted-public-keys
value Append to thetrusted-public-keys
setting. -
--extra-trusted-substituters
value Append to thetrusted-substituters
setting. -
--extra-trusted-users
value Append to thetrusted-users
setting. -
--fallback
Enable thefallback
setting. -
--filter-syscalls
Enable thefilter-syscalls
setting. -
--flake-registry
value Set theflake-registry
setting. -
--fsync-metadata
Enable thefsync-metadata
setting. -
--gc-reserved-space
value Set thegc-reserved-space
setting. -
--hashed-mirrors
value Set thehashed-mirrors
setting. -
--http-connections
value Set thehttp-connections
setting. -
--http2
Enable thehttp2
setting. -
--id-count
value Set theid-count
setting. -
--ignore-try
Enable theignore-try
setting. -
--ignored-acls
value Set theignored-acls
setting. -
--impersonate-linux-26
Enable theimpersonate-linux-26
setting. -
--keep-build-log
Enable thekeep-build-log
setting. -
--keep-derivations
Enable thekeep-derivations
setting. -
--keep-env-derivations
Enable thekeep-env-derivations
setting. -
--keep-failed
Enable thekeep-failed
setting. -
--keep-going
Enable thekeep-going
setting. -
--keep-outputs
Enable thekeep-outputs
setting. -
--log-lines
value Set thelog-lines
setting. -
--max-build-log-size
value Set themax-build-log-size
setting. -
--max-free
value Set themax-free
setting. -
--max-jobs
value Set themax-jobs
setting. -
--max-silent-time
value Set themax-silent-time
setting. -
--max-substitution-jobs
value Set themax-substitution-jobs
setting. -
--min-free
value Set themin-free
setting. -
--min-free-check-interval
value Set themin-free-check-interval
setting. -
--nar-buffer-size
value Set thenar-buffer-size
setting. -
--narinfo-cache-negative-ttl
value Set thenarinfo-cache-negative-ttl
setting. -
--narinfo-cache-positive-ttl
value Set thenarinfo-cache-positive-ttl
setting. -
--netrc-file
value Set thenetrc-file
setting. -
--nix-path
value Set thenix-path
setting. -
--no-accept-flake-config
Disable theaccept-flake-config
setting. -
--no-allow-dirty
Disable theallow-dirty
setting. -
--no-allow-import-from-derivation
Disable theallow-import-from-derivation
setting. -
--no-allow-new-privileges
Disable theallow-new-privileges
setting. -
--no-allow-symlinked-store
Disable theallow-symlinked-store
setting. -
--no-allow-unsafe-native-code-during-evaluation
Disable theallow-unsafe-native-code-during-evaluation
setting. -
--no-auto-allocate-uids
Disable theauto-allocate-uids
setting. -
--no-auto-optimise-store
Disable theauto-optimise-store
setting. -
--no-builders-use-substitutes
Disable thebuilders-use-substitutes
setting. -
--no-compress-build-log
Disable thecompress-build-log
setting. -
--no-eval-cache
Disable theeval-cache
setting. -
--no-fallback
Disable thefallback
setting. -
--no-filter-syscalls
Disable thefilter-syscalls
setting. -
--no-fsync-metadata
Disable thefsync-metadata
setting. -
--no-http2
Disable thehttp2
setting. -
--no-ignore-try
Disable theignore-try
setting. -
--no-impersonate-linux-26
Disable theimpersonate-linux-26
setting. -
--no-keep-build-log
Disable thekeep-build-log
setting. -
--no-keep-derivations
Disable thekeep-derivations
setting. -
--no-keep-env-derivations
Disable thekeep-env-derivations
setting. -
--no-keep-failed
Disable thekeep-failed
setting. -
--no-keep-going
Disable thekeep-going
setting. -
--no-keep-outputs
Disable thekeep-outputs
setting. -
--no-preallocate-contents
Disable thepreallocate-contents
setting. -
--no-print-missing
Disable theprint-missing
setting. -
--no-pure-eval
Disable thepure-eval
setting. -
--no-require-drop-supplementary-groups
Disable therequire-drop-supplementary-groups
setting. -
--no-require-sigs
Disable therequire-sigs
setting. -
--no-restrict-eval
Disable therestrict-eval
setting. -
--no-run-diff-hook
Disable therun-diff-hook
setting. -
--no-sandbox
Disable sandboxing. -
--no-sandbox-fallback
Disable thesandbox-fallback
setting. -
--no-show-trace
Disable theshow-trace
setting. -
--no-substitute
Disable thesubstitute
setting. -
--no-sync-before-registering
Disable thesync-before-registering
setting. -
--no-trace-function-calls
Disable thetrace-function-calls
setting. -
--no-trace-verbose
Disable thetrace-verbose
setting. -
--no-use-case-hack
Disable theuse-case-hack
setting. -
--no-use-cgroups
Disable theuse-cgroups
setting. -
--no-use-registries
Disable theuse-registries
setting. -
--no-use-sqlite-wal
Disable theuse-sqlite-wal
setting. -
--no-use-xdg-base-directories
Disable theuse-xdg-base-directories
setting. -
--no-warn-dirty
Disable thewarn-dirty
setting. -
--plugin-files
value Set theplugin-files
setting. -
--post-build-hook
value Set thepost-build-hook
setting. -
--pre-build-hook
value Set thepre-build-hook
setting. -
--preallocate-contents
Enable thepreallocate-contents
setting. -
--print-missing
Enable theprint-missing
setting. -
--pure-eval
Enable thepure-eval
setting. -
--relaxed-sandbox
Enable sandboxing, but allow builds to disable it. -
--require-drop-supplementary-groups
Enable therequire-drop-supplementary-groups
setting. -
--require-sigs
Enable therequire-sigs
setting. -
--restrict-eval
Enable therestrict-eval
setting. -
--run-diff-hook
Enable therun-diff-hook
setting. -
--sandbox
Enable sandboxing. -
--sandbox-build-dir
value Set thesandbox-build-dir
setting. -
--sandbox-dev-shm-size
value Set thesandbox-dev-shm-size
setting. -
--sandbox-fallback
Enable thesandbox-fallback
setting. -
--sandbox-paths
value Set thesandbox-paths
setting. -
--secret-key-files
value Set thesecret-key-files
setting. -
--show-trace
Enable theshow-trace
setting. -
--ssl-cert-file
value Set thessl-cert-file
setting. -
--stalled-download-timeout
value Set thestalled-download-timeout
setting. -
--start-id
value Set thestart-id
setting. -
--store
value Set thestore
setting. -
--substitute
Enable thesubstitute
setting. -
--substituters
value Set thesubstituters
setting. -
--sync-before-registering
Enable thesync-before-registering
setting. -
--system
value Set thesystem
setting. -
--system-features
value Set thesystem-features
setting. -
--tarball-ttl
value Set thetarball-ttl
setting. -
--timeout
value Set thetimeout
setting. -
--trace-function-calls
Enable thetrace-function-calls
setting. -
--trace-verbose
Enable thetrace-verbose
setting. -
--trusted-public-keys
value Set thetrusted-public-keys
setting. -
--trusted-substituters
value Set thetrusted-substituters
setting. -
--trusted-users
value Set thetrusted-users
setting. -
--use-case-hack
Enable theuse-case-hack
setting. -
--use-cgroups
Enable theuse-cgroups
setting. -
--use-registries
Enable theuse-registries
setting. -
--use-sqlite-wal
Enable theuse-sqlite-wal
setting. -
--use-xdg-base-directories
Enable theuse-xdg-base-directories
setting. -
--user-agent-suffix
value Set theuser-agent-suffix
setting. -
--warn-dirty
Enable thewarn-dirty
setting.