Hacker News new | ask | show | jobs
by myself248 1379 days ago
I'm a Linux idiot, just got sick of Windows, and took the plunge in 2016. (After some ill-fated tinkering in 1996 with Slackware, but we don't speak of that.) I started with Ubuntu and had a pretty good time for a year or two, until a dist-upgrade broke everything. Luckily /home/ was easy to restore from backup.

So I was fine for another two years on Ubuntu until another dist-upgrade broke everything again. Sensing a pattern, I decided to give Pop a try.

I'm now about a year into Pop and sure enough, a few weeks ago a dist-upgrade broke a lot of things, but unlike Ubuntu, I was able to find System76's tech support page, I ran the commands it suggested, and everything's fine again!

https://support.system76.com/articles/package-manager-ubuntu...

Miraculous, I tell you.

I still can't figure out why there are multiple versions of some things in the Pop Shop, but they all seem to work, so I'm not complaining, it's just weird. Someday I'll figure out this whole tiling-windows thing, but I think that's for people with bigger screens so I turned it off so my alt-tab reflexes work again.

In general, it just works, and that's more than I can say for Windows or Ubuntu at this point.

8 comments

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.

[1]: https://github.com/mzur/gnome-shell-wsmatrix/issues/236

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.
I'm using 22.05 actually. I blame Gnome, as it seems to be in a perpetual state of instability.
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.

I’ve run most OSs under the sun. NixOS is a generation ahead.
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.

How does NixOS compare to running Debian Stable? I've never had problems with upgrades breaking things on Debian stable.
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 got there by just using Arch Linux. Funnily enough, when I tried NixOS, I managed to brick my system by running a system-wide upgrade and rebooting.
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.

That's the lovely thing about Nix. One line change, and poof, kde is gone from your system.
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.

Other than that, NixOS is a godsend.

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.

Once again, why wouldn't you keep the last few generations around? No network is required to use them.
Answering your question: ENOSPC

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.

> You can easily have a bunch of generations you just think are ok.

Unless you erase your darlings: https://grahamc.com/blog/erase-your-darlings

I find switch to be a bad idea, better to build a new generation and reboot into it. Less inconsistency.
You can set Pop OS' themes under Nix based GNOME desktop with ease.
Noob here. Why is Linux breakage even a thing? Is it complete rewrites, new drivers, a design decision?
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.
Late binding exposing issues that cause run time exceptions. Except it’s not functions it’s bins in in paths. (Or shared objects (shudder))
I just found peace in using debain with bootable btrfs snapshots
Broken updates is one of the big reasons I switched to Alpine Linux.
Hah, I ran into that same upgrade breakage a few weeks ago too! I'm still cleaning up some of the mess but was mostly back within half a day.
What kind of break is this? Is it like you can't even boot into the tty, can't get from tty to graphical environment or just your user applications stopped working?
Typically about half my applications stop working, they crash on launch. Or sometimes the machine won't even finish booting -- I'll get past the decryption password entry, it'll mount some things and then spew a thousand lines of "BPF: Invalid name" error messages and just stop there. I found if I hit Enter that I was sitting at a prompt, already logged in, but couldn't figure out what to do from there.

However, I'm an old DOS nerd so mashing keys on boot is one of the first things I try. Pop has a bootloader that let me revert to the previous something, I guess that's an older kernel? And that loaded right up and got me into the GUI and all my apps worked and everything. So from there I found the "incomplete upgrade" support page, ran those commands, and rebooted again and tried the newer kernel again, and it came right up, all fixed.

Thanks for sharing. Thats indeed broken. I see people complain about Linux breaking on updates (not just about pop but almost about every distro), I was wondering what it means for the OS to actually break.
The first noticeable breakage was settings for VINO (vnc server) got reset and vnc was my only way to remote desktop in. I had to hook up a monitor, mouse, and keyboard to fix this. It also broke python somehow (I can't remember exactly what happened here) and caused a bunch of my build scripts to break. Fix was to re-install python3 and set alternatives.
I really tried to like the window tiling, and I definitely see the advantages, but didn't quite get to the point at which the shortcuts were second nature.

There were also a couple janky bugs at the time, but perhaps they've been fixed now. The cool thing its it's so darn easy to switch back and forth!

To each their own but I have used ubuntu for years now and upgrades have never been a problem for me.
I think the problem here is that you cause breakage without ever gaining the knowledge of why. Pop_Os might break on you just the same as other distros might, because it's very likely a manual operation that got you there.

"Miraculous" belongs on Windows or OSX, not Linux.

To be perfectly clear, the "miracle" was finding a clear and cogent support page that addressed my issue. I was back in action like ten minutes later.

The technology itself is nothing special. Knowing that it may break, and positioning resources where search engines can find them, and making the resources readable enough to understand which one to try first, is what sets System76 apart here.

When I ran into the same problem on Ubuntu I wasted a week using my other machine to search forums, mailing lists, bug tracker tickets, visit IRC channels (and then leave the machine on to lurk in the channel in case of a reply...), and try any web result I could find that seemed to address my issue. I sunk probably 30 or 40 hours in, and made zero progress, before finally giving up and deciding to install fresh and restore /home/ from backup. I'm sure the resources were out there for someone who knew what to search for, but that's one of the things about being a Linux idiot, I've only been doing this a few years and I've found it incredibly hard to learn the art of divination to resolve "half my apps crash on start" to "package manager problem". There's just no hand-holding for that, you're expected to just know it.

> you cause breakage without ever gaining the knowledge of why.

Exactly.

The acute irony is that I strongly suspect that the Pop_OS support page may have fixed my broken Ubuntu installations too, but I didn't find it while I was searching for Ubuntu issues.

> but I think that's for people with bigger screens so I turned it off so my alt-tab reflexes work again.

I actually use tiling the most in my small screens.... because I effectively have 1 or two windows full screen or split. It's the hotkeys that make it really slick

Same here. Since I started using tiling window managers I stopped using external monitors. This is one place Linux helped me cut expenses...
I have used tiling wm's for a while now, on the desktop and on the laptop. I have to say its made the laptop productivity so much better and shines even better on a smaller screen IMO. Thats a combo of not just tiling but often swapping virtual desktops that is a key part of tiling wm usage.
you want Debian. dist-upgrade never broke on me in 25 years of usage
Once you know your way around APT and dpkg, you can work through any issue you might have during an upgrade on other Debian-based distros, too. The copy of busybox that Debian-based distros package and ship even includes dpkg, so you can repair even a broken libc.

Most end user issues with upgrade breakage on Debian downstreams like Ubuntu and Pop!_OS wouldn't be serious problems for experienced Debian users.