As used for my personal laptop.
-
ZFS for all file-systems including the
/
and the/boot
, giving volume management and snapshot backups. -
Mirror ZFS pools on dual (or more) SSDs, giving redundancy, fault tolerance, and high-performance striped reading.
-
Mirror EFI system partitions, allowing booting from either in case one fails.
-
Multiple swap partitions, one per drive, not mirrored, for high-performance striped writing and reading.
-
Script for reproducing the custom drive partitioning, ZFS layout, and NixOS installation.
-
Very minimal system state, allowing entire installation to be more easily reproduced.
-
Organized so that per-machine configuration is separated from general configuration.
-
Multiple users for different activities, for better security and for tailored environments.
-
Companion repository that provides my "dot files" for users' home directories.
-
Some non-trivial custom NixOS modules.
-
Extra support for installing source-code and debug-info, according to your choice, for debugging of binaries (executables & libraries) installed by Nix packages which don't normally provide this (for both pre-built w/o rebuilding or locally-built), and also for arbitrary binaries via dedicated temporary directories. Default installation of the source-code of the system's Glibc and Rust std libraries (w/o rebuilding any packages), to help when debugging any of the many binaries using those. Options for NixOS to configure all this.
These repositories were created using NixOS 21.05 and were minorly adjusted for all following release versions up to 24.05 which they now target.
See Installation.
See Recovering From Drive Failure.
- My approach was derived from that of https://openzfs.github.io/openzfs-docs/Getting%20Started/NixOS/Root%20on%20ZFS.html, but uses a different ZFS dataset layout and a somewhat different partition layout.