Hacker News new | ask | show | jobs
by anotherhue 1379 days ago
I’ve run most OSs under the sun. NixOS is a generation ahead.
2 comments

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.