> Nix has the same problem as Terraform: it solves a lot of problems, but you have to 'live and breathe' their DSL.
I find it much more pleasant to live and breathe the NixOS configuration than to live and breathe someone else's OS. It's a bit like a woodworkers workshop. Do you prefer to have someone else configure the workshop or do rather tune it to your use-cases over time?
> You're no longer learning/maintaining Linux - you're learning and maintaining Nix.
I disagree. I learned more Linux fundamentals with NixOS (and via that the Arch documentation) than I learned from running Ubuntu.
> I find it much more pleasant to live and breathe the NixOS configuration than to live and breathe someone else's OS.
I grew up with Linux and whilst it's changed, it's far more of my OS than what is provided by Nix. The idea is sound, to provide a more standard configuration, but that's what many Linux standards have done, and then been forked because people don't all think the same way - and they shouldn't.
Sure, if you're running servers or otherwise need reproducible systems in production, there's absolutely a lot of value in Nix. For a personal computer, which is something I still value greatly, I don't want to be constrained so much, especially by a DSL that is not intuitive to me.
I know Nix isn't 'new' and has just become more popular of late due to influencers, and I see the benefits for those that don't mind the aspects I mentioned, but it's absolutely not for me, or a lot of others I suspect.
I will stick with Debian for stable, Arch for rolling, and see what occasional others (void, for example) have to offer at the time. I used to be a big fan of gentoo, and I still would prefer to build from source, but it doesn't offer anything beyond that - I would love a variant of gentoo that also isolated dependencies for each package.
Then again, I suspect as flatpak continues to do well (or Canonical impose snaps everywhere) there will be even less space on the desktop for such 'personality' anyway.
Fair, but "learning / maintaining Linux" is not a singular entity. Every project uses a different configuration (toml, yaml, json, ini, etc.), much of which can often be accomplished -- even for multiple machines simultaneously -- with some nix.
It sounds like you're saying we should all use Linux From Scratch. Or are you saying that Nix is somehow equally bad as Terraform? Because as a user of both, that's ridiculous.
The problem is that when you need to fix those edge cases, suddenly you have to learn all of the things that the abstraction 'protected' you from.
I have no problem with the ability to know the state of the system - that's one of the 'cool' features. I just don't like it being locked away from me (on my personal computer) and having to use a language (DSL) that I dislike to describe everything when I already am happy with what exists.
I like the way you're thinking.
What do you recommend? I haven't played with Linux in about 18 years, (back then it was Ubuntu and Gentoo)... what the going recommendations now?
If you like the idea of Nix but are "meh" about the language, you could check out Guix, which does the same thing as Nix but with Guile (Scheme) as the configuration language.
(Disclaimer: Still stuck on NixOS, am myself "meh" about the language and have only dabbled in Guix, still need to commit a machine to it)
I’m all in on Nix (the package manager) today and use it across multiple Linux and Mac machines to handle my configs and most of my app installs.
That said, I still find nix difficult to understand and learn, and when I get stuck on something it seems extremely frustrating to unstick myself.
I would love to try Guix, mostly because I think building on an existing language would have solved many of my issues with nix, but the whole point for me is that I want a stable config across all of my platforms; the “non free” restrictions guix poses has gated me from it.
guix-nonguix (nonfree) is a bit hush-hush but in my experience works well enough for all hardware drivers and proprietary-adjacent softwares that I need
I made an effort to look into this at one point, and discovered that that there are actual rules prohibiting discussing it on the normal communication channels.
Made it seem like troubleshooting was going to be way more difficult than it was worth.
NixOS will continue to be niche and continue to be an alternative.
For desktop, NixOS will continue to be a niche, like Arch and Gentoo, because of the learning curve. But if you're already running Arch Linux, NixOS is a step in a direction you do want to consider, but may not want to afford with your time.
For server, NixOS will also continue to be a niche. Using it both attracts talent and limits the talent pool, because lots of very capable DevOps and sysadmins just never got around to NixOS, even if they are veterans in both the classic and the cloud world. It's like making a startup with Haskell.
Also, I've been holding back on switching to NixOS, but I'm finally dedicating my next free weekend to install it on my laptop. I would love to be able to reproduce my exact working environment on new machines more easily. I'm not switching from Debian / Alpine on server any time soon.
> For desktop, NixOS will continue to be a niche, like Arch and Gentoo, because of the learning curve. But if you're already running Arch Linux, NixOS is a step in a direction you do want to consider, but may not want to afford with your time.
It doesn't help that the Nix documentation used to be one of the worst I have ever encountered while Arch and Gentoo have some of the most comprehensive and well written Wikis.
Did it significantly improve in the past two years?
> Did it significantly improve in the past two years?
I feel like I can pretty concretely answer with “no”.
The docs are hard to read and don’t cover content well, and the ecosystem split that flakes brought have made it more complicated than ever for a new user to jump in today.
There’s plenty of user generated content out there. Sometimes it can fill in a gap, but most of the time I find that I have to just figure it out myself.
Nix is a cool system overall but the learning curve still seems needlessly steep.
https://determinate.systems seems to be doing good work for the nix community though. Shout out to them for sure.
> Also, I've been holding back on switching to NixOS, but I'm finally dedicating my next free weekend to install it on my laptop.
Good luck and welcome to Nixdom :)
NixOS is a lot of fun even when it doesn't work. It's actually more fun when it's broken haha - Nix has given me the courage to debug some nasty stuff not in my wheelhouse. Thus growing my wheelhouse.
I tried out NixOS the other day using the stable ISO image in a VM. To try to get some familiarity I tried to install a really simple package (neofetch). After the VM was stuck at 100% CPU for about 10 minutes I gave up.
Not sure if it was a cold start issue for the package manager or a quirk of using the live ISO versus an actual install but I was too demotivated to keep learning.
Nix looks like it will be ideal for that once it gets front end tools. Seems like it would be the perfect end user OS, with the right GUI admin system so nobody ever had to deal with Nix.
I like the config file model a lot more than interactive commands, but it's neither discoverable nor copy pastable into the terminal.
Most of the traditional Linux ecosystem seems to be built assuming that a person would be interactively managing individual computers, and automation just kind of gets stacked on top, or added much later.
Like, fstab. For a long time all your entries were in one place, and some distros still just have one file. Which is fairly insane, because a script can't just have it's own file, it has to be able to edit the main one, which is in some space/tab separated format probably because JSON and the like didn't even exist, so there are scripts out there with "Add this line if this is not already present" code and all sorts of hacks.
Plus, package management breaks stuff regularly, anything not in the base repos has to be carefully maintained to keep up. Which is almost impossible when there are so many distros to keep up with. So then you need flatpaks to fix it, but there's always some random bug in the flatpaks that doesn't get caught because there's fewer eyeballs...
To me the entire Linux ecosystem is insane, and nobody should have to do something by typing a command interactively, that doesn't really help make things reproducible and predictable. It's like, an oil painting when what you actually wanted was a CAD model.
Traditional Linux is kind of inherently for OS geeks, it assumes you want to have an install you keep for years that you tinker with and set up just right, whereas Nix seems to assume you want the install to be a commodity part, configured from some standardized options.
I rarely see any area of computing that isn't improved greatly by declarative tech, so I'm a bit biased.
I prefer graphical interfaces to declarative languages with escape hatches to a lower level form. I don't like what can go wrong with declarative tools or APIs that are too high level.
Don't get me wrong, SQL is brilliant, but I feel like when the complexity of the underlying system is high, declarative approaches become scarier and scarier. If something goes wrong or doesn't do what I need all those elided things are no longer elided and I'm now at the mercy of understanding all of it with no escape other than to upstream a change, kill a project, or change technologies.
The Linux ecosystem is insane, but so is every software technology of sufficient size. I sincerely do not need my downloading of some tool I've never used to be reproduced, more than likely I will uninstall it after a half hour of playing with it. Or if I. In a dire situation, pin a version
There are definitely different use cases, but I generally find that complex black box tools are generally near perfect in practice.
And a lot of the time, if there's a bug in the low level thing, it's in a less commonly used feature, and you can often reframe your project to do things in the same way everyone else does things.
If someone else successfully used a complex framework, I assume I will be successful too, as long as I use it in exactly the same way as them. Sometimes that requires hacks that have a performance hit, but overall it cam still be faster than writing your own code that you wouldn't have time to optimize.
I pretty rarely try any tool I wouldn't want pinned, since I don't tend to play around with the single-function more experimental stuff, and gravitate towards one size fits all kind of stuff(If I need to play a sound, I'll just use mpv, regardless of if there is something lighter or I don't need the features).
If you are interested in tinkering at all then the whole thing goes out the window and complex tools become an "Abandon all hope" kind of thing though.
I don't think you're aware of this but the individual you're responding to has a vendetta against Nix. Watch and you'll see shallow dismissals of Nix on every thread here by them. From what I can tell, they tried it once, got frustrated which hurt their ego a bit so they take it out on every post here.
Either way I like your comment and will refer to it for my evangelizing.
You're no longer learning/maintaining Linux - you're learning and maintaining Nix.