Hacker News new | ask | show | jobs
by nylonstrung 102 days ago
It's unfair to act like NixOS just breaks "randomly" or is inherently unreliable

It's essentially deterministic and fully reproducible.

Issues with Bluetooth, electron etc as described are essentially irrelevant to NixOS and have to do with your configuration

2 comments

It's possible I have no idea what I'm talking about, but my understanding is that nixos relies on fetching things from third party URLs which may simply die. I feel a bit misled by the promises of nixos, because I cannot actually take the configuration files in 10 years and setup the system again due to link rot.

I was also under the impression that I could install DE's side by side on nixos and not have things like one DE conflicting with files from another DE, but this apparently isn't true either - I installed KDE, and then installed Sway and Sway overwrote the notification theming for KDE.

NixOS is very impressive but the marketing around it feels misleading. The reproducible claim needs a giant asterisk due to link rot.

Every system and package manager will be affected if it cannot download source code to build a package.

NixOS less so, because pretty much all source downloads that are not restricted by license are a separate output that will therefore be stored on (and downloadable from) NixOS cache servers.

I'm not sure what your expectation for this is in general, nobody can just wish into existence data that is just gone.

> I installed KDE, and then installed Sway and Sway overwrote the notification theming for KDE.

That sounds like you are using the nixpkgs modules to install the desktop environments (programs.sway.enable) rather than only installing the packages (environment.systemPackages = [pkgs.sway];). Both are valid, but there is a key difference:

The packages themselves cannot cause such conflicts because each package is just a separate folder under /nix/store. Nixpkgs modules both install the package _and_ configure additional settings which means that modules can interact with each other and possibly cause conflicts.

You can see it in the source for nixpkgs. This config block is applied whenever programs.sway.enable is true: https://github.com/NixOS/nixpkgs/blob/0590cd39f728e129122770...

It installs the sway package here: https://github.com/NixOS/nixpkgs/blob/0590cd39f728e129122770...

But it also edits other settings like adding sway to the display manager session packages list: https://github.com/NixOS/nixpkgs/blob/0590cd39f728e129122770...

What surprises/confuses me is: sway doesn't have notifications. You have to install your own (personally I use mako). So I'm wondering if this was a much greater change like system-wide gtk/qt theming, or did you also set up a notification daemon for sway and perhaps it was the module for _that_ which altered your KDE notifications.

(Just to be clear: I believe you that your notifications looked different, I'm just wondering about the mechanism through which they were altered.)

Personally, I don't like surprises so for 90+% of my config, I only install the packages (environment.systemPackages) rather than using the modules (programs.sway.enable) but that does mean I am essentially re-inventing the module for each package inside my own config which is a lot more work and requires a lot more nix proficiency.

> NixOS is very impressive but the marketing around it feels misleading. The reproducible claim needs a giant asterisk due to link rot.

It's a valid concern, though perhaps worth mentioning you will be able to restore your 10-year old config as long as the files downloaded from now-broken links are still in the Nix cache. Of course in practice, this is only useful to large organizations that have resources to invest in bespoke infrastructure to ensure supply chain integrity, since any `nix store gc` run will immediately wipe all downloads :(

Imagine a program with a compile error, nicely wrapped into reproducible build system (like a docker with tools or nix).

It is deterministic - compilation fails at the same line every time.

It is fully reproducible - anyone can get the same compilation error.

And yet it is not reliable at all, it's completely broken.