-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Document what Nix *is* #6420
Document what Nix *is* #6420
Commits on Aug 4, 2022
-
WIP: Document the design of Nix
The current docs are all "how to do things" and no "what is Nix" or "why are things the way they are". I see lots of misconception on the wider internet, and I also think we would benefit from a "living document" to answer some questions people currently turn to the thesis for. I think a new section of the manual can address all these issues.
Configuration menu - View commit details
-
Copy full SHA for 523359d - Browse repository at this point
Copy the full SHA 523359dView commit details -
Configuration menu - View commit details
-
Copy full SHA for a2b3160 - Browse repository at this point
Copy the full SHA a2b3160View commit details -
Configuration menu - View commit details
-
Copy full SHA for e64633f - Browse repository at this point
Copy the full SHA e64633fView commit details -
Configuration menu - View commit details
-
Copy full SHA for a210504 - Browse repository at this point
Copy the full SHA a210504View commit details -
Move the bits on relocating store entires to the end
They are too advanced for up front.
Configuration menu - View commit details
-
Copy full SHA for e3a0209 - Browse repository at this point
Copy the full SHA e3a0209View commit details -
Configuration menu - View commit details
-
Copy full SHA for 678d75b - Browse repository at this point
Copy the full SHA 678d75bView commit details -
Configuration menu - View commit details
-
Copy full SHA for f5386d7 - Browse repository at this point
Copy the full SHA f5386d7View commit details -
Update doc/manual/src/design/overview.md
Co-authored-by: Valentin Gagarin <valentin@fricklerhandwerk.de>
Configuration menu - View commit details
-
Copy full SHA for a04340f - Browse repository at this point
Copy the full SHA a04340fView commit details -
Update doc/manual/src/design/overview.md
Co-authored-by: Valentin Gagarin <valentin@fricklerhandwerk.de>
Configuration menu - View commit details
-
Copy full SHA for 75c5191 - Browse repository at this point
Copy the full SHA 75c5191View commit details -
Update doc/manual/src/design/overview.md
Co-authored-by: Valentin Gagarin <valentin@fricklerhandwerk.de>
Configuration menu - View commit details
-
Copy full SHA for cdb0bf3 - Browse repository at this point
Copy the full SHA cdb0bf3View commit details -
Update doc/manual/src/design/store/drvs/drvs.md
Co-authored-by: Matthieu Coudron <teto@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for e308602 - Browse repository at this point
Copy the full SHA e308602View commit details -
doc: Store entry -> store object
This matches the terminology in Eelco's thesis.
Configuration menu - View commit details
-
Copy full SHA for 4e2d5ae - Browse repository at this point
Copy the full SHA 4e2d5aeView commit details -
Configuration menu - View commit details
-
Copy full SHA for 838ba26 - Browse repository at this point
Copy the full SHA 838ba26View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1bbad62 - Browse repository at this point
Copy the full SHA 1bbad62View commit details -
In particular, Nix is *not* like Git, so that needs to be fixed.
Configuration menu - View commit details
-
Copy full SHA for 5f4d2ac - Browse repository at this point
Copy the full SHA 5f4d2acView commit details -
Configuration menu - View commit details
-
Copy full SHA for b4df351 - Browse repository at this point
Copy the full SHA b4df351View commit details -
Configuration menu - View commit details
-
Copy full SHA for 55b437b - Browse repository at this point
Copy the full SHA 55b437bView commit details -
Configuration menu - View commit details
-
Copy full SHA for b98dc3b - Browse repository at this point
Copy the full SHA b98dc3bView commit details -
Include abstract syntax based on the thesis for FSOs
See https://edolstra.github.io/pubs/phd-thesis.pdf, page 91.
Configuration menu - View commit details
-
Copy full SHA for e4eea5e - Browse repository at this point
Copy the full SHA e4eea5eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4e4bbd9 - Browse repository at this point
Copy the full SHA 4e4bbd9View commit details -
Configuration menu - View commit details
-
Copy full SHA for c86c1ec - Browse repository at this point
Copy the full SHA c86c1ecView commit details -
Add draft "Rosetta stone" by @fricklerhandwerk and stub commentary
The idea and most of the execution are @fricklerhandwerk's. I changed a few things best I could based on @edolstra's corrections, and a Bazel glossary. Valentin Gagarin <valentin@fricklerhandwerk.de>
Configuration menu - View commit details
-
Copy full SHA for 0737094 - Browse repository at this point
Copy the full SHA 0737094View commit details -
reword overview with clear terminology
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.
Configuration menu - View commit details
-
Copy full SHA for 0eae4bf - Browse repository at this point
Copy the full SHA 0eae4bfView commit details -
only use generic build system terminology
we will use a translation table to introduce nix-specific terms
Configuration menu - View commit details
-
Copy full SHA for 327ccd3 - Browse repository at this point
Copy the full SHA 327ccd3View commit details -
Co-authored-by: John Ericson <git@JohnEricson.me>
Configuration menu - View commit details
-
Copy full SHA for 804e8bd - Browse repository at this point
Copy the full SHA 804e8bdView commit details -
correctly use comma for nesting
Co-authored-by: John Ericson <git@JohnEricson.me>
Configuration menu - View commit details
-
Copy full SHA for 23ee0b2 - Browse repository at this point
Copy the full SHA 23ee0b2View commit details -
do not mention implementation details
Co-authored-by: John Ericson <git@JohnEricson.me>
Configuration menu - View commit details
-
Copy full SHA for 51e6bed - Browse repository at this point
Copy the full SHA 51e6bedView commit details -
Apply suggestions from code review
Co-authored-by: Valentin Gagarin <valentin@fricklerhandwerk.de>
Configuration menu - View commit details
-
Copy full SHA for 89a7c95 - Browse repository at this point
Copy the full SHA 89a7c95View commit details -
remove sentence for chapter transition
idea: sections could be read in different orders by linking them in different ways (e.g. depth-first or breadth-first). adding hard-coded transitions makes that confusing.
Configuration menu - View commit details
-
Copy full SHA for b387d80 - Browse repository at this point
Copy the full SHA b387d80View commit details -
there should be a meta section for each chapter to give motivation of the presented structure. the structure itself is visible from the table of contents.
Configuration menu - View commit details
-
Copy full SHA for 34ea74c - Browse repository at this point
Copy the full SHA 34ea74cView commit details -
remove separate meta-section, add architecture diagram
the diagram is a first approximation and only covers that same section. of course there is much more going on, and other features should at some point also be illustrated. we also have to think about presentation format and technicalities behind it. the manual has to render to `man`, but we may want something more refined for web view.
Configuration menu - View commit details
-
Copy full SHA for 7598126 - Browse repository at this point
Copy the full SHA 7598126View commit details -
Configuration menu - View commit details
-
Copy full SHA for d300337 - Browse repository at this point
Copy the full SHA d300337View commit details -
design -> architecture, add motivation
following ideas found in Architecture of Gazelle[1] [1]: https://github.com/bazelbuild/bazel-gazelle/blob/56d35f8db086bb65ef876f96f7baa7b71516daf8/Design.rst
Configuration menu - View commit details
-
Copy full SHA for 39f0117 - Browse repository at this point
Copy the full SHA 39f0117View commit details -
Configuration menu - View commit details
-
Copy full SHA for c8c1b70 - Browse repository at this point
Copy the full SHA c8c1b70View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7b5c00f - Browse repository at this point
Copy the full SHA 7b5c00fView commit details -
Co-authored-by: John Ericson <git@JohnEricson.me>
Configuration menu - View commit details
-
Copy full SHA for 070c854 - Browse repository at this point
Copy the full SHA 070c854View commit details -
associated operations are not collected
Co-authored-by: John Ericson <git@JohnEricson.me>
Configuration menu - View commit details
-
Copy full SHA for 5f96a0b - Browse repository at this point
Copy the full SHA 5f96a0bView commit details -
reword introduction to rosetta stone, add links
attempt to explain used and documented terminology, as well as how the declarative programming paradigm relates to building software. in the future one could highlight encouraged terms to shape future material into higher consistency.
Configuration menu - View commit details
-
Copy full SHA for 610ddf4 - Browse repository at this point
Copy the full SHA 610ddf4View commit details -
Configuration menu - View commit details
-
Copy full SHA for ca5ebf6 - Browse repository at this point
Copy the full SHA ca5ebf6View commit details -
Configuration menu - View commit details
-
Copy full SHA for 40efe5b - Browse repository at this point
Copy the full SHA 40efe5bView commit details -
Configuration menu - View commit details
-
Copy full SHA for a145007 - Browse repository at this point
Copy the full SHA a145007View commit details -
move git comparison to related work
it should be pulled out of the branch before we go for merging
Configuration menu - View commit details
-
Copy full SHA for e5e4859 - Browse repository at this point
Copy the full SHA e5e4859View commit details -
- use singular for the "class" - more consistency in type definition - minor fixes in wording
Configuration menu - View commit details
-
Copy full SHA for 90fc5b4 - Browse repository at this point
Copy the full SHA 90fc5b4View commit details -
use file Contents instead of Data, as that flows more naturally in the prose. simplify explanation of the idea behind scanning for store paths remove references to unfinished sections.
Configuration menu - View commit details
-
Copy full SHA for fb2ec7e - Browse repository at this point
Copy the full SHA fb2ec7eView commit details -
convention: describe every data type in prose, and illustrate with a class diagram, and a textual representation of an abstract data type. right now we save ourselves the trouble of doing class diagrams, we can add them later. but they are important.
Configuration menu - View commit details
-
Copy full SHA for 5fda995 - Browse repository at this point
Copy the full SHA 5fda995View commit details -
Configuration menu - View commit details
-
Copy full SHA for 07d490f - Browse repository at this point
Copy the full SHA 07d490fView commit details -
Configuration menu - View commit details
-
Copy full SHA for e90586c - Browse repository at this point
Copy the full SHA e90586cView commit details -
Configuration menu - View commit details
-
Copy full SHA for b5ca3d1 - Browse repository at this point
Copy the full SHA b5ca3d1View commit details -
Configuration menu - View commit details
-
Copy full SHA for b01bb65 - Browse repository at this point
Copy the full SHA b01bb65View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3d8f2f5 - Browse repository at this point
Copy the full SHA 3d8f2f5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1ba6d8f - Browse repository at this point
Copy the full SHA 1ba6d8fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 96876b1 - Browse repository at this point
Copy the full SHA 96876b1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7cec9ee - Browse repository at this point
Copy the full SHA 7cec9eeView commit details -
Configuration menu - View commit details
-
Copy full SHA for b18852e - Browse repository at this point
Copy the full SHA b18852eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 3bd125e - Browse repository at this point
Copy the full SHA 3bd125eView commit details -
Configuration menu - View commit details
-
Copy full SHA for ad8c2ed - Browse repository at this point
Copy the full SHA ad8c2edView commit details -
Configuration menu - View commit details
-
Copy full SHA for d3effd0 - Browse repository at this point
Copy the full SHA d3effd0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 87523f0 - Browse repository at this point
Copy the full SHA 87523f0View commit details -
"step" sounds atomic, while "rule" hints at internal structure, which in our case consists of mapping inputs to outputs using build instructions.
Configuration menu - View commit details
-
Copy full SHA for 902638c - Browse repository at this point
Copy the full SHA 902638cView commit details -
closer to "build systems a la carte", satisfies all other complaints
Configuration menu - View commit details
-
Copy full SHA for 2a8532f - Browse repository at this point
Copy the full SHA 2a8532fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 689b32a - Browse repository at this point
Copy the full SHA 689b32aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 75ce324 - Browse repository at this point
Copy the full SHA 75ce324View commit details -
architecture overview: add link to Nix expression language reference
update summary title to match file contents
Configuration menu - View commit details
-
Copy full SHA for 68d2601 - Browse repository at this point
Copy the full SHA 68d2601View commit details -
Configuration menu - View commit details
-
Copy full SHA for ef81276 - Browse repository at this point
Copy the full SHA ef81276View commit details -
add link from overview to store section
the overview should only link to the three main concepts presented. the store is now fairly fleshed out. others can follow later.
Configuration menu - View commit details
-
Copy full SHA for 0e63b9b - Browse repository at this point
Copy the full SHA 0e63b9bView commit details -
Nix store does not underly literally everything
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for 25926c5 - Browse repository at this point
Copy the full SHA 25926c5View commit details -
revert to "build plan" in overview diagram
this displays correct composition again. build inputs and build results are not part of build plans in terms of data objects. also this is a much less complicated setup. this will be the first impression of architecture, and we want to get it right.
Configuration menu - View commit details
-
Copy full SHA for 2303f84 - Browse repository at this point
Copy the full SHA 2303f84View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4639b36 - Browse repository at this point
Copy the full SHA 4639b36View commit details -
revert to build plans in top-level overview
do not introduce build tasks yet, that is the next level of detail.
Configuration menu - View commit details
-
Copy full SHA for 7c3bca1 - Browse repository at this point
Copy the full SHA 7c3bca1View commit details -
while it appears a bit much for the overview, this way we set the stage for going directly into data types when describing the store, instead of first having to say what build tasks are and how they relate to build plans.
Configuration menu - View commit details
-
Copy full SHA for d5eea66 - Browse repository at this point
Copy the full SHA d5eea66View commit details -
Configuration menu - View commit details
-
Copy full SHA for b6b112b - Browse repository at this point
Copy the full SHA b6b112bView commit details -
while this may eventually introduce ugly diffs, the table will now render readably on the terminal (e.g. for `man nix` or `nix --help`) without further intervention.
Configuration menu - View commit details
-
Copy full SHA for e72a787 - Browse repository at this point
Copy the full SHA e72a787View commit details -
introduce store and store objects without file system details
this leaves open implementation details, especially about store paths and file system objects, and allows explaining them together were it is more appropriate. also leaves room to carefully introduce the key insight behind Nix: applying results from programming language theory to the operating system paradigm of files and processes.
Configuration menu - View commit details
-
Copy full SHA for 207992a - Browse repository at this point
Copy the full SHA 207992aView commit details -
Configuration menu - View commit details
-
Copy full SHA for b84f2bd - Browse repository at this point
Copy the full SHA b84f2bdView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4eb11d4 - Browse repository at this point
Copy the full SHA 4eb11d4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4adb660 - Browse repository at this point
Copy the full SHA 4adb660View commit details -
Configuration menu - View commit details
-
Copy full SHA for db8703b - Browse repository at this point
Copy the full SHA db8703bView commit details -
replace pseudo code by diagrams
change prose description to visually resemble the data structure
Configuration menu - View commit details
-
Copy full SHA for 445f753 - Browse repository at this point
Copy the full SHA 445f753View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4341849 - Browse repository at this point
Copy the full SHA 4341849View commit details -
add subsections for objects and references
group description of data instead of spreading it across the section. that should help direct skimming. as it turns out, people do not actually read any of that.
Configuration menu - View commit details
-
Copy full SHA for 843288a - Browse repository at this point
Copy the full SHA 843288aView commit details -
Configuration menu - View commit details
-
Copy full SHA for e63a768 - Browse repository at this point
Copy the full SHA e63a768View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7b7e4c6 - Browse repository at this point
Copy the full SHA 7b7e4c6View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3794618 - Browse repository at this point
Copy the full SHA 3794618View commit details -
operations diagram: store' to the right
this also looks more diverse, hopefully easier to distinguish Co-authored-by: John Ericson <John.Ericson@Obsidian.Systems>
Configuration menu - View commit details
-
Copy full SHA for 80de4a4 - Browse repository at this point
Copy the full SHA 80de4a4View commit details -
references are added according to build task
at this level of abstraction we do not really care about build instructions or what they are, and also build instructions including their arguments really amount to the build task.
Configuration menu - View commit details
-
Copy full SHA for 195aa28 - Browse repository at this point
Copy the full SHA 195aa28View commit details -
constrain garbage collection scope
garbage collection is now incremental, and may (in theory) never delete all unreferenced objects if it is slow enough.
Configuration menu - View commit details
-
Copy full SHA for 7993ba1 - Browse repository at this point
Copy the full SHA 7993ba1View commit details -
make clear that file system is for processes
Co-authored-by: John Ericson <John.Ericson@Obsidian.Systems>
Configuration menu - View commit details
-
Copy full SHA for a90fc62 - Browse repository at this point
Copy the full SHA a90fc62View commit details -
Configuration menu - View commit details
-
Copy full SHA for 19d8a5d - Browse repository at this point
Copy the full SHA 19d8a5dView commit details -
Configuration menu - View commit details
-
Copy full SHA for 93f721b - Browse repository at this point
Copy the full SHA 93f721bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 84ddfbf - Browse repository at this point
Copy the full SHA 84ddfbfView commit details -
Configuration menu - View commit details
-
Copy full SHA for f632816 - Browse repository at this point
Copy the full SHA f632816View commit details -
Configuration menu - View commit details
-
Copy full SHA for fa7ad45 - Browse repository at this point
Copy the full SHA fa7ad45View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1681f4e - Browse repository at this point
Copy the full SHA 1681f4eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9c54481 - Browse repository at this point
Copy the full SHA 9c54481View commit details -
using JSON notation is unwarranted and not explained.
Configuration menu - View commit details
-
Copy full SHA for c10dccc - Browse repository at this point
Copy the full SHA c10dcccView commit details -
clarify that we are copying between different stores. we have not introduced that notion or why it would be interesting, but for now it should be fine to keep it in context of the store directory. we could move that later to a more detailed explanation of different store types.
Configuration menu - View commit details
-
Copy full SHA for 631ca18 - Browse repository at this point
Copy the full SHA 631ca18View commit details -
simplify description of diagram
try not to be too fancy, it's just for reading the diagram out loud.
Configuration menu - View commit details
-
Copy full SHA for 7c656d9 - Browse repository at this point
Copy the full SHA 7c656d9View commit details -
store: match chapter introduction to outline
the various levels of detail should describe the same things.
Configuration menu - View commit details
-
Copy full SHA for ec43977 - Browse repository at this point
Copy the full SHA ec43977View commit details -
this should help nativate the chapter by indicating which terms should be known to understand a given concept.
Configuration menu - View commit details
-
Copy full SHA for 348432f - Browse repository at this point
Copy the full SHA 348432fView commit details -
invert arrows to/from derivation: - we need closures to form derivations - we need derivations to perform builds
Configuration menu - View commit details
-
Copy full SHA for d8b2f9f - Browse repository at this point
Copy the full SHA d8b2f9fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 475a332 - Browse repository at this point
Copy the full SHA 475a332View commit details -
concept map: put closure as it is in the chapter
this is not as compact any more, but it more closely resembles the chapter structure, and clearly shows that the closure property is the key idea on which most of Nix operates.
Configuration menu - View commit details
-
Copy full SHA for a28d687 - Browse repository at this point
Copy the full SHA a28d687View commit details -
this has the weird but nice emergent property that terms at the same height are roughly at the same level of abstraction.
Configuration menu - View commit details
-
Copy full SHA for c345345 - Browse repository at this point
Copy the full SHA c345345View commit details -
Configuration menu - View commit details
-
Copy full SHA for def80d5 - Browse repository at this point
Copy the full SHA def80d5View commit details -
Co-authored-by: Thomas <twatson52@mac.com>
Configuration menu - View commit details
-
Copy full SHA for fe4c0b8 - Browse repository at this point
Copy the full SHA fe4c0b8View commit details -
Nix itself does care a lot about what type of store object you have.
Configuration menu - View commit details
-
Copy full SHA for de5dea4 - Browse repository at this point
Copy the full SHA de5dea4View commit details -
Nix omits E O U T characters for some reason.
Configuration menu - View commit details
-
Copy full SHA for 5a5a956 - Browse repository at this point
Copy the full SHA 5a5a956View commit details -
Configuration menu - View commit details
-
Copy full SHA for bac8623 - Browse repository at this point
Copy the full SHA bac8623View commit details -
Co-authored-by: Thomas <twatson52@mac.com>
Configuration menu - View commit details
-
Copy full SHA for 9cabba1 - Browse repository at this point
Copy the full SHA 9cabba1View commit details -
hashes: truncate -> reduce, mention SHA-256
the longer SHA-256 hashes are not truncated, but in fact processed. Co-authored-by: Thomas <twatson52@mac.com>
Configuration menu - View commit details
-
Copy full SHA for 29c0625 - Browse repository at this point
Copy the full SHA 29c0625View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0228eb8 - Browse repository at this point
Copy the full SHA 0228eb8View commit details -
clarify what store objects can be
the store of course makes a distinction, but that is not relevant here
Configuration menu - View commit details
-
Copy full SHA for db6faf4 - Browse repository at this point
Copy the full SHA db6faf4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 00a7eae - Browse repository at this point
Copy the full SHA 00a7eaeView commit details -
Configuration menu - View commit details
-
Copy full SHA for b7309ce - Browse repository at this point
Copy the full SHA b7309ceView commit details -
Configuration menu - View commit details
-
Copy full SHA for 3df1ee2 - Browse repository at this point
Copy the full SHA 3df1ee2View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8cec32e - Browse repository at this point
Copy the full SHA 8cec32eView commit details -
Configuration menu - View commit details
-
Copy full SHA for cc3a5f4 - Browse repository at this point
Copy the full SHA cc3a5f4View commit details -
apparently it is not possible to link to page anchors with `mdBook`[1] [1]: rust-lang/mdBook#167
Configuration menu - View commit details
-
Copy full SHA for b631742 - Browse repository at this point
Copy the full SHA b631742View commit details -
Configuration menu - View commit details
-
Copy full SHA for bc11885 - Browse repository at this point
Copy the full SHA bc11885View commit details -
Configuration menu - View commit details
-
Copy full SHA for b74a3f5 - Browse repository at this point
Copy the full SHA b74a3f5View commit details -
Configuration menu - View commit details
-
Copy full SHA for b430a67 - Browse repository at this point
Copy the full SHA b430a67View commit details -
Configuration menu - View commit details
-
Copy full SHA for 016d7a8 - Browse repository at this point
Copy the full SHA 016d7a8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6f6498f - Browse repository at this point
Copy the full SHA 6f6498fView commit details -
Add disclaimer that arch section is WIP and links may rot
So we can iterate without worrying so much.
Configuration menu - View commit details
-
Copy full SHA for 39d32ac - Browse repository at this point
Copy the full SHA 39d32acView commit details