Is NixOS the Perfect OS for DevOps?
In a world where IaC and CI/CD strive to push the bounds of optimization, why wouldn't we take the same strides to optimize our desktop and VM environments? Sure, it's easy enough to write a script for you or your company's OS of choice that takes care of all of the configuration and installation needs that you may have, pulling configs off of repos and putting them in the right places, etc. BUT, what if it was just like another yaml or json that you might see in modern IaC tools today? What if it was NixOS? As some of you may know, I did an article on NixOS earlier this year and I was very impressed (although still very new to the concept.) It was like a Docker Compose file but for my OS, I can set the config to whatever reproducible state that I want and boom, it works on OUR machines. Obviously the appeal of this is very apparent from a DevOps perspective. Having Git repos of server/infrastructure configs for various situations ready for whatever Linux server needs to be deployed in the circumstance and a common agreed upon format for collaboration, as well as further embracing IaC in a world that increasingly runs on automation to achieve speed and optimization. As Dr Spock might say, it only seems logical to consider every part of an optimization effort, and Nix is definitely worth considering in this aspect for it's reproducibility via the configuration.nix, which feels like its supposed to be sitting in a repo with all of the other IaC scripts. One of the biggest issues that I see with this (please note that this is from an outsider's perspective, I have never worked a legit IT job) is the perceived learning curve from NixOS itself, which can throw off Linux casuals, but its not any harder than learning something like OpenTofu. You build the config to be the machine that you need and deploy it as many times as you need, you only have to learn ins and outs of the config, which would just be another day for DevOps or SRE I imagine. It honestly doesn't make sense to be paying for RedHat or being potentially bloated down with Ubuntu when you can deploy exactly what is needed and have it ready to go a moment's notice? I originally got interested in Nix because I've been using Arch Linux for over 2 years now and its what the cool kids were flexing online. Plus the packages! If the AUR is a grocery store, then the Nix Package Manager is like frickin Costco. I feel like this OS being the future of server-side Linux one day is something that is not talked about enough. Which is understandable, most of the people talking about Nix are talking about it online at home while wearing knee high socks and listening to anime soundtracks, not in the place where it seems like it would be most relevant, the office. I could see Nix going mainstream as user's of the OS enter the professional workplace, and DevOps leadership embraces it's IaC nature. You use Debian servers? Okay boomer, have fun installing packages while my app is already deploying as we speak. You don't even need to main Linux or be a shell wizard, you need to know what packages are needed for what services, and how to write a solid config. That's it. It's like anything that sounds overwhelming because elitist nerds revel in it but its actually pretty simple. Nix isn't scary, it's the future. They'll look back and see us with our barbaric package managers like we're cavemen still trying to figure out how to computer, relics from a different time. I don't see it eliminating other distros completely in the workplace, and especially not as a daily driver. I do see situations where it seems like it would be extremely viable, like anything requiring rapid deployment, scalability, and reliability. But that's it for today guys, is Nix the future of server-side Linux? Is it the ultimate OS for DevOps? Is this a redundant article and I'm just preaching to the choir? Will Steven ever get a real IT job? Only the future can tell, as for now that's it for today. Anybody reading thank you for your time and have a great rest of your day, peace.