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).
- 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.
Some other user-levels get tossed in there by virtue of "since HomeManager's there, I may as well use it".
It seems that most wiki pages that I see that have both NixOS and HomeManager sections at the very least make HomeManager seem more featureful or flexible.
Not having NixOS manage configs (itself or via HomeManager), though, very much reduces the value proposition of NixOS in my mind.
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.
And that's fine! People are different, there's no way one OS is the best choice for everyone. :)
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).
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?
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 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.
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 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 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.
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 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.
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...
amelius•6mo ago
lylejantzi3rd•6mo ago
ChocolateGod•6mo ago
q3k•6mo ago
koiueo•6mo ago
Nix isn't even that arcane. Its documentation simply sucks. Once you grasp the idea, it feels almost great
q3k•6mo ago
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...)
lylejantzi3rd•6mo ago
q3k•6mo ago
(and, when you can do without side effects, functional programming is really simple and productive!)
nerdix•6mo ago
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.
chriswarbo•6mo ago
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 ;)