Okay, so hear me out…

My interest was piqued when I started knowing more and more about NixOS from the recent “I use NixOS btw” wave everywhere. The main selling point for me was the one config file to rule them all. I have always wanted something like that on Arch. And here it is with a dose of immutability, and extra stability in the form atomic updates and whatnot. You also had the option of turning it to a rolling release model; that’s awesome! What’s not to love then?

So, I kept reading even further about NixOS. I got to learn about how the Linux root structure is almost completely different. Building packages from the source follows a completely different procedure. Configuring anything in your system will rely on the main config file, instead of executing the standard terminal command, or editing their respective config file. The list goes on…

I understand that all of this is done by design. They are not flaws, per se. Rather the means to facilitate the philosophy that every NixOS user is after. However, that also does not mean it is inherently flawless in the grand scheme of the entire ecosystem. I personally love Linux, and would always want to grow with my knowledge in how I handle and get things done in it. Wouldn’t me disconnecting away from that, in favour of the NixOS’ arcane methods, just hurt my progression in my Linux learning journey?

This is a genuine question, of course. I have been thinking about this for a few days now, unsure of whether I should change course and get into it or not. I also do not have the time to use other distros aside from what I mainly install; I would be all in. So, what do you all think?

  • 2xsaiko
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    I feel like that’s not really true beyond surface level. Sure, if you just use NixOS’s existing configuration and nothing else, you might not really come into contact with how it works under the hood, and I totally get how that might be your first impression. But I often write such modules myself and I think the low-level parts you use there are still very similar to how standard Linux systems work. The root filesystem doesn’t use the standard layout but it is still used inside packages and inside your current system link (/run/current-system/sw), for example.

    Packages themselves too I would say aren’t too different from how they work on e.g. Gentoo (which also has a lot of abstraction around the actual build commands with eclasses), of course with the exception of the language.

    The thing that I would say is very different is actually configuring packages, that’s true. But in the end that just usually places a configuration file somewhere and you can read how that gets put together in the module’s source code. NixOS isn’t the only system that does that, I think Ansible does it to an extent, for example, or openSuSE’s YaST.

    Every distro has stuff that is only applicable to itself. NixOS does have more than usual of that, that’s true. But if you want to learn “pure Linux”, build an LFS system ;) In my experience NixOS knowledge is still useful in other distros and the other way around.