Terms and Definitions in Nix Project

From NixOS Wiki
Revision as of 02:48, 16 October 2021 by Nix (talk | contribs) (be more explicit about what a profile is)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Terms and Definitions

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. This is an important concept further explored in User Environment. 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 used). Most generally, a profile is a link to a generation, and there's a profiles (note the s) folder which collects types of profiles together so that they form lists of generations. In standalone Nix (e.g. on a different Linux distro), its primary use is user profiles. In NixOS, there is also the system profile, which manages system-wide configuration (e.g. /etc, the kernel, initrd, systemd). Tools like Home Manager also have their own profile (which would also be per-user). The user's active profile is defined in ~/.nix-profile, and is what all nix-env commands would operate on by default.
❯ ls -l ~/.nix-profile
lrwxrwxrwx ... /home/username/.nix-profile ->
Nix Manual: Profiles
Nix Pills - The first profile
Nix A revision of a user environment, newly created every time the system is updated (with old ones being preserved until manually removed). Technically, each generation is simply a link to a specific user environment in the Nix store. This term connotes the cloning and modification of an existing user environment. Nix's environment rollback facilities rely on Generations. The current generation is a user's currently selected user environment, and is generally selected via the active profile (which is just a symlink, normally in /nix/var/nix/profiles/). Nix Manual: Profiles
Derivation Nix A Nix expression which describes a build action. High-level derivations (like the ones describing packages in Nixpkgs), get evaluated into low-level derivations (called store derivations — because they wind up in the Nix store). nix-instantiate is the command which translates high-level derivations into low-level ones. nix-store --realise can then check and finish their build for the nix store, producing output path(s). nix-build is a user-friendly wrapper for the previous commands. Derivations are analogous to package definitions in other package managers. 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. Composing the Hello Package
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"