Nix just leveled up my very concept of computing…

2-3 weeks ago I thought I should try to look at Nix again to see what all the fuss is about. And I went full rabbithole on it. And it was great.

It is so hard to describe what Nix is about. I know I didn’t take much from the terms people ramble off when talking about Nix: descriptive, functional, pure, etc.

The learning curve is steep and the documentation is not perfect but when you get to something that works it is completely transforming.

I have never had or known of a system that feels so stable, because of perfect rollback, package separation and less-to-no system cruft build-up.

Oh yeah importantly: finally a set once, re-use indefinitely method of setting up a system. That was my carrot. And I got it!

In summary: if you are a terminal/shell level Linux user, try this shit out. Start with Nix to get the feel of the thing. It runs along-side your current OS packaging system (apt-get or the like) and gives you the whole system regarding package management.

If you like it you can then go full NixOS later, which is the full system-level configuration using the same descriptive methodology: write your whole system in a single file (or more).

Then you can rebuild your whole system with a single command (!) which usually means hot-swapping the system: normally you don’t even have to reboot, logout or even close the terminal window (!!).

And since such a system plays perfectly with Github, your system potentially (normally) has perfect version history. You can go to any state your system has had previously.

Important enough to repeat: that means you can rollback the current NixOS system perfectly with the boot menu of the previous versions of the system. Or you can Git those system-defining files, allowing you to set the system to any previous state captured in the Git version history.

Both of those are completely killer apps. And those are not the only ones by far. But most of the other ones has to be experienced. And on the whole, it feels like a completely different and superior method of computing.