Discovering NixOS

Posted on September 24, 2015

I have never been a cloud netizen. Sure, I have a VPS or two and an account to keep the website running; but I have only ever set up one EC2 instance, and it came down almost as soon as it was complete because it was no longer needed. The cloud has never excited me.

I think that the reason for that, although I love the process of configuring a machine to be what I want, is that the cloud always has that in-between step: The one where the machine in question is not quite where you want it to be, but is not sitting in front of you. I am constantly terrified that if I break something, and the machine can’t come back up to multi-user mode, that I’ll have a virtual doorstop until I make the right magical VNC incantations.

I have never wondered at the cost of services which will run your VMWare or VirtualBox instance. Indeed, that felt like the best long-term solution for the deep-pocketed: Build out a “machine” right from your home (directory) and ship it off to be virtually colocated as-is. But I have never wanted to be that financially committed to the kinds of servers I run. After all, having lived on the command line for 20 years has blessed me with a very small virtual footprint. I don’t need big instances.

That all changed this week.

I’ve been hacking around with haskell for the last year or two, and for those unfamiliar with the process, learning haskell involves a lot of trips to Hackage to find packages and source examples that meet your needs. At first, I noticed the word “NixOS” as a platform that many (if not most) packages have been tested with. I unconsciously brushed it off as being some generic “this will work on *nix."

Much later, I noticed a package that listed Ubuntu, Debian, RHEL, AND NixOS. Then I saw the version number and realized my earlier mistake. The classification of machines referred to as “*nix" does not have an overarching version number! This must be something new… at least new to me. I clicked.

Introductory documentation is quite thin, but I’m making progress on using NixOS and the tool derrived from it, NixOps, to get some real work done. Specifically, I am on a project which requires an internet presence. This time, I will not push the deployment and maintenance of this server onto “more qualified” individuals, as I have in the past.