Ad-Hoc Package ManagementWith the command nix-env, you can install and
uninstall packages from the command line. For instance, to install
Mozilla Thunderbird:
$ nix-env -iA nixos.pkgs.thunderbird
If you invoke this as root, the package is installed in the Nix
profile /nix/var/nix/profiles/default and visible
to all users of the system; otherwise, the package ends up in
/nix/var/nix/profiles/per-user/username/profile
and is not visible to other users. The flag
specifies the package by its attribute name; without it, the package
is installed by matching against its package name
(e.g. thunderbird). The latter is slower because
it requires matching against all available Nix packages, and is
ambiguous if there are multiple matching packages.Packages come from the NixOS channel. You typically upgrade a
package by updating to the latest version of the NixOS channel:
$ nix-channel --update nixos
and then running nix-env -i again. Other packages
in the profile are not affected; this is the
crucial difference with the declarative style of package management,
where running nixos-rebuild switch causes all
packages to be updated to their current versions in the NixOS channel.
You can however upgrade all packages for which there is a newer
version by doing:
$ nix-env -u '*'
A package can be uninstalled using the
flag:
$ nix-env -e thunderbird
Finally, you can roll back an undesirable
nix-env action:
$ nix-env --rollback
nix-env has many more flags. For details,
see the
nix-env1
manpage or the Nix manual.