DOSSIER 07 / 5 ARTICLES
The Nix language and build model
Understand how configuration works through attribute sets, function scope, module merging, and derivations.
Start with the first articleFollow the question further.
Nix is a functional expression language. Begin with the NixOS working model to identify inputs and outputs, then read code through basic types, scope, recursive attribute sets, and merging. Finally, trace how expressions produce build descriptions and store outputs.
- 01
Understand why build outputs, source configuration, and writable data have three separate histories.
Nix and NixOS: storage, rollback, and declarative thinking
Understand the NixOS system model through the store, profiles, and imperative tools.
Read article - 02
Read minimal expressions through space-separated lists, semicolons, and attribute access.
Nix syntax: attribute sets, lists, and built-in functions
Learn common data types, attribute access, and the basics of writing configuration expressions.
Read article - 03
Identify whether each variable comes from let, a function parameter, or with.
Nix functions and scope
Identify where each variable comes from in let, inherit, with, and function parameters.
Read article - 04
Assess // overrides separately from type-based module-option merging.
Nix attribute sets: recursion and merging
Distinguish shallow merging in the language from the merging rules for NixOS module options.
Read article - 05
Separate evaluation, cache substitution, and local builds; not every store hash is content-addressed.
Derivations: from expressions to build outputs
Trace the relationship between evaluation, building or downloading substitutes, and store outputs.
Read article