16 comments

[ 0.26 ms ] story [ 40.2 ms ] thread
Working with sandboxed/containerized/nixos stuff is like eating with chopsticks, except you are holding the chopsticks with another set of chopsticks. For a brief moment it is interesting, then it becomes a nuisance, and soon it is even painful to watch others do it.
I only got started with NixOS a couple of weeks ago and I must agree. I would never consider running Nix on my daily Desktop machine (I'm using Arch BTW). It's more work and hassle than it's worth it.

OTOH I just set it up as the base for my new DIY NAS. There it is limited to just the bare minimum of bringing the system up and providing some core services (including Samba). And for this I found Nix' declarative approach quite good. I can easily restore the root system from the backed up config alone.

Everything else will be handled by Docker compose stacks outside the Nix eco system (stored on the RAID).

https://www.splitbrain.org/blog/2025-08/03-diy_nas_on_nixos

Better fix your about page ;)

I've dabbled in NixOS and come to many of the same conclusions. The learning and troubleshooting overhead just isn't there yet (for me). I appreciate the concept and I do think declarative configurations do have a place in the near future, especially in corporate environments. I'll probably give it another go in a year or so to see if it's gained any more polish.

I had a similar experience with NixOS and eventually gave up. I liked the idea of NixOS but I do lots of weird things off the beaten path and was constantly troubleshooting why things wouldn't work.

For me, building/running environments in containers is the least amount of friction.

(comment deleted)
The leaky abstraction argument is itself leakly. Yes, it would be nice if we weren't putting lipstick on a Unix pig, but Nix never promised the underlying thing wasn't Unix. It sounds to me like he is moving the goalposts.

If he wanted to run a bunch of shitty precompiled binaries from NPM for work, I would simply create a normie Ubuntu container or whatever and use that. There is no reason one's personal configuration should have to kowtow to such work things — it's probably better to have that sort of work-life separation anyways.

I like Nix but I think the current model of reinventing a new set of declarative configuration settings for each package is fundamentally misguided and will not scale in the long term (look at the number of program-specific options in Home Manager for example).

The nice thing about container-based systems is that all the existing documentation for configuring a given program continues to apply as expected. Of course the tricky part is figuring out how to compose them together.

There once was a post "The curse of Nix", or something like that, with the main idea that Nix isn't perfect, but once you tried it, everything else seems even worse.

For the first six months of using NixOS I couldn't run anything but a browser (I'm exaggerating a bit), yet all attempts to get back to Arch failed for me.

Now it's been over 4 years of having NixOS on all my computers, from Laptops to ARM SoCs driving my speakers. And so far I've no desire to try anything else. Moreover, when I was looking for new a NAS, I specifically picked a model allowing me to run an OS of my choice – so alien and unappealing seemed to me the concept of configuring things not through Nix.

To each their own. But the curse of Nix is a real thing. And if the OP doesn't try at least running Nix on Arch, I'd say, he just doesn't appreciate Nix benefits in the first place.

NixOS is amazing on a server and utterly terrible on the desktop. I learned the latter the hard way too.
I've been using it for a few years now and I still feel a little confused, but asking llms explain nixos has been immensely helpful.

If I'm feeling really lazy, I just ask claude to generate the specific nix code for whatever I need that doesn't work or exist in nixpkgs.

For me, my computer is a tool that I need to just work. Therefore I understand the frustration of occasionally fighting Nix to get things to work right.

For the same reason, I don't think I will ever move off of Nix again. Once something works, it works reproducibly. I can always go back to a known-good state if I break something. This gives me freedom to experiment that I would otherwise not permit myself for fear of breaking an important workflow.

When I started using NixOS, I intended to ease into it very gently by running just the barest nix config on the host but actually doing all of my meaningful work in distrobox containers. Hilariously, in my case I ended up accidentally going whole hog and putting almost everything directly in the host NixOS system, but I still fully endorse my original plan: NixOS host and system configuration, but every application you can goes in flatpak and all dev work is in distrobox. Best of both worlds.
I'm just starting my second attempt at using NixOS last week because suddenly, my SSD failed and I have limited amount of time to configure my second laptop to get to work. This time I don't think that installing Arch will be the best choice to get to the last state of my laptop as fast as possible (I'm using dotfiles management, but not all things can be automated). And I'm ready to try NixOS again.

The only thing that makes me confident this time, is that I can use LLM to help me. There is absolutely no way I could try Nix again without using LLM. The first attempt at using it just makes me anxious because of docs alone.

And what makes me stick using it? Nix-ld. I think embracing impureness and doing things incrementally will help alleviate the vertical learning curve that is Nix.

After all of this learning curve? I finally can see the rainbow that I can only dreamed of in the past.

I daily drive NixOS, and while I initially had the same experience I've settled on some workflows that basically allow me to run anything with minimal maintenance.

I think it's a problem that many tutorials and example configs you find online are very verbose and propose complex patterns, when you don't really need that much for it to be useful. There is still a learning curve, but you don't need to write a modularized configuration framework if you just want some machines with synced config and apps.

I've written about my workflow here [1], but haven't published it anywhere yet. Not sure how useful this is to other people.

[1] https://happens.lol/blog/how-to-nixos-insane/

I keep wondering why NixOS and few exotic distributions are the only ones that offer declarative configurations. Something like Ansible, but more like Nix.
Late to the party but just read your article and I share a lot of the struggle you said. I don't know if I can fix that by just going back to Arch. I've tried, with different levels of success, a mix between Arch and Nix, but that adds another issue of inter-compatibility of system packages between Arch and Nix which often it's a no-go.

The thing I enjoy the most on NixOS is the ability to make something, then remove it if I don't need it and don't have to worry about config files that are in an unknown-to-me path. But then there is the stateful aspect of the programs I used that I have to keep track of...