NixOS
NixOS replaces piecemeal system
administration with a single declarative configuration: packages, services, and the user
environment are all described in files that can be versioned, rolled back, and reproduced
exactly on another machine. My
dotfiles are one
flake that builds three machines plus a bootable USB installer from a shared set of
modules, split between modules/system/ (NixOS proper) and
modules/home/ (Home Manager, for the per-user environment).
The flake also defines a handful of packages that are not in nixpkgs: wrappers for the
Claude Code and OpenCode CLIs, Loogle for searching Lean's Mathlib library, and an offline
text-to-speech and speech-to-text pipeline used for AI-assistant notifications and voice
input. Home Manager installs the NeoVim package, while ~/.config/nvim/
stays a separate repository — the configuration described below. The repository's
docs/ directory covers installation, building the USB installer, and each
module included in the system.