The nix documentation is still getting polished up, but it's much more approachable than it used to be. (This should both delight you and fill you with mild trepidation).
- https://www.haskellforall.com/2022/08/stop-calling-everything-nix.html
- https://nix.dev/tutorials/nix-language
- alternative intro crash course (in the style of X-in-60-minutes): https://github.com/tazjin/nix-1p
- https://learnxinyminutes.com/docs/nix/
- https://www.haskellforall.com/2020/11/how-to-use-nixos-for-lightweight.html
- https://nix.dev/tutorials/integration-testing-using-virtual-machines (this is the expanded reference version of Gabriella's original article)
- https://www.youtube.com/playlist?list=PLRGI9KQ3_HP_OFRG6R-p4iFgMSK1t5BHs
- An intro series on how to use nix step by step on macos. Written originally for shopify usage internally and released after. (If you wanna use nix for dotfile stuff for your mac, start here)
- https://ianthehenry.com/posts/how-to-learn-nix/introduction/
- The expanded similarian index depth annotation appendex to the nix manual
- https://edolstra.github.io/pubs/phd-thesis.pdf
- The Thesis That Started It All: Or, "281 pages of more than I ever wanted to know about why software packaging is broken and how one might attempt to fix it"
- https://www.youtube.com/watch?v=h8hWX_aGGDc
- The Evolution of Nix (aka "fuck i ain't reading that whole ass thesis")
- Alt title: "A high level perspective on Nix - where it came from, how it is positioned compared to other systems and where it is now"
- https://nixos.org/guides/nix-pills/
-
note: the reason this is in the advanced dragon bullshit category is because it used to be the main introduction people would recommend reading that was because they were desperate and had no other option. This is like recommending "category theory for category theory experts" for people wanting to learn functional programming. Or The Rustonomicon as an intro book for newbie programmers
It can be described as a socratic walkthrough of a lot of the design decisions surrounding the things inside nixpkgs that we take for granted such as:
- mkDerivation (the make && ./configure && make install --prefix=$out magic)
- the "callPackage" pattern
- "overrides" (aka "fantastic fixpoints and how to fucktastically fuck around and find the fuck out with them")
-
docker run --rm -it nix nixos/nix bash
(listed in order of reading for the most part)
- https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/nat.nix
- https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/nomad.nix
- https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/apparmor.nix
- https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/auth-mysql.nix
- https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/ceph-multi-node.nix
- https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/containers-macvlans.nix
- https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/containers-physical_interfaces.nix
- https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/hardened.nix
- https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/networking.nix