1
0
Fork 0
mirror of https://github.com/NixOS/nix.dev.git synced 2024-10-18 00:06:26 -04:00
nix.dev/maintainers/documentation-survey.md
2023-11-27 07:30:36 +01:00

9.9 KiB

Documentation survey

To better navigate the material and judge its relevance, every entry should provide

  • Title (URL)
  • Brief summary
  • Video length or estimated reading time
  • Principal Author(s)
  • Year created (last update or maintenance status)

Tutorials

Nix

Nix language

Nixpkgs

NixOS

How-to guides

Nix

Nix language

Nixpkgs

NixOS

Explanation

Nix

Nix language

  • https://edolstra.github.io/pubs/phd-thesis.pdf

    Chapter 1: Existing software deployment models and issues faced with them; motivation for developing Nix, features of the Nix deployment system

    • Reading time: 15 min
    • Author: Eelco Dolstra
    • Created: 2006

    Chapter 2:

    2.1: The Nix Store, isolation of components, cryptographic hashes, non-destructive upgrades, prevention of undeclared dependencies, closures

    2.2: Use of Nix expressions to build software, structure of Nixpkgs collection, Hello and SUbversion as examples of derivations.

    2.3: Package Management: Installations, updates and rollbacks, user environments, uninstalling, garbage collection

    2.4: Store derivations: Definition, .drv files in Nix store. nix-instantiate, nix-store --realise. Allows various deployment policies, including source and binary.

    2.5. Deployment models. Mechanisms nix-instantiate and nix-store. Models: Manual download; vesion management system; channels; one-click installation

    2.6: Transparent source/binary deployment: nix-push and nix-pull. Pre-built substitutes.

    • Reading time: 30 min

    Chapter 3: Relates deployment issues to memory management issues in programming languages. Relates files to objects in memory. Describes closures, discusses pointer discipline and conservative garbage collection, shows that persistence is achieved by cryptographic hashes.

    • Reading time: 25 min

    Chapter 4: The Nix language: Functional languages; lazy languages. Lexical syntax of Nix language. Semantics: Basic and compound values, substitutions, function calls, conditionals, assertions, with, operators, evaluation rules. Implementation using ATerm library.

    • Reading time: 60 min

    Chapter 5: Extensional vs intensional. The Nix extensional model: cryptographic hashing; file system objects and the Nix store; adding atomic values to the store; translating Nix expressions to derivations; garbage collection

    • Reading time: 60 min

Nixpkgs

  • Nix Pills Chapter 6: Our First Derivation

    Explains derivations; the derivation function, its attribute set, .drv and 'out' files. Explains outpath. Regarding nixpkgs, shows how to bring nixpkgs into scope and how to refer to a package using its outpath. Accessing files underneath a package's out.

    • Reading time: 25 min
    • Author: Luca Bruno
    • Created: 2015
    • Updated 2017
  • Nix Pills Chapter 7: Working Derivation

    Creating a working derivation. Using nix repl: bash as a builder; the args attribute; creating in $out; the builder environment; packaging a C program. Using a .nix file to define the derivation: import function; inherit keyword; using nix-build. Explains how to use gcc, bash and coreutils from nixpkgs.

    • Reading time: 15 min
    • Author: Luca Bruno
    • Created: 2015 (effectively unmaintained since 2017)
  • https://nixos.org/guides/nix-pills/inputs-design-pattern.html

    Explains the inputs design pattern as used by nixpkgs. A single customizable repository having a top-level Nix expression, with one expression for each package.

    • Reading time: 20 min
    • Author: Luca Bruno
    • Created: 2015 (effectively unmaintained since 2017)
  • https://nixos.org/guides/nix-pills/callpackage-design-pattern.html

    Introduces the callPackage pattern used extensively in Nixpkgs. Shows how to write and use the function; use builtins.functionArgs to determine arguments, use builtins.intersectAttrs to combine attributes, and override arguments when needed.

    • Reading time: 15 min
    • Author: Luca Bruno
    • Created: 2015 (effectively unmaintained since 2017)
  • partially in https://edolstra.github.io/pubs/phd-thesis.pdf

  • Connecting Bash to Nix

    Configure derivation using only Bash and builtins. Explains builtins.derivation, attributes, nix build, store path hierarchy, imports. Relates this to `stdenv.mkDerivation.

    • Reading time: 10 min
    • Author: Ross Light
    • Created: 2023

NixOS

Reference

Nix

Nix language

Nixpkgs

NixOS