1
0
Fork 0
mirror of https://github.com/NixOS/nix.dev.git synced 2024-10-18 14:32:43 -04:00
nix.dev/maintainers/working_groups/learning_journey/documentation-survey.md

9.1 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

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