Nix/doc/manual/src/command-ref/nix-env.md

91 lines
2.9 KiB
Markdown
Raw Normal View History

2020-07-24 12:56:19 +02:00
# Name
2020-07-23 12:58:42 +02:00
2020-07-24 12:56:19 +02:00
`nix-env` - manipulate or query Nix user environments
2020-07-23 12:58:42 +02:00
2020-07-24 12:56:19 +02:00
# Synopsis
2020-07-23 12:58:42 +02:00
`nix-env` *operation* [*options*] [*arguments…*]
2020-07-24 12:56:19 +02:00
[`--option` *name* *value*]
[`--arg` *name* *value*]
[`--argstr` *name* *value*]
[{`--file` | `-f`} *path*]
[{`--profile` | `-p`} *path*]
2020-07-24 12:56:19 +02:00
[`--system-filter` *system*]
[`--dry-run`]
2020-07-23 12:58:42 +02:00
# 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`](./nix-env/install.md)
- [`--upgrade`](./nix-env/upgrade.md)
- [`--uninstall`](./nix-env/uninstall.md)
- [`--set`](./nix-env/set.md)
- [`--set-flag`](./nix-env/set-flag.md)
- [`--query`](./nix-env/query.md)
- [`--switch-profile`](./nix-env/switch-profile.md)
- [`--list-generations`](./nix-env/list-generations.md)
- [`--delete-generations`](./nix-env/delete-generations.md)
- [`--switch-generation`](./nix-env/switch-generation.md)
- [`--rollback`](./nix-env/rollback.md)
These pages can be viewed offline:
- `man nix-env-<operation>`.
Example: `man nix-env-install`
- `nix-env --help --<operation>`
Example: `nix-env --help --install`
2020-07-23 12:58:42 +02:00
# Selectors
Several commands, such as `nix-env --query ` and `nix-env --install `, take a list of
2020-07-23 12:58:42 +02:00
arguments that specify the packages on which to operate. These are
extended regular expressions that must match the entire name of the
package. (For details on regular expressions, see **regex**(7).) The match is
2020-07-23 12:58:42 +02:00
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. Here are some examples:
- `firefox`\
2020-07-23 12:58:42 +02:00
Matches the package name `firefox` and any version.
- `firefox-32.0`\
2020-07-23 12:58:42 +02:00
Matches the package name `firefox` and version `32.0`.
- `gtk\\+`\
2020-07-23 12:58:42 +02:00
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.
- `.\*`\
2020-07-23 12:58:42 +02:00
Matches any package name. This is the default for most commands.
- `'.*zip.*'`\
2020-07-23 12:58:42 +02:00
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).*'`\
2020-07-23 12:58:42 +02:00
Matches any package name containing the strings `firefox` or
`chromium`.
# Files
2023-05-15 15:26:14 +02:00
`nix-env` operates on the following files.
2023-02-17 18:57:15 +01:00
{{#include ./files/default-nix-expression.md}}
{{#include ./files/profiles.md}}