doc/manual/source/command-ref/nix-env.md
nix-env - manipulate or query Nix user environments
nix-env operation [options] [arguments…]
[--option name value]
[--arg name value]
[--argstr name value]
[{--file | -f} path]
[{--profile | -p} path]
[--system-filter system]
[--dry-run]
The command nix-env is used to manipulate Nix user environments. User
environments are sets of software packages available to a user at some
point in time. In other words, they are a synthesised view of the
programs available in the Nix store. There may be many user
environments: different users can have different environments, and
individual users can switch between different environments.
nix-env takes exactly one operation flag which indicates the
subcommand to be performed. The following operations are available:
--install--upgrade--uninstall--set--set-flag--query--switch-profile--list-generations--delete-generations--switch-generation--rollbackThese pages can be viewed offline:
man nix-env-<operation>.
Example: man nix-env-install
nix-env --help --<operation>
Example: nix-env --help --install
nix-env can obtain packages from multiple sources:
--file--from-profile--from-expressionSeveral operations, such as nix-env --query and nix-env --install, take a list of arguments that specify the packages on which to operate.
Packages are identified based on a name part and a version part of a symbolic derivation name:
name: Everything up to but not including the first dash (-) that is not followed by a letter.version: The rest, excluding the separating dash.Example
nix-envparses the symbolic derivation nameapache-httpd-2.0.48as:json{ "name": "apache-httpd", "version": "2.0.48" }
Example
nix-envparses the symbolic derivation namefirefox.*as:json{ "name": "firefox.*", "version": "" }
The name parts of the arguments to nix-env are treated as extended regular expressions and matched against the name parts of derivation names in the package source.
The match is case-sensitive.
The regular expression can optionally be followed by a dash (-) and a version number; if omitted, any version of the package will match.
For details on regular expressions, see regex(7).
Example
Common patterns for finding package names with
nix-env:
firefoxMatches the package name
firefoxand any version.
firefox-32.0Matches the package name
firefoxand version32.0.
gtk\\+Matches the package name
gtk+. The+character must be escaped using a backslash (\) to prevent it from being interpreted as a quantifier, and the backslash must be escaped in turn with another backslash to ensure that the shell passes it on.
.\*Matches any package name. This is the default for most commands.
'.*zip.*'Matches any package name containing the string
zip. Note the dots:'*zip*'does not work, because in a regular expression, the character*is interpreted as a quantifier.
'.*(firefox|chromium).*'Matches any package name containing the strings
firefoxorchromium.
nix-env operates on the following files.
{{#include ./files/default-nix-expression.md}}
{{#include ./files/profiles.md}}