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).
I had the opposite experience. I started using it as a daily driver around 10 years ago and could never to back to anything else. It's just super solid and once you have it configured it just works forever. I agree that the learning curve is pretty steep, especially if you want to use something that's not in nixpkgs but those things are vanishing day by day.
q3k · 3h ago
Yeah, for all the blog posts about quitting NixOS there's plenty of us who continue using it.
I don't think it's just the steep learning curve though, I think it's just not for everyone. You _have_ to enjoy side quests where you dive deep into hairy problems, and effectively be willing to front load effort into setting up an environment so that it works well for you in the long term.
splitbrain · 3h ago
I think OP sums it up pretty well. If there isn't an existing module or one that does exactly what you want, your only way forward is to program your way out of it. That's just not something I want from my daily driver of a distribution. It doesn't help that this programming happens in a weird (to me) functional language.
nerdix · 1h ago
I think it's weird to most people. I've used NixOS on my personal machines for 2 years and Nix lang is easily the worst thing about it. I'm definitely not a huge functional guy but I'm familiar with Lisp/Scheme and F#. Nix feels completely foreign in a way that those languages didn't.
There have definitely been situations where I've just decided to not try out an application because it wasn't in nixpkgs (it's pretty rare for a package to not exist but one prominent example is Zen browser).
q3k · 2h ago
> That's just not something I want from my daily driver of a distribution.
And that's fine! People are different, there's no way one OS is the best choice for everyone. :)
chpatrick · 2h ago
I think that's fair. The stuff that works for other distros won't work for Nix. However I think eventually everything will be nix-ified. Right now for services there's also an easy escape hatch with docker and oci-containers. It's also what I use if I can't be bothered to nixify some server I want to run.
nextos · 3h ago
Can you elaborate on what were the friction points? I migrated from Arch to Nix several years back because I found maintenance to be incredibly easy and it also allows me to test things without fear. Arch and other imperative distros are still superior for some workflows, but you can always run something imperative inside Nix like FHSEnv or DistroBox. Nix is also available in Arch extra, so it's also possible to do this the other way round, with Arch as a host.
rkomorn · 1h ago
For me (recent NixOS user), it's mainly two things:
- for every configuration item in the software I use, I basically need to learn the way to NixOS-configure it (assuming I don't want to raw-configure everything)
- experimentation is onerous (unless there are workflows I don't know), for example: messing with my sway config requires rebuild switches
I'm not bailing (yet?) but the "ergonomics", well, don't feel ergonomic.
rkomorn · 1h ago
Oh, and the NixOS / HomeManager split feels very funky, but NixOS life without HomeManager seems unreasonable for a daily driver laptop.
naasking · 3h ago
> 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.
How much of this is really just unlearning what you have learned, and needing to internalize the Nix way of doing things which may allow more flexibility in the end?
Cu3PO42 · 3h ago
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.
happens · 1h ago
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.
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.
kugurerdem · 3h ago
Oh! Thanks for reminding me that :)
alyandon · 3h ago
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.
Ericson2314 · 3h ago
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.
q3k · 3h ago
Right, the problem is that this leaky abstraction effectively now requires you're both good at Nix and good at fixing whatever tool it is that is refusing to work with Nix. That usually means diving deep into build systems, code that makes wrong assumptions, and probably other hairy topics. In return you do get a state of the art system, but you very often need to put in work you otherwise wouldn't need to.
I don't mind that because that's how my brain is wired, but there's plenty of people who don't give a shit and Just Want Things To Work Out Of The Box. Nix(OS) is certainly not for everyone.
soraminazuki · 43m ago
I don't see what the problem is. What Nix is doing is far more transparent than the article's preferred solution of Docker images. While Docker images are entire distros crammed into a binary blob, Nix derivations are inspectable and customizable. Nix uses standard mechanisms to configure software, like config files and environment variables. It really isn't black magic.
Also contrary to popular opinion, Nix configs are actually easier to comprehend and maintain than configs written in Chef, Ansible, or Kubernetes. Having a proper language for describing large and complex pure data helps.
sbt567 · 2h ago
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.
koiueo · 3h ago
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.
woleium · 3h ago
which nas did you pick?
koiueo · 2h ago
Some recent Asustor model with 2×3.5" bays and 4×nvme slots.
Probably 6702, but can't verify right now.
amelius · 3h ago
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.
lylejantzi3rd · 3h ago
What would make it more pleasant?
ChocolateGod · 3h ago
I'd say adopting JSON/YAML.
chriswarbo · 2h ago
Nix has supported JSON derivations for years, e.g. using commands like `nix derivation show` (I have Emacs configured to run that on any `/nix/store/foo.drv` file I open). It still serialises to ATerm on disk, to avoid breaking existing hashes; which I think is reasonable.
If you mean the programming language used to generate those derivations, then I have no idea what that would even look like; some horrific bastardisation like https://github.com/gliese1337/json-lisp ?
PS: I I found that json-lisp project with a quick search for a LISP-like language that used JSON instead of s-expressions. I like how its README says "Due to the excessive cumbersomeness of writing code in JSON, it is expected that most applications of this library will use it for interpreting auto-generated code of some sort, or API calls, or config files.". If we used that to generate Nix derivations, then we'd want a third* language to generate the json-lisp that generates the derivations ;)
q3k · 3h ago
What? No! Nix-the-language certainly isn't great, but there's nothing better about JSON/YAML in this role. The whole point of Nix is that it's a programming language that allows you to build abstractions in the language itself, not just pure data.
koiueo · 3h ago
I rarely downvote on HN, but when I do, it must be a comment promoting JSON over any other configuration language (sorry)
Nix isn't even that arcane. Its documentation simply sucks. Once you grasp the idea, it feels almost great
nerdix · 1h ago
To be fair,the Nix code in a very simple config probably looks like some weird JSON like derivative to a layman because of how brackets heavy the language is.
I could see someone glancing over a tutorial and thinking "they should just use JSON instead of their own custom data format" without realizing that Nix is a functional programming language.
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.
dmart · 3h ago
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.
koiueo · 3h ago
> will not scale in the long term
I first learned about Nix about 10 years ago. And back then I thought exactly this – it can't scale.
But I'm pleased to be proven wrong.
CapsAdmin · 3h ago
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.
woleium · 3h ago
Yes, nix + LLM solves all the issues i had with it.
photios · 3h ago
NixOS is amazing on a server and utterly terrible on the desktop. I learned the latter the hard way too.
q3k · 3h ago
To each their own, I'm quite happy running NixOS on all my desktop/laptop machines (for probably 7 years now?) - and I know I'm not the only one.
tylergetsay · 1h ago
I killed my laptop, since my config is all nix I was back online in less than an hour on a new machine
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
I don't think it's just the steep learning curve though, I think it's just not for everyone. You _have_ to enjoy side quests where you dive deep into hairy problems, and effectively be willing to front load effort into setting up an environment so that it works well for you in the long term.
There have definitely been situations where I've just decided to not try out an application because it wasn't in nixpkgs (it's pretty rare for a package to not exist but one prominent example is Zen browser).
And that's fine! People are different, there's no way one OS is the best choice for everyone. :)
- for every configuration item in the software I use, I basically need to learn the way to NixOS-configure it (assuming I don't want to raw-configure everything)
- experimentation is onerous (unless there are workflows I don't know), for example: messing with my sway config requires rebuild switches
I'm not bailing (yet?) but the "ergonomics", well, don't feel ergonomic.
How much of this is really just unlearning what you have learned, and needing to internalize the Nix way of doing things which may allow more flexibility in the end?
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.
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'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.
For me, building/running environments in containers is the least amount of friction.
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 don't mind that because that's how my brain is wired, but there's plenty of people who don't give a shit and Just Want Things To Work Out Of The Box. Nix(OS) is certainly not for everyone.
Also contrary to popular opinion, Nix configs are actually easier to comprehend and maintain than configs written in Chef, Ansible, or Kubernetes. Having a proper language for describing large and complex pure data helps.
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.
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.
Probably 6702, but can't verify right now.
If you mean the programming language used to generate those derivations, then I have no idea what that would even look like; some horrific bastardisation like https://github.com/gliese1337/json-lisp ?
PS: I I found that json-lisp project with a quick search for a LISP-like language that used JSON instead of s-expressions. I like how its README says "Due to the excessive cumbersomeness of writing code in JSON, it is expected that most applications of this library will use it for interpreting auto-generated code of some sort, or API calls, or config files.". If we used that to generate Nix derivations, then we'd want a third* language to generate the json-lisp that generates the derivations ;)
Nix isn't even that arcane. Its documentation simply sucks. Once you grasp the idea, it feels almost great
I could see someone glancing over a tutorial and thinking "they should just use JSON instead of their own custom data format" without realizing that Nix is a functional programming language.
It's somewhat quirky though :)
https://nixos.wiki/wiki/Nix_Language_Quirks
https://md.darmstadt.ccc.de/xtNP7JuIQ5iNW1FjuhUccw
(but then again, what language isn't...)
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.
I first learned about Nix about 10 years ago. And back then I thought exactly this – it can't scale.
But I'm pleased to be proven wrong.
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.