Provided by: nix-bin_2.26.3+dfsg-1ubuntu4_amd64 

Name
nix-env - manipulate or query Nix user environments
Synopsis
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]
Description
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
• --rollback
These pages can be viewed offline:
• man nix-env-<operation>.
Example: man nix-env-install
• nix-env --help --<operation>
Example: nix-env --help --install
Package sources
nix-env can obtain packages from multiple sources:
• An attribute set of derivations from:
• The default Nix expression (by default)
• A Nix file, specified via --file
• A profile, specified via --from-profile
• A Nix expression that is a function which takes default expression as argument, specified via
--from-expression
• A store path
Selectors
Several 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-env parses the symbolic derivation name apache-httpd-2.0.48 as:
{
"name": "apache-httpd",
"version": "2.0.48"
}
Example
nix-env parses the symbolic derivation name firefox.* as:
{
"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:
• firefox
Matches the package name firefox and any version.
• firefox-32.0
Matches the package name firefox and version 32.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 firefox or chromium.
Files
nix-env operates on the following files.
{{#include ./files/default-nix-expression.md}}
{{#include ./files/profiles.md}}
nix-env(1)