How does it stack up against traditional package management and others like AUR and Nix?

  • Shareni@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    8 months ago

    How does it stack up against traditional package management and others like AUR and Nix?

    I only used AUR for a few packages (<5 at a time). It’s to be avoided and only used if the other options are a massive pain (unless it’s an official package).

    Then I left Arch and eventually landed on MX. During that time Nix with home-manager has slowly replaced flatpak, and I don’t even have it installed anymore. Nix is better in every way, except for ease of use.

    Flatpak has great gui integration (for gui tools). You can click through everything, and the updates are unified. It usually works perfectly fine if you just need to install a few programs.

    With nix, there’s a lot more setup, but there are many benefits. You end up with a list of packages, and that’s really useful because you can take a fresh install, install nix and home manager, and then run a single line to reinstall everything. You can rollback updates, pin specific versions, install packages from a repo (if it has a flake.nix with outputs), and also configure them. I’m using the unstable branch, and it’s giving me bleeding edge packages on Debian. And there’s no risk of outdated system libraries, like with flatpak, because it provides everything.

    • Guenther_Amanita@feddit.de
      link
      fedilink
      arrow-up
      0
      ·
      8 months ago

      That all sounds great, thanks!
      Do you have any tips for an “easy” start, where everything is already pre-configured?

      • Shareni@programming.dev
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        6 months ago

        Nope, and that’s the worst part of nix. I’m actually planning on writing a short startup guide, but I need to solve a few more issues first.

        But, this should help you out until then:

        The home.nix should be automatically generated, and that’s where you put all of your packages. I left a few as an example.

        NixGL is needed to use openGL (nixGL lutris for example). It works in most cases, but I couldn’t get alacritty or kitty to work. There are some ways to have packages automatically use it, but I still haven’t tried them out.

        Flake allows you to select the correct nix repo (stable/unstable), appropriate home-manager version, and add outside packages like nixgl. It’s technically not necessary, but I wouldn’t go without it. Here I’m using the unstable repository, check the relevant docs if you want to go with releases instead.

        The equivalent of apt update && apt upgrade is nix flake update && home-manager switch --impure. I like cd-ing into the nix dotfile directory (all of the files are in there and symlinked to ~/.config/ locations), but you can also use command line arguments to point to the flake.

        nix flake update updates the package definitions to what’s in the repo

        home-manager switch install them, and also updates any configs it’s managing. The --impure is only needed if you’re using nixgl (bad build commands depend on system time).

        nix-collect-garbage to force a clean up of unused packages

        https://search.nixos.org/packages makes searching for packages a lot easier

        https://mynixos.com/search?q=home-manager+ same, but for finding options to configure packages through home-manager

        Comment if you need help

        update: removed nixGL from flake and home, installed it through nix-channel in order to not use --impure during home-manager switch