Warning
This program is experimental and its interface is subject to change.
Name
nix repl
- start an interactive environment for evaluating Nix expressions
Synopsis
nix repl
[option...] installables...
Examples
-
Display all special commands within the REPL:
# nix repl nix-repl> :?
-
Evaluate some simple Nix expressions:
# nix repl nix-repl> 1 + 2 3 nix-repl> map (x: x * 2) [1 2 3] [ 2 4 6 ]
-
Interact with Nixpkgs in the REPL:
# nix repl --file example.nix Loading Installable ''... Added 3 variables. # nix repl --expr '{a={b=3;c=4;};}' Loading Installable ''... Added 1 variables. # nix repl --expr '{a={b=3;c=4;};}' a Loading Installable ''... Added 1 variables. # nix repl --extra-experimental-features 'flakes repl-flake' nixpkgs Loading Installable 'flake:nixpkgs#'... Added 5 variables. nix-repl> legacyPackages.x86_64-linux.emacs.name "emacs-27.1" nix-repl> legacyPackages.x86_64-linux.emacs.name "emacs-27.1" nix-repl> :q # nix repl --expr 'import <nixpkgs>{}' Loading Installable ''... Added 12439 variables. nix-repl> emacs.name "emacs-27.1" nix-repl> emacs.drvPath "/nix/store/lp0sjrhgg03y2n0l10n70rg0k7hhyz0l-emacs-27.1.drv" nix-repl> drv = runCommand "hello" { buildInputs = [ hello ]; } "hello; hello > $out" nix-repl> :b drv this derivation produced the following outputs: out -> /nix/store/0njwbgwmkwls0w5dv9mpc1pq5fj39q0l-hello nix-repl> builtins.readFile drv "Hello, world!\n" nix-repl> :log drv Hello, world!
Description
This command provides an interactive environment for evaluating Nix expressions. (REPL stands for 'read–eval–print loop'.)
On startup, it loads the Nix expressions named files and adds them
into the lexical scope. You can load addition files using the :l <filename>
command, or reload all files using :r
.
Options
Common evaluation options:
-
--arg
name exprPass the value expr as the argument name to Nix functions.
-
--argstr
name stringPass the string string as the argument name to Nix functions.
-
--debugger
Start an interactive environment if evaluation fails.
-
--eval-store
store-urlThe Nix store to use for evaluations.
-
--impure
Allow access to mutable paths and repositories.
-
--include
/-I
pathAdd path to the Nix search path. The Nix search path is initialized from the colon-separated
NIX_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-refOverride 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-urlUse 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-urlOverride 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-pathUpdate 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
formatSet the format of log output; one of
raw
,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 valueSet the Nix configuration setting name to value (overriding
nix.conf
). -
--refresh
Consider all previously downloaded files out-of-date.
-
--version
Show version information.
Options that change the interpretation of installables:
-
--derivation
Operate on the store derivation rather than its outputs.
-
--expr
exprInterpret installables as attribute paths relative to the Nix expression expr.
-
--file
/-f
fileInterpret 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 the
accept-flake-config
setting. -
--access-tokens
valueSet the
access-tokens
setting. -
--allow-dirty
Enable the
allow-dirty
setting. -
--allow-import-from-derivation
Enable the
allow-import-from-derivation
setting. -
--allow-new-privileges
Enable the
allow-new-privileges
setting. -
--allow-symlinked-store
Enable the
allow-symlinked-store
setting. -
--allow-unsafe-native-code-during-evaluation
Enable the
allow-unsafe-native-code-during-evaluation
setting. -
--allowed-impure-host-deps
valueSet the
allowed-impure-host-deps
setting. -
--allowed-uris
valueSet the
allowed-uris
setting. -
--allowed-users
valueSet the
allowed-users
setting. -
--auto-allocate-uids
Enable the
auto-allocate-uids
setting. -
--auto-optimise-store
Enable the
auto-optimise-store
setting. -
--bash-prompt
valueSet the
bash-prompt
setting. -
--bash-prompt-prefix
valueSet the
bash-prompt-prefix
setting. -
--bash-prompt-suffix
valueSet the
bash-prompt-suffix
setting. -
--build-hook
valueSet the
build-hook
setting. -
--build-poll-interval
valueSet the
build-poll-interval
setting. -
--build-users-group
valueSet the
build-users-group
setting. -
--builders
valueSet the
builders
setting. -
--builders-use-substitutes
Enable the
builders-use-substitutes
setting. -
--commit-lockfile-summary
valueSet the
commit-lockfile-summary
setting. -
--compress-build-log
Enable the
compress-build-log
setting. -
--connect-timeout
valueSet the
connect-timeout
setting. -
--cores
valueSet the
cores
setting. -
--diff-hook
valueSet the
diff-hook
setting. -
--download-attempts
valueSet the
download-attempts
setting. -
--download-speed
valueSet the
download-speed
setting. -
--eval-cache
Enable the
eval-cache
setting. -
--experimental-features
valueSet the
experimental-features
setting. -
--extra-access-tokens
valueAppend to the
access-tokens
setting. -
--extra-allowed-impure-host-deps
valueAppend to the
allowed-impure-host-deps
setting. -
--extra-allowed-uris
valueAppend to the
allowed-uris
setting. -
--extra-allowed-users
valueAppend to the
allowed-users
setting. -
--extra-experimental-features
valueAppend to the
experimental-features
setting. -
--extra-extra-platforms
valueAppend to the
extra-platforms
setting. -
--extra-hashed-mirrors
valueAppend to the
hashed-mirrors
setting. -
--extra-ignored-acls
valueAppend to the
ignored-acls
setting. -
--extra-nix-path
valueAppend to the
nix-path
setting. -
--extra-platforms
valueSet the
extra-platforms
setting. -
--extra-plugin-files
valueAppend to the
plugin-files
setting. -
--extra-sandbox-paths
valueAppend to the
sandbox-paths
setting. -
--extra-secret-key-files
valueAppend to the
secret-key-files
setting. -
--extra-substituters
valueAppend to the
substituters
setting. -
--extra-system-features
valueAppend to the
system-features
setting. -
--extra-trusted-public-keys
valueAppend to the
trusted-public-keys
setting. -
--extra-trusted-substituters
valueAppend to the
trusted-substituters
setting. -
--extra-trusted-users
valueAppend to the
trusted-users
setting. -
--fallback
Enable the
fallback
setting. -
--filter-syscalls
Enable the
filter-syscalls
setting. -
--flake-registry
valueSet the
flake-registry
setting. -
--fsync-metadata
Enable the
fsync-metadata
setting. -
--gc-reserved-space
valueSet the
gc-reserved-space
setting. -
--hashed-mirrors
valueSet the
hashed-mirrors
setting. -
--http-connections
valueSet the
http-connections
setting. -
--http2
Enable the
http2
setting. -
--id-count
valueSet the
id-count
setting. -
--ignore-try
Enable the
ignore-try
setting. -
--ignored-acls
valueSet the
ignored-acls
setting. -
--impersonate-linux-26
Enable the
impersonate-linux-26
setting. -
--keep-build-log
Enable the
keep-build-log
setting. -
--keep-derivations
Enable the
keep-derivations
setting. -
--keep-env-derivations
Enable the
keep-env-derivations
setting. -
--keep-failed
Enable the
keep-failed
setting. -
--keep-going
Enable the
keep-going
setting. -
--keep-outputs
Enable the
keep-outputs
setting. -
--log-lines
valueSet the
log-lines
setting. -
--max-build-log-size
valueSet the
max-build-log-size
setting. -
--max-free
valueSet the
max-free
setting. -
--max-jobs
valueSet the
max-jobs
setting. -
--max-silent-time
valueSet the
max-silent-time
setting. -
--min-free
valueSet the
min-free
setting. -
--min-free-check-interval
valueSet the
min-free-check-interval
setting. -
--nar-buffer-size
valueSet the
nar-buffer-size
setting. -
--narinfo-cache-negative-ttl
valueSet the
narinfo-cache-negative-ttl
setting. -
--narinfo-cache-positive-ttl
valueSet the
narinfo-cache-positive-ttl
setting. -
--netrc-file
valueSet the
netrc-file
setting. -
--nix-path
valueSet the
nix-path
setting. -
--no-accept-flake-config
Disable the
accept-flake-config
setting. -
--no-allow-dirty
Disable the
allow-dirty
setting. -
--no-allow-import-from-derivation
Disable the
allow-import-from-derivation
setting. -
--no-allow-new-privileges
Disable the
allow-new-privileges
setting. -
--no-allow-symlinked-store
Disable the
allow-symlinked-store
setting. -
--no-allow-unsafe-native-code-during-evaluation
Disable the
allow-unsafe-native-code-during-evaluation
setting. -
--no-auto-allocate-uids
Disable the
auto-allocate-uids
setting. -
--no-auto-optimise-store
Disable the
auto-optimise-store
setting. -
--no-builders-use-substitutes
Disable the
builders-use-substitutes
setting. -
--no-compress-build-log
Disable the
compress-build-log
setting. -
--no-eval-cache
Disable the
eval-cache
setting. -
--no-fallback
Disable the
fallback
setting. -
--no-filter-syscalls
Disable the
filter-syscalls
setting. -
--no-fsync-metadata
Disable the
fsync-metadata
setting. -
--no-http2
Disable the
http2
setting. -
--no-ignore-try
Disable the
ignore-try
setting. -
--no-impersonate-linux-26
Disable the
impersonate-linux-26
setting. -
--no-keep-build-log
Disable the
keep-build-log
setting. -
--no-keep-derivations
Disable the
keep-derivations
setting. -
--no-keep-env-derivations
Disable the
keep-env-derivations
setting. -
--no-keep-failed
Disable the
keep-failed
setting. -
--no-keep-going
Disable the
keep-going
setting. -
--no-keep-outputs
Disable the
keep-outputs
setting. -
--no-preallocate-contents
Disable the
preallocate-contents
setting. -
--no-print-missing
Disable the
print-missing
setting. -
--no-pure-eval
Disable the
pure-eval
setting. -
--no-require-sigs
Disable the
require-sigs
setting. -
--no-restrict-eval
Disable the
restrict-eval
setting. -
--no-run-diff-hook
Disable the
run-diff-hook
setting. -
--no-sandbox
Disable sandboxing.
-
--no-sandbox-fallback
Disable the
sandbox-fallback
setting. -
--no-show-trace
Disable the
show-trace
setting. -
--no-substitute
Disable the
substitute
setting. -
--no-sync-before-registering
Disable the
sync-before-registering
setting. -
--no-trace-function-calls
Disable the
trace-function-calls
setting. -
--no-trace-verbose
Disable the
trace-verbose
setting. -
--no-use-case-hack
Disable the
use-case-hack
setting. -
--no-use-cgroups
Disable the
use-cgroups
setting. -
--no-use-registries
Disable the
use-registries
setting. -
--no-use-sqlite-wal
Disable the
use-sqlite-wal
setting. -
--no-warn-dirty
Disable the
warn-dirty
setting. -
--plugin-files
valueSet the
plugin-files
setting. -
--post-build-hook
valueSet the
post-build-hook
setting. -
--pre-build-hook
valueSet the
pre-build-hook
setting. -
--preallocate-contents
Enable the
preallocate-contents
setting. -
--print-missing
Enable the
print-missing
setting. -
--pure-eval
Enable the
pure-eval
setting. -
--relaxed-sandbox
Enable sandboxing, but allow builds to disable it.
-
--require-sigs
Enable the
require-sigs
setting. -
--restrict-eval
Enable the
restrict-eval
setting. -
--run-diff-hook
Enable the
run-diff-hook
setting. -
--sandbox
Enable sandboxing.
-
--sandbox-build-dir
valueSet the
sandbox-build-dir
setting. -
--sandbox-dev-shm-size
valueSet the
sandbox-dev-shm-size
setting. -
--sandbox-fallback
Enable the
sandbox-fallback
setting. -
--sandbox-paths
valueSet the
sandbox-paths
setting. -
--secret-key-files
valueSet the
secret-key-files
setting. -
--show-trace
Enable the
show-trace
setting. -
--stalled-download-timeout
valueSet the
stalled-download-timeout
setting. -
--start-id
valueSet the
start-id
setting. -
--store
valueSet the
store
setting. -
--substitute
Enable the
substitute
setting. -
--substituters
valueSet the
substituters
setting. -
--sync-before-registering
Enable the
sync-before-registering
setting. -
--system
valueSet the
system
setting. -
--system-features
valueSet the
system-features
setting. -
--tarball-ttl
valueSet the
tarball-ttl
setting. -
--timeout
valueSet the
timeout
setting. -
--trace-function-calls
Enable the
trace-function-calls
setting. -
--trace-verbose
Enable the
trace-verbose
setting. -
--trusted-public-keys
valueSet the
trusted-public-keys
setting. -
--trusted-substituters
valueSet the
trusted-substituters
setting. -
--trusted-users
valueSet the
trusted-users
setting. -
--use-case-hack
Enable the
use-case-hack
setting. -
--use-cgroups
Enable the
use-cgroups
setting. -
--use-registries
Enable the
use-registries
setting. -
--use-sqlite-wal
Enable the
use-sqlite-wal
setting. -
--user-agent-suffix
valueSet the
user-agent-suffix
setting. -
--warn-dirty
Enable the
warn-dirty
setting.