Hacker News new | past | comments | ask | show | jobs | submit login

OTOH, if you're like me, and want to update to get a new version of one package (and its dependency tree), it's a very common experience to find out that some completely unrelated option has changed in some backwards compatibility breaking way such that I never had to deal with when I ran Arch Linux.

You can use nix-env -i of course, but then you have a duplicate package (that can be out of sync and easy to forget about) and this doesn't work for anything with a systemd service.

I like that I can't really fuck up my NixOS installation, but I actively dread updating (although it's got a lot better in the last year). I'd love a NixOS alternative that took backwards compatibility a lot more seriously.




One of strengths and at the same weaknesses of Nix is that it is not very opinionated. That means there are many ways of doing the same thing. I'm wondering how were you backporting a new package.

For example pgbouncer version that was used was a bit older than I wanted, I was easily able to update the derivation and also enable c-ares name resolution by overriding the derivation like this:

  pgbouncer = pkgs.pgbouncer.overrideAttrs (oldAttrs: rec {
    name = "pgbouncer-${version}";
    version = "1.11.0";

    src = pkgs.fetchurl {
      url = "https://pgbouncer.github.io/downloads/files/${version}/${name}.tar.gz";
      sha256 = "0w3y53kwnkcm9fmf28zbjvqk6ivfic5f2k3nflvca1i8iaj2z044";
    };

    buildInputs = with pkgs; oldAttrs.buildInputs ++ [ pkg-config c-ares ];
  });


I'm not even talking about backporting, rather updating to the latest version in NixOS unstable means running nixos-rebuild switch --upgrade... And this often seems to fail due to non-backwards compatible changes. Sure, it happens more on unstable, but the software in stable is often too far out of date or worse, broken (e.g. by the download link expiring).

Updating the package is typically a means to an end—this month I had to upgrade emacs due to a melpa package update, and python due to a work script requiring 3.7.3—the last thing I want to be doing is maintaining my general system. Even writing an override feels a bit ridiculous (it's right there in the channel!).

What I inevitably end up updating my nix-env channels and using nix-env -i to install the new package. This works most of the time, but the insidious thing is that I usually forget that I even have this dynamically installed package, and never update it. That is, until it breaks my system in some subtle way.

So yeah, if something came out with all the benefits of NixOS (and I love the nix package manager, the safety it provides, and the pure functional declaration of all the dependency trees), but with the respect for not breaking backwards compatibility that you see in functional programming communities like Clojure, then I would be in love.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: