Jump to content

Terms and Definitions in Nix Project

From Official NixOS Wiki
(Redirected from Nix Generation)
This page contains changes which are not marked for translation.

If you come across a term or word you don't know, add it here.

Term Context Meaning Related Links
User Environment
Nix A set of "active" applications. These applications usually exist in the Nix store. A single Nix user may have multiple user environments. Profiles and generations are closely related.

Nix Manual - Basic Package Management chapter
Nix Manual - Profiles chapter
Nix Manual - nix-env

(User) Profile Nix Profiles simplify managing and switching between user environments, and thus control which applications and system configurations are in active use. Generally, a profile is a link to a generation, and the corresponding profiles folder collects a list of generations. A standalone Nix installation (i.e. on a Linux distro that is not NixOS) operates mainly on user profiles. In NixOS, there is also a system profile that manages the system-wide configuration (e.g. /etc, the kernel, initrd, systemd). Other tools like Home Manager may also have their own profiles. By default, a user's active profile is stored at ~/.nix-profile:
$ ls -l ~/.nix-profile
lrwxrwxrwx ... /home/username/.nix-profile ->
/nix/var/nix/profiles/per-user/username/profile
Nix Manual: Profiles
Nix Pills - The first profile
Generation
Nix An instance of a user environment. When a user makes any change to their environment, such as installing or removing packages, a new generation of the environment is created instead of modifying the environment in-place. This ensures that updates are atomic and the user can easily roll-back to any previous generation if something goes wrong. The current generation is a user's currently active user profile. Nix Manual: Profiles
Derivation Nix A Nix expression which describes a build action. Derivations are analogous to package definitions in other package managers. High-level derivations, such as the ones describing packages in Nixpkgs, get evaluated into low-level derivations (called store derivations), for instance by using the nix-instantiate command. nix-store --realise runs the build commands described in the low-level derivation, producing one or more output paths. nix-build is a user-friendly wrapper for the previous two commands. Nix Manual: Glossary - Derivation
Nix Manual: Derivation
Output path Nix A store path produced by a derivation. These are generally analogous to built packages, or pieces of them.
$ ls -ld /nix/store/*-firefox-9*/
dr-xr-xr-x ... /nix/store/v4b8...3d0w-firefox-92.0/
Nix Manual: Derivation
rec { } Nix expressions The { } block contains "mutually recursive" attributes, which means they can refer to each other. Nix Manual: Syntax and semantics: Recursive sets
expression evaluator Nix The part of the Nix program which reads and evaluates a Nix expression. Nix Manual: Common Options --arg
Nix Manual: Built-in Functions
stdenv Nix expressions An attribute which contains things expected in the most basic Unix environment. (e.g. Bash shell, gcc, cp, tar, grep, etc.) all-packages.nix: stdenv =]
config.nix or nixpkgs-config.nix NixOS Wiki A Nix expression retrieved by and applied to the all-packages.nix Nix expression. This file enables an end-user to customize the Nix expressions contained in the community-owned NixPkgs list or to define entirely new Nix expressions to use with Nix commands. This file's path can be overridden by the NIXPKGS_CONFIG environment variable. all-packages.nix: config

NixPkgs Release Notes

attribute path nix-env takes this if you pass the `-A` flag [1] an unambiguous identifier for a package
symbolic package name [2] This string represents what you commonly think of as a package. There can be multiple packages with the symbolic name "hello".
selector this term is used in nix-env error messages [3], it seems to be actually a DrvName struct [4] (a derivation name) see "symbolic package name"
selection path nix-shell error message [5] see "attribute path"[6]
derivation name manual[7], source code [8] see "symbolic package name"
package name IRC[9] see "symbolic package name"
attribute selection path source[10] see "attribute path"