Hacker News new | ask | show | jobs
by _piif 1274 days ago
In addition to what the other replies mentioned, it's also possible to fall back to other methods like flatpak or a container (which programs like distrobox make very easy to set up and integrate with the host) in case a package in nixpkgs is either non-existant, outdated or broken and you don't have the knowledge or the time to create / modify the derivation yourself.

For instance, personally I have everything gaming related set up inside an Arch container so I can trivially follow upstream (or the master branch for Mesa) without any friction and it works wonderfully.

1 comments

> In addition to what the other replies mentioned, it's also possible to fall back to other methods like flatpak or a container

That, or simply using pkgsrc.

It also provides versioning and decoupling from the system, but also has the benefits of working on any Unix and to be predictably updated. It's also far more KISS than any aforementioned solution.

The only real downside is the build time, as pkgsrc is more or less a managed federation of Makefiles. Installing software can take more time than would solutions based on binary packages, but it's totally worth it for the technical simplicity it brings to reproducible userlands.

> The only real downside is the build time, as pkgsrc is more or less a managed federation of Makefiles. Installing software can take more time than would solutions based on binary packages, but it's totally worth it for the technical simplicity it brings to reproducible userlands.

I always install Pkgsrc via Joyent's installers¹, and use `pkgin` to perform package installs. Most packagws thsn install from binaries. Seema to work pretty well!

I still mostly stick to Nix, but I highly recommend Pkgsrc over Homebrew/Linuxbrew. It plays nice with other package managers and is generally well-behaved. Not a bad escape hatch for Nix if you feel like you need one.

--

1: https://pkgsrc.joyent.com/

Arguably, Nixpkgs is also just a managed collection of (Nix) build recipes :) Except that due to mandatory reproducibility, it’s both more complicated and more amenable to caching of build artifacts (on Nix “substituters” ex “binary caches”).