Hi everyone!

I saw that NixOS is getting popularity recently. I really have no idea why and how this OS works. Can you guys help me understanding all of this ?

Thanks !

  • featherfurl@lemmy.ml
    link
    fedilink
    arrow-up
    4
    ·
    edit-2
    1 year ago

    Here’s the straightforward version of why I use it:

    1. The entire state of your operating system is defined in a config file, and changes are made by changing the config file. This makes it super easy to reproduce your exact system many times and to know where all the many different configuration elements that describe your system are located.

    2. Updates are applied atomically, so you don’t have to worry about interrupting the update process and if it fails, the previous state of your system is still bootable. By default every time you change something, you get another option in the boot menu to roll back to.

    3. Making container-like sub systems is super easy when you’re familiar with nix, so you can have as many different enclaves as you like for different software versions, development environments, desktop setups, whatever without taking a performance hit. Old versions of stuff are very accessible without breaking your new stuff.

    4. The package manager has a lot of software and accessing nonfree stuff is straightforward. Guix looks rad, but nix ended up being the more practical compromise for my usecase. I didn’t want to have to package a heap of software the moment I made the switch.

    • SolemnAttic@feddit.de
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      This very much. I used to have lots of unchecked config and state files everywhere on Arch. Now everything is checked in and wiped on boot so if something breaks after a reboot i know what broke.

      Like how the opengl rendering did due to nixpkgs version differences

    • tetris11@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      You forgot to mention: cross-compiling binaries for other architectures has never been so easy. You can even make them static builds.

      It’s breathed new life into my old synology NAS which is stuck on an old Linux 3 kernel.

  • mrh@mander.xyz
    link
    fedilink
    arrow-up
    4
    ·
    edit-2
    1 year ago

    I daily drive GNU Guix instead, and I would strongly recommend any emacs and/or lisp enthusiasts interested in the benefits of functional, reproducible, declarative, and hackable system management to give it a try!

    • NCR Ranger@sh.itjust.works
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      Do you run the gnu guix distro or just use the package manager? Because iirc it uses only free software, even for drivers. So I imagine it is not that easy to find compatible hardware.

      • mrh@mander.xyz
        link
        fedilink
        arrow-up
        2
        ·
        edit-2
        1 year ago

        I run the complete system. It’s true that the standard iso comes with the linux-libre kernel and the standard channel (think repo) contains only free software. However there is the nonguix channel which comes with the full linux kernel, and all the proprietary drivers you could ask for.

        Nonguix offer an iso with the full kernel too in case you have a proprietary wifi card and don’t have ethernet for the initial setup. The nonguix README I think is pretty clear, but Systemcrafters also made an excellent guide for doing this.

        My wifi card unfortunately requires proprietary drivers and I have personally never had an issue with guix + nonguix for all my software needs, proprietary and otherwise.

        Hope that helps profligate!

        • noisytoot@lemmy.ml
          link
          fedilink
          arrow-up
          1
          ·
          1 year ago

          Does it actually require proprietary drivers or just proprietary firmware? I don’t know of any wifi cards that actually require proprietary drivers on Linux.

        • bc3114@lemmy.ml
          link
          fedilink
          arrow-up
          1
          ·
          1 year ago

          Nice! I gotta try guix(package manager) on my arch now, not sure if I want to use full guix system yet:)

  • Tilted@programming.dev
    link
    fedilink
    arrow-up
    3
    ·
    1 year ago

    I used NixOS for a couple of years. My experience is like this:

    1. It is a rolling release (mostly)
    2. You write a declarative configuration for your system, e.g., my config will say I want Neovim with certain plugins, and I can also include my Neovim configuration
    3. It is stable, and when it breaks it is easy to go back
    4. Packages are mostly bleeding edge
    • priapus@lemmy.one
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      Important to note that NixOS has both a rolling release and point release version.

    • Atemu@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      Note that there’s both the rolling unstable channel and a bi-annual stable release channel.

    • SirNuke@kbin.social
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      Are you still using it and happy with it? I’ve been increasingly using single purpose dev VMs in a server, and a declarative configuration system would make the process of spinning them up faster and more robust. My current shell script system is clunky, and I’ve been looking at Ansible.

    • Faresh@lemmy.ml
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      1 year ago

      Doesn’t it have a garbage collector like guix does (guix gc), which cleans up everything in the store that isn’t needed anymore?

  • le_saucisson_masque@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    I keep seeing trends with Linux distribution like teenager looking for new fashion.

    I think it’s mostly the very young Linux user who hope from one distribution to the another over and over whereas many just stick with what they got : Ubuntu, Debian, mint, maybe fedora.

    NixOS is certainly interesting tho.

  • Syboxez@lemmy.world
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    1 year ago

    NixOS is a fully declarative and reproducable system.

    What this means is that you can create a single configuration.nix, which includes all of your applications, settings, aliases, environment variables, user account + groups, etc., and copy that over to another NixOS machine (including different architectures) and run nixos-rebuild boot to completely reproduce the system on that other machine.

    The nix package manager is also really good at telling you if the configuration will break anything, where, and how, and refuses to apply until the issue is fixed.

    Also every time you use nixos-rebuild, it creates a new generation of your NixOS install meaning if something ends up breaking, you can reboot into the old system.

    So for example, I can theoretically have the exact same configuration across my desktop, laptop, phone, server, etc., minus the automatically generated hardware-configuration.nix, which is specific to the hardware.

    Also Nix supports package overlays, which means that you can modify an existing package while the maintainer still keeps it up to date.

    • Thenonymous Rexius@lemmy.dbzer0.com
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      1 year ago

      Oh boy my two cents time!

      I love the concept of NixOS. A fully declarative , reproduceable system from a single config repo! Sounds theoretically like it would be my kind of thing.

      Sure, theoretically, I could have a fully reproduceable system. The time spent declaring that fully reproduceable system though… I remember the first time I was trying to get my usual disk setup of, a luks encrypted btrfs partition with multi-factor enabled decryption/authentication.

      On a normal install it would take like a day at worse to install your distro. My first attempt with NixOS took me almost 4 days of screwing around in configs. 2 of those days were probably cumulatively spent waiting for the config option list of the nixos manual to search for text. And the number of redundant config options which all do the same thing! Or, are supposed to all do the same thing but in actuality, only one of them does the thing they are supposed to.

      I really want to love NixOS but it always ends up feeling like an exercise in my patience and time to do even the simplest of things. As such I find myself asking the question of, am I going to spend so much time reinstalling my distro that it’s ever worth this initial investment?

      Anyways, rant over. I actually have been debating switching back over for another try again myself I just have some very frustrating memories of my first attempts with the distro.

  • fazo96@lemmy.trippy.pizza
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    I have been using for years on servers. My lemmy instance is hosted on it.

    Although for desktop I had too many issues back in 2019 so I ended up back to Arch Linux and then EndeavourOS

    Would be fun to try again to use it on desktop

  • lloram239@feddit.de
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    1 year ago

    NixOS is the only[1] Linux distribution that feels like it is build around Free Software. Meaning upstream Git repositories can be treated as first-class citizen and installed directly without convoluted binary packaging system (that still exists in the background, but only as cache to speed up build times). Nix also makes it very easy to upgrade, downgrade, side grade, patch, override dependencies or otherwise change packages, or even just keep multiple versions of the same software around. Something many other distributions still struggle with or make completely impossible with the distributions own tools. Even the act of installing software in Nix becomes somewhat unnecessary, as you can just run software straight from the Git repository.

    And best of all, it’s all based on a very simple and transparent packaging system, if you ever used GNU stow, kind of like that, it’s all held together with a bunch of symlinks and some environment variables. No contains, no ostree, none of those ugly workarounds, just plain old Unix stuff that you can find and grep through as much as you like.

    Simply put, NixOS puts the joy back in Linux, while other distributions like Ubuntu try to actively trash their reputation with a proprietary App store and others like Debian just stagnate around and are still stuck with the same old packing system that was state of the art 25 years ago and hasn’t improve much at all since than. NixOS just provides a dramatically cleaner and simpler approach that also happens to be vastly more powerful.

    Another cool thing, if you don’t wanna switch distributions just yet and reinstall the full NixOS, you can just use the Nix package manager itself on whatever distribution you are already using.

    As for downsides: Nix does not play nicely with packages, scripts and programs made for other distributions, like at all. /usr/bin/env and /bin/sh are about the only files it has in common with other distributions, the whole standard Linux file tree is completely empty otherwise. There is buildFHSUserEnv to work around that, but that requires a bit more knowledge and effort from the user.

    [1] There is also GNU Guix, which is basically a reimplementation of Nix with Guile/Scheme

    • Speedmaster@lemmy.ml
      link
      fedilink
      arrow-up
      1
      arrow-down
      1
      ·
      1 year ago

      That is the main reason I can’t use my laptop with linux. It has a 3060 in it. I work as a dev and need to use 2-3 external displays with my laptop. The driver combined with x or wayland is atrocious, I tried 20 distros and I can’t get it to work. The saddest thing is that none of the tech is exotic in any way. It’s just HDMIs and AOC 24 inch monitors…

  • Herbstzeitlose@feddit.de
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    Because it’s the latest Cool Nerd Thing™ like Arch before it, and Gentoo before that. Most of the people raving about it probably don’t have much use for its features.

    • IDe@lemmy.one
      link
      fedilink
      arrow-up
      3
      ·
      1 year ago

      The features themselves are very useful for basically any user. Whether they are worth the non-standardness and issues that come with it is another question.

  • 20gramsWrench@lemmy.dbzer0.com
    link
    fedilink
    arrow-up
    1
    ·
    edit-2
    1 year ago

    I’m really not sure of where this would be anymore usefull than a simple bash script to install all packages you need since it doesn’t do configs and that rollbacks are supported by some filesystems already. Also Having version specific dependencies is already a thing for flatpacks and such

    • priapus@lemmy.one
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      A simple bash script is not reproducible or deterministic. Also a filesystem rollback is not the same as NixOS’s generation based rollback.

      Also, NixOS doesn’t just install packages, all system configuration is done declaratively, which would be a very bad idea to do via a bash script.

    • sickday@kbin.social
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      Part of the purpose of NixOS is providing a means to build a reproducible environment that’s easy to configure, migrate, and rollout. You can absolutely handle configuration of many different programs using either flakes or the native modules provided by nix. You can customize your entire system from firewall entries, to users and their shells, to the kernel itself and the kernel modules you’d want it to load, all in a single file or multiple files. If you want to try doing all those things in bash scripts, good luck and please share your experiences but don’t expect it to be as easy as the Nix ecosystem.

  • moldyringwald@kbin.social
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago

    It’s insanely stable but you have to have a lot of linux/programming knowledge to do even the simplest things like installing/updating your software or making little tweaks. I played with it for hours the other day and I’m just too dumb to figure it out lol I think it’s just a super stable highly customizable distro for power users and a lot of people like that. If you can get over the learning curve it’s a pretty powerful and unique os

    • Chobbes@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      It’s kind of funny because I’d put NixOS on a complete newbies computer for sure, and recommend it to an expert… But I’m less sure if I’d tell a random mid-intermediate Linux user to switch.

      Like if Grandma wants Linux on their computer to do some internet browsing for some reason… I’d absolutely put NixOS on it because it’s easy to manage the system for them… But somebody who is a little familiar with Linux already might be more confused about the differences. It’s kind of the ultimate beginner distro and the ultimate power-user distro, but a bit awkward between those extremes, haha.

    • RosalynKirk@kbin.social
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      you have to have a lot of linux/programming knowledge to do even the simplest things like installing/updating your software

      So, pretty much like any other distro

        • RosalynKirk@kbin.social
          link
          fedilink
          arrow-up
          0
          arrow-down
          1
          ·
          1 year ago

          Weird, every distro I’ve tried either has no management, or doesn’t work. Just spins around loading. “Uninstalling” packages does nothing but remove them from the package manager.