Skip Navigation

Why aren't more people using NixPKGs?

Distro agnostic packages like flatpaks and appimages have become extremely popular over the past few years, yet they seem to get a lot of dirt thrown on them because they are super bloated (since they bring all their dependencies with them).

NixPkgs are also distro agnostic, but they are about as light as regular system packages (.deb/.rpm/.PKG) all the while having an impressive 80 000 packages in their repos.

I don't get why more people aren't using them, sure they do need some tweaking but so do flatpaks, my main theory is that there are no graphical installer for them and the CLI installer is lacking (no progress bar, no ETA, strange syntax) I'm also scared that there is a downside to them I dont know about.

114 comments
  • I maintain some software, and Nix is by far the hardest to deal with. To package config files are relatively complex, and to submit a package you have to download the entire Nix repo, which is huge. Getting a package to build correctly can be a challenge.

    It's a pretty large ask for software contributors, who may have to iteract with a half dozen different distros. Now, you could say, leave it to the distro people to do the packaging, but it remains a barrier for entry and is by nature exclusive.

    I don't use NixOS, so I have little motivation to stay conversant with Nix and, frankly, it's so demanding I don't bother anymore. I can make RPM, deb, and aur packages trivially, and without having to hold Gb of some package repo (which I otherwise don't use) on my disk.

    • git clone --depth 1 will clone a git repo without older stuff. Without this, the nixpkgs git repo is like 13-14 GB, but with a depth of 1, it's only 200 mb.

    • If you maintain upstream software and do not have an interest in learning and using Nix, please don't put the burden of packaging software in Nix onto yourself. Nobody in their right mind would expect you to package anything for a dozen distros; that's not how distros are supposed to work.

      Leave it to someone who is interested to package your software in Nixpkgs. Your "job" is to make your software better and provide a sane way to build your software that packagers can rely on (i.e. no assumptions where things are or are supposed to go, document your dependencies and build processes).

      If you do want to go the extra mile, offer your help in assisting packaging in the appropriate channels. You know the technical details of your software and Nix users how Nix packaging works but the reverse mostly isn't true, so cross-pollination can be super helpful here.
      Even just things like testing that your software works as you expect when the packaging is touched in some way (i.e. an update) is incredibly helpful. (If saw a package update PR with the upstream maintainer's approval stating that it works as they expect, I'd merge immediately.)

      If packaging for Nix is a burden for you, please just open an issue on Nixpkgs with links to your packaging/build documentation and let someone else do it for you.
      As a Nixpkgs committer, I'd much rather have someone invested in Nix build and maintain a package than an upstream maintainer who somehow feels obligated to do so but has no experience or actual interest as the former is more likely to produce good code and keep maintaining the package.

      • Sure. My point is that it's trivial to make and test packages for many distributions; it is harder to do so for Nix. It tends to get your software out there and used faster if you bootstrap the packaging - immediately, if you have an AUR account.

        IMHO, Nix is unreasonably harder. There are frequently small projects that don't get packaged for most distros. When I encounter these, I have a couple of options:

        • Submit a packaging request. Hope someone is willing to accept it. Wait until it is packaged.
        • Install it from source and let it pollute the core system. Hope this causes no issues. Manually track and maintain the installation. If lucky, the software lets itself be installed somewhere non-standard, in which case I can use stow and keep things a bit cleaner.
        • Throw together a package for it and let my distro manage the installation.

        The third option is preferrable to the others, for a variety of reasons, and it's easy on most distros. On Arch, I might submit the package to AUR, but I'll often just make a -git package and install it locally.

  • The way nix installs in my root directory in another distro is a no-go for me

    • I can reassure you that it does not encroach on anything the "host" distro package manager does and does not cause conflicts with it.

      At runtime, it only ever touches things in `/nix; it's self-contained.

      The only time Nix needs to interact with the host distro in any way is during install where it must place a little glue in your system configuration for things like PATH, bash completions or the nix-daemon to work as expected.

      • IIRC it puts a user owned directory inside the root. I have no clue what the total implications are in respect to privacy and security.

        The last time I looked the NIX solution to secure boot keys was to disable secure boot, making the largest attack surface on modern computers completely unprotected by default. The idea of leaving it up to the user to figure out keys and self signing was a giant red flag for me. My current workstation requires a shim as the bootloader that came with the device rejects custom keys and I didn't care to figure out Keytool on my own to boot into UEFI and try to change them by force. That knocked NIX off my list of complete distros to run. While I don't know the implications for the NIX package manager on another distro, this is the combination of real factors that formed my chain of reasoning about using NIX in both respects.

        I also ran arch for a few weeks once and am now extremely skeptical of any distro that presents anything that hints at "you figure it out yourself" complications for basic function. After Arch I went to Gentoo back when the Sakaki guide still worked and that was much more my style. I had something that just works, and made extra complications much more approachable. Specifically, I found documented entry points on things I didn't understand, approached in ways I found useful. I don't recall exactly what I was trying to do at this point, but with NIX I spent a couple of days trying to figure out stuff and went in circles. I think I had come across a NIX package for KoboldCPP and tried a bunch of stuff that didn't work.

        Anyways, I have nothing against NIX and might try it again one day. This is not bashing on NIX, or calling it inadequate. This was just my experience as a dumb user.

  • yeah, everybody should use them. I usually write my own kernel mods tailored for my hardware and certain needs, I don't know why not everyone is doing that. admittedly is a bit janky maintaining a separate kernel fork, but you get used to it, everyone should do it

  • My guess would be that it's because Flatpaks are easy. You have a handy GUI tool often pre installed that includes search and one-click install.

    If you want something lower level, Arch users have the AUR, and others may actually do that horrifying curl https://... | sh pattern.

    Nix pancakes on the other hand.... I have no idea how to use them and generally assume it's the thing NixOS uses. Since I don't use NixOS, I've never given them a second thought.

114 comments