Nix

Nix is a project (and a language) closely related to the NixOS linux distribution.

It started as an academic research by Eelco Doljstra whose PhD Thesis is still a reference for concepts and components of the system.

It’s taking me a while to get my head around the system and I am also interested in the related project Guix that is led by Ludovic Courtes (Inria).

Nix pills

A great source of information and examples are the nix pills [1] that explain the basics and guide through producing derivations and nix expressions to build software.

Nixos FAQ

https://nixos.wiki/wiki/FAQ

Notice the ‘wiki’ top level domain!

Nix Manual

nix package manager guide:

https://nixos.org/nix/manual

Nixpkgs Users and Contributors Guide:

https://nixos.org/nixpkgs/manual

Nix vocabulary

Most of the concepts are described on the Nix expression language wiki page.

Derivation:

The first step of a build based on nix expressions.

Attribute:

This is a key from an associative data structure. For example { key1 = “value1” ; key2 = “value2” } has two “attributes”, the keys key1 and key2. See “sets” in [1]

Environment:

This is my terminology and it may be wrong. This is a ‘generation’ of the list one obtains with nix-env –list-generations

Store:

The place where components are stored in the local storage. This is currently /nix/store

Channel:

I don’t know yet.

Generations:

Variations of the environment. These are modified when one performs installations and removals. Pill #11 (section 11.4) shows a method to remove generations to help the garbage collector.

Nix Discourse

The site is https://discourse.nixos.org/.

Footnotes