At the start of the year I switched my main machine to NixOS. I have not installed a package the traditional way since.

Flakes + Home Manager

Everything lives in git. My entire system — from kernel modules to VS Code extensions — is defined in a single flake.nix. I can rebuild my exact setup on a new machine in under ten minutes.

This matters for the projects above. The trading bot's Foundry environment, the C++ training pipeline's CUDA toolkit, and the Rust key-manager's toolchain are all pinned to exact nixpkgs revisions. I do not have to worry about "it worked on my machine."

Why It Matters

I used to dread OS upgrades. Now I just bump the nixpkgs input, test in a VM, and switch. If something breaks, I roll back in one command.

It also makes CI trivial. The same Nix shell that builds my project locally builds in GitLab CI with zero config drift.