logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

nix shell - run a shell in which the specified packages are available

Description

       nix shell runs a  command  in  an  environment  in  which  the  $PATH  variable  provides  the  specified
       installables.  If  no command is specified, it starts the default shell of your user account specified by
       $SHELL.

Examples

       •  Start a shell providing youtube-dl from the nixpkgs flake:

       # nix shell nixpkgs#youtube-dl
       # youtube-dl --version
       2020.11.01.1

       •  Start a shell providing GNU Hello from NixOS 20.03:

       # nix shell nixpkgs/nixos-20.03#hello

       •  Run GNU Hello:

       # nix shell nixpkgs#hello --command hello --greeting 'Hi everybody!'
       Hi everybody!

       •  Run multiple commands in a shell environment:

       # nix shell nixpkgs#gnumake --command sh -c "cd src && make"

       •  Run GNU Hello in a chroot store:

       # nix shell --store ~/my-nix nixpkgs#hello --command hello

       •  Start a shell providing GNU Hello in a chroot store:

       # nix shell --store ~/my-nix nixpkgs#hello nixpkgs#bashInteractive --command bash

              Note  that  it’s  necessary to specify bash explicitly because your default shell (e.g. /bin/bash)
              generally will not exist in the chroot.

Name

       nix shell - run a shell in which the specified packages are available

Options

       •  --command / -c commandargs

          Command and arguments to be executed, defaulting to $SHELL

       •  --ignore-environment / -i

          Clear the entire environment (except those specified with --keep).

       •  --keep / -k name

          Keep the environment variable name.

       •  --stdin

          Read installables from the standard input. No default installable applied.

       •  --unset / -u name

          Unset the environment variable name.

       Commonevaluationoptions:

       •  --arg nameexpr

          Pass the value expr as the argument name to Nix functions.

       •  --argstr namestring

          Pass the string string as the argument name to Nix functions.

       •  --debugger

          Start an interactive environment if evaluation fails.

       •  --eval-store store-url

          The URLoftheNixstore 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-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 the NIX_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:// or https://, 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 the nixpkgs repository.

              The  URLs  of  the  tarballs  from  the  official nixos.org channels (see themanualpagefor nix-
              channel) can be abbreviated as channel:<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 flakeURLs 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 the nixpkgs entry
              in the flake registry. Similarly,

       -I nixpkgs=flake:github:NixOS/nixpkgs/nixos-22.05

              makes <nixpkgs> refer to a particular branch of the NixOS/nixpkgs repository on GitHub.

       •  --override-flake original-refresolved-ref

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

       Commonflake-relatedoptions:

       •  --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 of flake.lock within the top-level flake.

       •  --override-input input-pathflake-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 of flake.lock within the top-level flake.

       •  --update-input input-path

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

       Logging-relatedoptions:

       •  --debug

          Set the logging verbosity level to ‘debug’.

       •  --log-format format

          Set the format of log output; one of raw, internal-json, bar or bar-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.

       Miscellaneousglobaloptions:

       •  --help

          Show usage information.

       •  --offline

          Disable substituters and consider all previously downloaded files up-to-date.

       •  --option namevalue

          Set the Nix configuration setting name to value (overriding nix.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.

       Optionsthatchangetheinterpretationofinstallables:

       •  --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.

       Optionstooverrideconfigurationsettings:

       •  --accept-flake-config

          Enable the accept-flake-config setting.

       •  --access-tokens value

          Set 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 value

          Set the allowed-impure-host-deps setting.

       •  --allowed-uris value

          Set the allowed-uris setting.

       •  --allowed-users value

          Set the allowed-users setting.

       •  --auto-allocate-uids

          Enable the auto-allocate-uids setting.

       •  --auto-optimise-store

          Enable the auto-optimise-store setting.

       •  --bash-prompt value

          Set the bash-prompt setting.

       •  --bash-prompt-prefix value

          Set the bash-prompt-prefix setting.

       •  --bash-prompt-suffix value

          Set the bash-prompt-suffix setting.

       •  --build-hook value

          Set the build-hook setting.

       •  --build-poll-interval value

          Set the build-poll-interval setting.

       •  --build-users-group value

          Set the build-users-group setting.

       •  --builders value

          Set the builders setting.

       •  --builders-use-substitutes

          Enable the builders-use-substitutes setting.

       •  --commit-lockfile-summary value

          Set the commit-lockfile-summary setting.

       •  --compress-build-log

          Enable the compress-build-log setting.

       •  --connect-timeout value

          Set the connect-timeout setting.

       •  --cores value

          Set the cores setting.

       •  --diff-hook value

          Set the diff-hook setting.

       •  --download-attempts value

          Set the download-attempts setting.

       •  --download-speed value

          Set the download-speed setting.

       •  --eval-cache

          Enable the eval-cache setting.

       •  --experimental-features value

          Set the experimental-features setting.

       •  --extra-access-tokens value

          Append to the access-tokens setting.

       •  --extra-allowed-impure-host-deps value

          Append to the allowed-impure-host-deps setting.

       •  --extra-allowed-uris value

          Append to the allowed-uris setting.

       •  --extra-allowed-users value

          Append to the allowed-users setting.

       •  --extra-build-hook value

          Append to the build-hook setting.

       •  --extra-experimental-features value

          Append to the experimental-features setting.

       •  --extra-extra-platforms value

          Append to the extra-platforms setting.

       •  --extra-hashed-mirrors value

          Append to the hashed-mirrors setting.

       •  --extra-ignored-acls value

          Append to the ignored-acls setting.

       •  --extra-nix-path value

          Append to the nix-path setting.

       •  --extra-platforms value

          Set the extra-platforms setting.

       •  --extra-plugin-files value

          Append to the plugin-files setting.

       •  --extra-sandbox-paths value

          Append to the sandbox-paths setting.

       •  --extra-secret-key-files value

          Append to the secret-key-files setting.

       •  --extra-substituters value

          Append to the substituters setting.

       •  --extra-system-features value

          Append to the system-features setting.

       •  --extra-trusted-public-keys value

          Append to the trusted-public-keys setting.

       •  --extra-trusted-substituters value

          Append to the trusted-substituters setting.

       •  --extra-trusted-users value

          Append to the trusted-users setting.

       •  --fallback

          Enable the fallback setting.

       •  --filter-syscalls

          Enable the filter-syscalls setting.

       •  --flake-registry value

          Set the flake-registry setting.

       •  --fsync-metadata

          Enable the fsync-metadata setting.

       •  --gc-reserved-space value

          Set the gc-reserved-space setting.

       •  --hashed-mirrors value

          Set the hashed-mirrors setting.

       •  --http-connections value

          Set the http-connections setting.

       •  --http2

          Enable the http2 setting.

       •  --id-count value

          Set the id-count setting.

       •  --ignore-try

          Enable the ignore-try setting.

       •  --ignored-acls value

          Set 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 value

          Set the log-lines setting.

       •  --max-build-log-size value

          Set the max-build-log-size setting.

       •  --max-free value

          Set the max-free setting.

       •  --max-jobs value

          Set the max-jobs setting.

       •  --max-silent-time value

          Set the max-silent-time setting.

       •  --max-substitution-jobs value

          Set the max-substitution-jobs setting.

       •  --min-free value

          Set the min-free setting.

       •  --min-free-check-interval value

          Set the min-free-check-interval setting.

       •  --nar-buffer-size value

          Set the nar-buffer-size setting.

       •  --narinfo-cache-negative-ttl value

          Set the narinfo-cache-negative-ttl setting.

       •  --narinfo-cache-positive-ttl value

          Set the narinfo-cache-positive-ttl setting.

       •  --netrc-file value

          Set the netrc-file setting.

       •  --nix-path value

          Set 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-drop-supplementary-groups

          Disable the require-drop-supplementary-groups 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-use-xdg-base-directories

          Disable the use-xdg-base-directories setting.

       •  --no-warn-dirty

          Disable the warn-dirty setting.

       •  --plugin-files value

          Set the plugin-files setting.

       •  --post-build-hook value

          Set the post-build-hook setting.

       •  --pre-build-hook value

          Set 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-drop-supplementary-groups

          Enable the require-drop-supplementary-groups setting.

       •  --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 value

          Set the sandbox-build-dir setting.

       •  --sandbox-dev-shm-size value

          Set the sandbox-dev-shm-size setting.

       •  --sandbox-fallback

          Enable the sandbox-fallback setting.

       •  --sandbox-paths value

          Set the sandbox-paths setting.

       •  --secret-key-files value

          Set the secret-key-files setting.

       •  --show-trace

          Enable the show-trace setting.

       •  --ssl-cert-file value

          Set the ssl-cert-file setting.

       •  --stalled-download-timeout value

          Set the stalled-download-timeout setting.

       •  --start-id value

          Set the start-id setting.

       •  --store value

          Set the store setting.

       •  --substitute

          Enable the substitute setting.

       •  --substituters value

          Set the substituters setting.

       •  --sync-before-registering

          Enable the sync-before-registering setting.

       •  --system value

          Set the system setting.

       •  --system-features value

          Set the system-features setting.

       •  --tarball-ttl value

          Set the tarball-ttl setting.

       •  --timeout value

          Set the timeout setting.

       •  --trace-function-calls

          Enable the trace-function-calls setting.

       •  --trace-verbose

          Enable the trace-verbose setting.

       •  --trusted-public-keys value

          Set the trusted-public-keys setting.

       •  --trusted-substituters value

          Set the trusted-substituters setting.

       •  --trusted-users value

          Set 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.

       •  --use-xdg-base-directories

          Enable the use-xdg-base-directories setting.

       •  --user-agent-suffix value

          Set the user-agent-suffix setting.

       •  --warn-dirty

          Enable the warn-dirty setting.

                                                                                                   nix3-shell(1)

Synopsis

       nix shell [option…] installables

See Also