If you look at my comment history, you'll see I'm a bit of a broken record, but my records don't break anymore after switching to NixOS. It was precisely the breakage after every upgrade that got me to try it. With declarative config-based reproduceable deployment that can be rolled-back, the broken OS doesn't need to be a thing anymore.
I think it's worth adding that NixOS probably will require more effort to use than the "it just works" UX that GP seems to be wanting.
Getting familiar with nix can take some time. e.g. figuring out how to write a Nix package if there's not a package already can be difficult.
When things work in NixOS, it really does feel very nice to know you have a declared config (so that you don't have to worry about what changes you made). When things don't work in NixOS, it may be quite demanding/challenging to fix.
You could say the same about Linux in general. It does takes some time to really get comfortable with the complex surface area of the system, but once you do, the benefits are tremendous and without doubt. Same goes for programming languages, driving a car, learning guitar, etc. I don't think people really understand the fundamental shift of moving to declarative config. It's absolutely worth the cost of admission and offers "superpowers" for many of us. Others may not need or desire these powers, and Ubuntu or Windows or MacOS will do the job.
Ah, sure. I think it's worth the cost; but I also think it's not a cost everyone wants to pay.
In a way, I think most of the "I tried Nix/NixOS but didn't stick with it" comments are about its learning curve.
I'd make comparisons to other tools: VSCode does the job pretty well without having to learn anything, but many people will learn tools like vim, & emacs. (The latter isn't just out of legacy; kakoune & helix seem pretty neat).
Still, I'd gate these power-user tools behind "you need to take the time to learn them", rather than a general recommendation.
I just had NixOS break in a weird way for me. Ok, it was more that Gnome 42.4 broke the wsmatrix extension, which caused Gnome to shit itself[1] on login.
It's a little bit of a double edged sword. NixOS lets me use pretty much straight upstream packages, which sometimes break due to not having thorough integration testing like a traditional distro would. On the other hand, I was able to just boot up an older configuration to get back to functional, and that let me figure out wtf was wrong.
To be fair, this would also happen on any other OS that's tracking upstream changes. It sounds like you might be using nixos-unstable, which is unfortunately susceptible to those problems. Like colordrops said though, rolling back your OS is a thankfully a cinch. Even if someone managed to rm -rf / your box, a fresh reinstall with your complete dev environment is less than 10 minutes away, if your internet connection can keep up.
That's a very reasonable conclusion, it is technically GNOME's fault for refusing to implement a stable extensions API after nearly a decade of breakage.
> On the other hand, I was able to just boot up an older configuration to get back to functional, and that let me figure out wtf was wrong.
I would count this as not breaking. I mean... on most systems, you are borked if an upgrade fails and now need to boot a live CD. I've never had that happen on NixOS. I had it happen only once, and that was due to a bad ZFS setting that the OS couldn't possibly have fixed (weird BIOS thing where the SATA drives came up incorrectly).
Assuming you are just rebooting after upgrading, and it broke, the bootup screen allows you to choose an earlier generation to boot, so you will be right back at a functional system with zero effort. You can then go to your config and roll back that change.
Yup. NixOS was the first OS I used where upgrades weren't a big deal. No time waiting for upgrades. No time worrying about them. No time not upgrading due to concerns about downtime. Systems do not break in weird ways, ever. Nix works exactly as advertised. The store is sacrosanct and nothing ever breaks. Lovely experience. Been running for almost five years now on the same setup. Run my mail servers on it too. No downtime (aside from like restarting once in a while due to hw upgrades). Extremely easy to use.
It's a waste of time learning all the debug and repair steps. With NixOS nothing breaks. No need to waste brain cells.
I realized how great it was when a friend asked me to fix his windows computer and I realized I had no idea that computers even broke in those ways anymore.
> Yup. NixOS was the first OS I used where upgrades weren't a big deal. No time waiting for upgrades. No time worrying about them.
One of my favorite lesser benefits of using NixOS is that running a big system upgrade doesn't even stop you from installing software while it's running. Realize you need a new program while your system upgrade is running? No problem! Add it to your NixOS configuration for posterity if you like, then run it in a Nix shell or install it to your user profile. No need to interrupt the upgrade or wait until it's over.
Yes, though it can be lot better (and never will):
- there are no types in nix
- the debugging capabilities are limited
- there is no "slot" concept nor the edges of dependecy graphs may be tagged
- it's hard to make contributions because they press on you a lot about minor formalities, e.g.they require you to squash commits manually and deliberately don't want to enable one-click squash in Github settings, P/Rs and issues are getting ignored (even critical/security issues), etc.
Nothing structural about the way NixOS works at a technical level prevents it from being as stable and battle tested as Debian Stable, but it isn't in practice by my experience.
I would bet money that most people who are singing praise for NixOS have sunk significant time into absorbing the whole NixOS way of doing things, learning the Nix language, tinkering with their machine config, diagnosing non-trivial problems, etc.
It is just a smaller community and younger project. NixOS is nowhere neat as stable. The security story is, comparatively, simply not present (e.g. there is no equivalent of https://www.debian.org/security/ that I can find). The user base is tiny in comparison. Packaging up stuff for NixOS often requires non-trivial patches, downright hacks, or wrapper scripts for binaries that can break assumptions made by upstream and lead to little paper cut issues.
NixOS is many things, but it isn't a Debian Stable. They fill different roles. Debian is a mainstream distribution, and the problems you'll have will be similar to the problems most people have, so you'll be swimming with the tide and be able to find help. I see NixOS more as a rolling release distro that gives you a mechanism and programming language to control configuration and rollback, but a lot of those 80K NixOS packages are just kinda sitting there packaged up in a way that kinda worked at some point but isn't really solid.
I use Nix as a package manager on top of Debian, to bring in development tools, etc. This is relatively easy. When I tried using it as an OS I had to spend way too much time figuring out weird issues.
I'm running NixOS unstable, with flakes, and while my code is an unstructured mess NixOS gives me a couple of things.
* Bleeding edge packages
* Bleeding edge alternative packages (Try wayland an pipewire without being scared)
* Upgrades that doesn't evaluate changes nothing (except disk space)
* Upgrades that evaluates but doesn't work ("never" happens) are atomic and can be rolled back from (unless you mess with boot, but even then booting NixOS livecd, mounting things up and running the install command will get you back)
* Things that aren't in your config doesn't exist in your system
* Identical systems across machines (with configurable differences)
The difference is huge, but some things are a pain in the ass, so I use "distrobox" too for small one-off things, it manages podman to set up an OS container for me that shares my homedir and such (so I get all my dot files in there too)
* You'll learn to appreciate systemd
* You'll eventually learn a bit of FP
* Once something works, it keeps working.
There are more pros, and I didn't list any cons, but with fistrobox you can hide many warts where your FP skills are lacking.
So to answer your question, upgrades between versions will probably always break for you, but they'll break on build time, so you fix them (mostly deprecated/moved options) and then it's all fine and dandy, rather than your system being broken.
Any other package system feels like a house of cards. Nixos feels like you’re compiling your desktop, with full error and type checking. It’s much more like software develop than administration.
I definitely appreciate the documentation with Arch - I've used it as a reference countless times. Now imagine having this all codified! We should join forces. With our combined strength, we can end this destructive conflict and bring order to Linux!
I use Arch Linux and really appreciate it for the documentation and the rolling release. I wouldn't say it's intuitive for a Linux beginner, though. Expected features don't exist until you go out of your way to install and configure them. Updates often require some finesse at the command line.
Ubuntu works well as long as you install an LTS release and then only upgrade to the next LTS at the end of the support window for the previous release.
Tangentially, I'm getting bored of my desktop environment, and wouldn't mind mixing things up. I've been using cinnamon. I am hesitant to try KDE because of all the GUI dependencies it would presumably install.
> I use Arch Linux and really appreciate it for the documentation and the rolling release. I wouldn't say it's intuitive for a Linux beginner, though. Expected features don't exist until you go out of your way to install and configure them. Updates often require some finesse at the command line.
I've been very happy with Manjaro KDE Plasma which I installed maybe two years ago. It's been my main OS since then and I've never had a single problem.
When I installed it on my somewhat unpopular laptop it was the only distro that "just worked". I tried Pop!_OS, Fedora, KDE Neon, EndeavourOS and Kubuntu and some other ones without luck. Pop!_OS didn't even boot.
On Manjaro everything (except for Nvidia graphics) just worked. From thunderbolt to sleep and display switching. The Nvidia setup could've be smoother (needed a slew of terminal commands), but once set up it works. Actually it was my dad that recommended Manjaro as he had exactly the same experience with his laptop.
Debian based distros has given me headaches every time I try to dist-upgrade (following every recommended step). It's still a mystery how that process can be so unreliable considering Debian has been around for ~30 years. It was not long ago that I broke Raspberry Pi OS at dist-upgrade. Luckily, Manjaro KDE Plasma is available for the Pi as well.
Manjaro gives me rolling releases and stability. openSUSE Tumbleweed looks kind of interesting, but Manjaro is working and and at this time in life I've got better things to do than to distro hop.
Hi colordrops I indeed checked your comment history :) would love to get in contact regarding support for our NixOS based infrastructure. Does Telegram @philon or Matrix philon@philon.tube work for you?
Try a buggy kernel and breaking your network in one `nixos-rebuild switch`, garbage-collecting older working generations and trying to fix your config back into working state. Great fun.
Why would you garbage-collect older working generations without testing whether the latest works. You'd have to go out of your way to do that, and it goes against the entire purpose of it.
Not every bug manifests itself right after reboot. You can easily have a bunch of generations you just think are ok.
The point is entirely different: if you update the channel-list you need the network for any changes to the configuration and I don't know of a way to go back to an earlier channel state.
> The point is entirely different: if you update the channel-list you need the network for any changes to the configuration and I don't know of a way to go back to an earlier channel state.
`nix-channel` does have a `--rollback` flag to it.
However, I feel that Nix Flakes would allow you a better experience. With nix flakes, the revision of the nixpkgs input is persisted in a lockfile. You could check this file in somewhere, and then getting your working directory back to a known working state is much easier.
This is not a support forum and we're not trying to diagnose and fix someone's issue. It's just not that hard to get into trouble with NixOS and there's still a room for improvement, that's all.
Reading on `nix-channel --rollback`, it should definitely help in some cases and I don't know how I missed it, maybe the docs weren't clear it's not tied to config generations or I just didn't pay enough attention.
It's built by a conglomeration of users across various projects, with differing levels of quality and support. There is only so much a distro maintainer can do to curate and test and avoid breakage. The permutations are too many for any manual process to handle, so you've got breakages.