Years ago I seemed to have a lot more interest in trying new things. It was almost constant, jumping between editors, distros, tools, frameworks, languages… Anything and everything software. This is in stark contrast to now, where I spend significantly more time with tools I know and am comfortable with. Perhaps part of this is the result of having less time in my personal life to dedicate to software, however I also believe that a lot of the software I use now is well-suited to me and very well designed. I strongly believe NixOS falls into that category of software.
Don’t get me wrong, NixOS isn’t some magic bullet that everyone should use. It has rough edges… it is only through a great deal of time and patience that I have gotten to the point where I can be moderately productive with it. This is why I’ve rarely recommended it to other people.
Yet, I’ve been happily using NixOS as a daily driver since 2019, and will continue to do so into the foreseeable future. The initial draw of the distro for me was the ability to version and rollback my configuration. Pretty much since I’ve owned a computer, I would frequently re-install my OS from scratch. I’ve always been prone to tinkering with my computer, often without fully understanding the what I was doing. Starting from scratch gave me the peace of mind that I wasn’t unknowingly enduring any unforeseen consequences of said tinkering. Or of misbehaving programs for that matter, leaving files, etc behind long after they’ve been uninstalled.
NixOS changed all that. With my current setup:
- I version my OS configuration in the same way I would a software project
- I can rollback to previous configurations if I introduce a bad change
- Regular backups run against my machine
I can now tinker fearlessly. I’ll be honest, I remember it being painful at first. I wasn’t nearly as familiar with linux at the time, so I felt sort of like I’d been thrown into the deep end, needing to package my own software when it wasn’t in the repo. Fast forward a few years though, and I have a dynamic configuration that works across several machines, including home-manager configs on several arch installs. My self-hosted stack is all powered by NixOS as well, allowing me to codeify my infrastructure with a tool that was actually designed for that (looking at you Terraform & AWS).
You can take a look at my config on sourcehut, and if you have any questions for me feel free to reach out to my mailing list at the bottom.