aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/manual/src/SUMMARY.md.in3
-rw-r--r--doc/manual/src/design/design.md39
-rw-r--r--doc/manual/src/design/overview.md20
-rw-r--r--doc/manual/src/design/store/store.md2
4 files changed, 39 insertions, 25 deletions
diff --git a/doc/manual/src/SUMMARY.md.in b/doc/manual/src/SUMMARY.md.in
index 9cde44a0d..ec457126a 100644
--- a/doc/manual/src/SUMMARY.md.in
+++ b/doc/manual/src/SUMMARY.md.in
@@ -16,8 +16,7 @@
- [Environment Variables](installation/env-variables.md)
- [Upgrading Nix](installation/upgrading.md)
- [Design and Data Model](design/design.md)
- - [Overview](design/overview.md)
- - [The Store Layer](design/store/store.md)
+ - [Store](design/store/store.md)
- [Store Objects](design/store/objects.md)
- [Store Paths](design/store/paths.md)
- [Nix Archives](design/store/nar.md)
diff --git a/doc/manual/src/design/design.md b/doc/manual/src/design/design.md
index f5135bc9a..960a68f41 100644
--- a/doc/manual/src/design/design.md
+++ b/doc/manual/src/design/design.md
@@ -1,6 +1,41 @@
# Design and Data Model
-Most of the manual is about how to use Nix.
This chapter is about the technical principles behind Nix.
-It describes each architectural layer and its components in its own section, starting at the bottom with the store layer, then working its way up to the user-facing components described in the rest of the manual.
+## Architecture
+
+Nix consists of hierarchical [layers](https://en.m.wikipedia.org/wiki/Multitier_architecture#Layers).
+
+```
+ [ commmand line interface ]
+ |
+ | evaluates
+ V
+ [ configuration language ]
+ |
+ | evaluates to
+ |
+ reference V build
+[ build inputs ] --> [ build plans ] --> [ build results ]
+ \ | /
+ \ | persisted to /
+ \ V /
+ [ store ]
+```
+
+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 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 self-contained *build steps*, used to derive *build results* from referenced *build inputs*.
+
+::: {.note}
+The Nix language itself does not have a notion of *packages* or *configurations*.
+As far as we are concerned here, the inputs and results of a derivation are just data.
+In practice this amounts to a set of files in a file system.
+:::
+
+The command line and Nix language are what users interact with most.
+
+Underlying everything is the *Nix store*, a mechanism to keep track of build plans, data, and references between them.
+It can also execute *build instructions*, captured in the build plans, to produce new data.
+
diff --git a/doc/manual/src/design/overview.md b/doc/manual/src/design/overview.md
deleted file mode 100644
index b5f8b6aad..000000000
--- a/doc/manual/src/design/overview.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# Overview
-
-Nix consists of layers that operate fairly independently.
-
-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 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 self-contained *build steps*, used to derive *build results* from referenced *build inputs*.
-
-::: {.note}
-The Nix language itself does not have a notion of *packages* or *configurations*.
-As far as we are concerned here, the inputs and results of a derivation are just data.
-In practice this amounts to a set of files in a file system.
-:::
-
-The command line and Nix language are what users interact with most.
-
-Underlying everything is the *Nix store*, a mechanism to keep track of build plans, data, and references between them.
-It can also execute *build instructions*, captured in the build plans, to produce new data.
-
diff --git a/doc/manual/src/design/store/store.md b/doc/manual/src/design/store/store.md
index 458c1e2b8..d4add52f5 100644
--- a/doc/manual/src/design/store/store.md
+++ b/doc/manual/src/design/store/store.md
@@ -1,4 +1,4 @@
-# Nix Store
+# Store
A Nix store is a collection of *store objects* referred to by *store paths*.
Every store also has a "store directory path", which is a path prefix used for various purposes.