I’ve been hearing a lot about it lately and I’m intrigued, but also utterly confused.

Is this a Linux distro I’d install on bare metal because it offers a new way of package management that addresses the issues other distros have?
Is it something I install in the distro I currently use?
How does it work and what does it do?

I’ve tried to read https://nixos.org/guides/how-nix-works but the first sentence is

“Nix is a purely functional package manager. This means that it treats packages like values in purely functional programming languages such as Haskell”

and that’s where it lost me. Thanks for helping me understand!

  • ck_@discuss.tchncs.de
    link
    fedilink
    English
    arrow-up
    5
    ·
    edit-2
    1 year ago

    The Nix / NixOS documentation is notoriously bad and that sentence is a prime example.

    My advice, you can probably get on quicker with YouTube than with the official documentation. Or you can just muddle through like I did. Might take you longer though.

    I’ll take a shot at unpacking the functional part though: Imagine a system like a math equation, like “solve for x”. The system is the result of that equation. You define a couple of constants, like “I want it to run KDE” and nix will try to fill in the variables, eg. to run KDE you need bash, python, Wayland, etc. Like in school, you can break this equation down further, eg. to solve for Wayland, you need wlroot, mesa, some libs, etc. In the end, nix will solve your equation to a system that has everything that you want. Not only packages, also systemd units, your whole /etc and so on.

    It’s of course much simpler to imagine it like this. NixOS essentially builds your system from the ground up using a configuration file instead of by running a bunch of commands. Each configuration change produces a new system in the same sense that 4 = x + 3 solves differently than 5 = x + 3. The essential part is that Nix always solves the equation forward, if you will. So where apt-get install foo-service would put a line into /etc/groups, changing the file in place, Nix would replace the whole file because it knows what the file has to look like at all times given the configuration. Further more, it keeps the old configurations around. So if you liked your system better solving for 4 than for 5, you can just go back. Since Nix knows exactly how the system needs to look for 4, there is no “mess” because it does not need to remove things. It always builds forward.

    Hope that makes some sense :D