Skip to content

Commit

Permalink
reword overview with clear terminology
Browse files Browse the repository at this point in the history
trying to capture alternative terms in one go here, mirroring everyday
use:

derivation - build plan
realise - execute build

there will be more of that sort.
  • Loading branch information
fricklerhandwerk committed Apr 21, 2022
1 parent 11b1e66 commit 07c64fa
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions doc/manual/src/design/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@

Nix consists of layers that operate fairly independently.

At the top is the *command line interface*.
At the top is the *command line interface*, translating from invocations of Nix executables to interactions with the underlying layers.

Below that is the Nix *expression language*, in which packages and configurations are written.
Below that is the *Nix language*, a [purely functional programming](https://en.m.wikipedia.org/wiki/Purely_functional_programming) language. It is used to compose expressions which ultimately evaluate to *derivations* — self-contained *build plans* to derive new data from referenced input data.

The command line and expression language are what users interact with most.
::: {.note}
The Nix language itself does not have a notion of *packages* or *configurations.* As far as we are concerned here, the result of a derivation is just data. In practice this amounts to a set of files in a file system.
:::

Below that is the *store layer*, Nix' machinery to represent tracked files, dependencies, and fully elaborated build plans.
It is also used for executing those build plans.
The store layer may not be as visible, but this is the heart of Nix.
The command line and Nix language are what users interact with most.

Underlying everything is the *Nix store*, a mechanism to keep track of derivations, data, and references between them. It can also *realise derivations*, that is, *execute build instructions* to produce new data. It uses the file system as a persistence layer, and a database to keep track of references.

This chapter describes Nix starting at the bottom with the store layer, working its way up to the user-facing components described in the rest of the manual.

This chapter describes Nix starting with that bottom store layer, then working its way up until it reaches the more user-facing interfaces described in the rest of the manual."

0 comments on commit 07c64fa

Please sign in to comment.