My laptop environment is the staging ground for my life as a developer. In this talk, I’ll tell the story of how a Nix flake I call Nome, my “Nix home,” provides not just a fully declarative and easily reproducible global environment on my laptop but also a variety of templates and other helpers that have supercharged my per-project environments as well.
Years ago, I defined my laptop environment using a pretty standard janky jumble of dotfiles and shell scripts. Years after first encountering Nix, Home Manager gave me my first taste of using declarative logic to define my system, and I continue to tweak my Home Manager config every day. But now I’ve gone several steps further and created a Nix flake that I call Nome—my “Nix home”—which defines my global environment using Home Manager but also provides a set of NixOS configurations, flake templates, Nix-built scripts, Nix helper functions, Nix-defined Docker containers, and other goodies that have markedly improved my productivity and eliminated a whole class of paper cuts from my daily work life. In this talk, I want to provide a basic overview of Nome’s flake outputs and provide a brief demo of how I use it to get up and going in a new project.