Skip Navigation
117 comments
  • I like that the NixOS packaging system feels like it's build for Free Software, making source code and Git repositories a first class citizen. You can simply drop a flake.nix into your repository and turn it into a Nix package within a couple of minutes, that's quite a bit different than the utter headache it is to package something for Debian. Nix packages being free of naming conflicts also makes it very easy to mix and match whatever versions you need, something that's basically impossible on most other distros unless you resort to containers or virtual machines. NixOS having the largest package collection of any distro is a plus too.

    • How different (if at all) does Nixos feel as a daily driver, if at all? Is it only about getting used to the system, or does it require to do everything the Nixos way?

      Also how does user-level configuration work? Does the upgrade system just ignore your $HOME in terms of version control?

      • All OS configuration (i.e. your installed packages, services, /etc content) happens in NixOS via a single configuration file in /etc/nixos/configuration.nix. When you do nixos-rebuild switch that file gets read and the OS gets rebuild, which in practice means some downloading and changing some symlinks, so it's reasonably fast, kind of like GNU stow. The partition table isn't touched here, that has to be setup manually on the first install like on every other distribution. NixOS will also not rollback the file system if you decide to boot into an older version, everything is done by symlinks and environment variables, so you don't have to worry about your $HOME disappearing or anything like that.

        For daily use that means that you basically never edit anything manually in /etc ever again, except for that one NixOS config file. You also can't since everything will be symlinks into a read-only /nix/store. For permanent package installation you also need to edit the file and rebuild, you can't do imperative stuff like apt install .... However with NixOS you don't need to permanently install anything if you just want to try it, you can just do nix run nixpkgs#emacs or nix shell ...and it will run it without installing it (everything goes to the /nix/store/ cache and is garbage collected when no longer needed).

        This can become a problem when you are dealing with third party packages that come as self extracting installer files that want to install themselves in /usr or depend on programs being available as /usr/bin/python or whatever, since on NixOS that whole hierachy is empty ( except for /usr/bin/env and /bin/sh). NixOS has buildFHSUserEnv to work around that and provide apps with a normal looking Linux filesystem, but that requires a bit more effort than the usual curl http://.../install.sh | sh hack.

        By default $HOME isn't touched at all and will behave largely like on any other distribution. You can however install packages as user via nix profile install (which behave much the same as apt would, but is local to your $HOME). The other popular alternative is home-manager, this provides basically the same what /etc/nixos/configuration.nix does, but for your $HOME, so you can start systemd services, generate your bash profile with it or install apps locally in your $HOME. Home-manager has to be enabled manually and is probably best ignored until you are familiar with the rest of the system. Home-manager is also less all-or-nothing than NixOS itself, so you can freely chose which dotfiles you want to manage manually and which you want to generate via home-manager.

        As for nitpicks when it comes to daily use: Due to everything in NixOS being fully reproducible, NixOS makes little to no use of binary compatibility, meaning if libfoo changes, everything that depends on it has to change too. This requires a bit more downloading than other distributions. After an upgrade, NixOS will also keep two copies of everything around until you garbage collect them. This allows you to just go back to an older version via the boot manager. But it also means that you might need two or three times as much storage as on other distributions, at least until you garbage collect. But generally that's a worthy trade-off unless you are on an extremely resource constrained system (anything >=32GB storage should be fine).

        Finally, if in doubt, install the Nix package manager on whatever distribution you are using right now. You don't have to go the full NixOS at once, you can install Nix packages on any Linux distribution and play around with it, similar to flatpak.

        • Largest repos of any distro, so package availability is good (also supports Flatpak).
        • All package installation and configuration is handled via config files, so it's easy to keep track of what's installed. Also makes re-installation convenient and easy (this is also great if you're fond of unixporn-style setups).
        • Because it uses config files to manage this, you can also take advantage of VCS.
        • Instead of having to work with several shitty DSLs to configure your system, now you only have to use one!
        • Being able to install multiple versions of the same library is nice. With Nix you can just install whatever the fuck you want, really. Want to use DisplayCAL, but can't because it was dropped from the current release's repository for still depending on python 2? No problem, just have your flake pull it from a previous release when it was still in the repos; it'll just work because builds are done in isolation.
        • The generation system makes updates fearless, since if something breaks you just rollback.
        • Development is both better and more annoying. There's no FHS, so you have to set up a dev environment with a flake every time you want to do a project. This is nice because you don't miss dependencies as everything has to be explicitly laid out in the flake and other Nix/NixOS users can share your flake and get the same exact dev environment (kiss "it works on my machine" excuses goodbye). Annoying both because you're required to put in more forward planning with your dev environment and also because it breaks language-specific package managers, so you're limited to supported languages.
        • You can't just git clone/make/install stuff from GitHub, as there needs to be a flake first. If the software already has one included, great! If it doesn't, you'll be making it. If you need a dependency that currently isn't packaged for Nix, you'll be making more than one. If the software is difficult to package, god help you.
        • Nix documentation can be really lackluster and also assumes you're Linux-savvy.

        Also how does user-level configuration work?

        You use a 3rd party tool called home-manager for this. It provides about the same experience as the system config and has more configuration options for software, so should be preferred when it makes sense.


        Overall, it's great if you're Linux-savvy and is one of the few distros that is legitimately innovative. Said innovation can also be a pain in the ass on occasion though, but still worth it.

    • Can I use a file in the same place as the nix config to set the configs for i3 for example? Or anything else that would go in ~/.config? It would be amazing to have all the configuration files in one single folder to easily move to new hardware.

  • When I used Debian, it was stable and I love it.

    Now I use Alpine (Edge). I like it because I feel like I am learning more about troubleshooting issues but also because the packages are very up to date.

    As a desktop Linux user who doesn't develop or code in any way, or work with servers, or containers, I found Alpine to be very accessible and the community has bren very patient with my different issues.

    Despite how comfortable it is, I think I may end up going back to Debian or finally taking Fedora for a spin. Not for at least a year though.

  • Running Endeavor OS. Painless installation, everything works outta the box, good community, no release/lts bullshit. If it breaks, just rollback.

  • pacman/yay

    Also, Arch wiki.

    All else is aesthetics.

    • Ever tried paru? Did the jump a while ago and it is slightly better, the best kind of better.

      • I've been messing with paru to gauge its functionality against yay.

        So far I'm unimpressed. The cli display is somewhat tidier/neat. I like that. But when it comes to actually installing something, it's less than stellar.

        For instance, if I want to skip any confirmation, I can use the undocumented flag --noconfirm. But that only works if I'm passing the flag to install, -S. If, say, I'm searching for a package, simply typing paru <package>, then the interactive menu no longer works. It simply exits with the message 'nothing to do'.

        yay, on the other hand, works flawlessly with the --noconfirm flag.

        I noticed that paru has some upgrading/updating features that are nice. I might use it once in a while to upgrade/update the system. But that's pretty much it for now.

      • Thanks for reminding me of paru! I've checked and I have it installed already. But I confess that I'm so used to yay that I completely forgot about paru.

        Do you have any paru tutorial you recommend?

  • I tried Tumbleweed for a while but ended up going back to Fedora. Super polished while still fast moving.

    • The package manager.
    • New releases make it to the repositories quickly.
    • The software is as vanilla as possible; no changes made by the distribution except to get it working.
    • The wiki.
    • +/- No nagging graphical updater.
    • +/- Users can share build scripts for building software from source very easily
    • +/- No particular stance on free software licenses.
  • Arch: I like the knowledge and understanding that comes with regular usage. I've learned a lot about my system that I probably wouldn't have otherwise. Also the PKGBUILD system / AUR.

  • Debian Bookworm. On my laptop and all my servers.

    I'm a seasoned professional Linux sysadmin, so getting a distro installed has never been a problem for me (thanks to my first proper distro being Gentoo).

    In the end, it's the stability and "knowing what to expect", that always makes me come back to Debian.

    • I don't know how you deal with non rolling releases on your machines you actually use for work. By the end of the lifecycle all the tools are ancient

      • ChojinDSL It depends on your use case. In my case I mostly manage bare metal servers running certain services or docker.

        For servers I don't want rolling releases. That just means stuff is going to break on a regular basis. In my opinion, Arch Linux is the worst offender here. I don't know if it's gotten better since last I used it. But with Arch Linux the problem was, that you had to keep up with the updates. If you forgot to update some machine in a while, it could happen that you missed some update that changed some critical things, and everything else already moved on, and the only way to fix it was to hunt down the intermediate package version and try to install that manually, or just wipe and reinstall.

        As far as "ancient" tools is concerned, it depends on what those tools are. Bugfix and security patches is what I'm most interested in on a server. Just because there is a newer version of software out there with some new features, doesn't mean that I need those features, or that they're relevant.

        For the cases where I need something newer, there's docker, flatpak and backports repos, (if not third party repos for certain tools).

  • For me it is Fedora as well. Before that I was using EndeavourOS but wanted to use something a bit more stable. Haven't distrohoped since!

  • Kubuntu 22.04. All my games run like butter without much tinkering. I learned most of my Linux stuff on Debian or Ubuntu in the early days and most of what I need comes in .deb form.

  • Debian 12 have been rock solid for me. Use it for gaming with my Nvidia card and the driver installation have been painless and easy. Mainly been using it as a normal desktop using Gnome and gaming with Steam.

    Was previously running Arch based distribution ArcoLinux, but was getting tired of the updating maintenance and config file conflicts.

    Debian is just stable and a few updates a week. Flatpak fixes the old packages that repository have for those applications I just “need”.

  • Crux user here. I like the port tree system and simple package building recipes. It's also a distro that kept things very simple over the years despite the rise of dbus and systems. Also the mascot.

  • Using Fedora

    What I like: When I plug my laptop into HDMI it remember the audio settings so if I last had the audio go out of the speakers it defaults to that.

  • I use Ubuntu LTS. It's stable, things just work, and it's got 10 years of free support. That's a very long time to not worry about my machines.

    • I don't get it. You end up with ancient packages and have to install ppas to get modern tools, or write code that can't take advantage of modern tools and have to do workarounds

      • This is a similar reason as to why I use Debian as my base operating system and for just about every service I run on my host, the processes are containerized using Docker. It gives me the flexibility to choose the best “operating system” that supports the software I want to run at the release cadence that suits how I want to consume it for a given piece of software, and the base host OS is just that and nothing more. Upgrades to new Debian releases are non-events and I get no surprises with my apps in containers.

        I can upgrade the underlying container base operating systems as I need which I choose Alpine, Debian, and Ubuntu based on which fits my needs. Alpine gets updates quickly, Debian is good for core services that I would normally run natively on my host, and Ubuntu hits well for wide support of almost every other service I need. So I get a stable base with the option to go as quickly as I need if I have a need for a newer package. It’s not always about having the newest software, it’s about stability where it counts.

      • No PPAs, no workarounds. Just Docker, Snap and Flatpak. OS upgrades become trivial. Nothing breaks.

         undefined
            
        $ sudo docker ps -q | wc -l
        17
        
          

        Currently running 17 containers.

        E: If you haven't looked into VS Code's "dev container" feature for software development, you should check it out.

  • I use EndeavourOS, Gnome on my desktop and KDE on my laptops. I really like the AUR and the integration with yay. Started with Ubuntu about 7 years ago and had always used Debian based distros, moved to Arch when I wanted to learn more about Linux and now I use EndeavourOS as my daily driver.

    On my servers I use a mic between Debian 11 and 12

  • I was excited when I bought an Amiga 500, and ever since then the main thing I noticed is that the EXCITEMENT of getting a computer was always over-ruled by my ability to exploit it's powers and use it.

    So my perspective is that all computers and operating systems SUCK. But some suck less than others...

    So using Manjaro KDE, it sucks less because it's very simple and easy for me to install whatever I like - having AUR available, being able to search with pamac to include repos, AUR and Flatpak (even snap if I was that desperate).

    KDE also gives you super powers to fuck up modify your desktop experience and shortcuts.

    It's been good to me for 6 years now. After going Ubuntu>Mint I was excited to leave Debian and try something else, I never made it to the Redhat camp (always interested to try Fedora) and hopefully will never feel the need.

    So yes, what I like MOST is - it mostly just works. And when it fails, the forum is awesome.

  • i've been distro-hopping a lot and always come back to linux mint. It's that one distro i can't fuck up when fiddling with things. it just works

  • While I know it's not the best distro, I don't care to re-image, I left that life behind with Windows.
    \ Manjaro-
    \ I love the fact that I can have "Stable" and "Unstable" kernels installed simultaneously. It's a nice handy way to recover or narrow down if an issue is related to the kernel. They've done an excellent job with the default Grub settings to allow this as well as side-by-siding with Windows if I want (which made transitioning from Windows to Linux easier).

    • What makes you say "I know it's not the best distro"?

      • Let me preface this with the fact that I still love and am not switching off of Manjaro.
        \ Manjaro's been kind of a contentious distro, it uses more bleeding edge than Debian-based, but opts to hold its own release schedule and repo separate from Arch's which Arch fanboys will swear to the moon and back is just as stable. To their credit, Manjaro's released some bad updates in the past.
        \ It's also had some security issues with SSL certs not getting renewed, however to my knowledge, your computer would default to not making unsecured calls like that, and secondly, ended up fixed by the dev soon enough. What really pissed people off was that the devs decided that instead of updating the cert (which would be a quick and easy process), they would demand that everyone changed the date on their computers to a time prior to the cert's expiry. I didn't run into this issue because I don't update the day of, I usually like to give it a couple extra days anyway just in case of situations like this and because, frankly, I get on to use my computer, not watch updates run. I agree their response was in poor taste, but I also kinda figure that's not exactly out of the norm from Linux devs (ie. Gnome and Linus Torvalds).
        \ Lastly, a lot of people talk about how the AUR handles installs based on Arch versioning, so if you install AUR apps, there's a chance of incompatibility in Manjaro since Manjaro is usually behind Arch a little bit. I can't say that I've had this issue at all, but

        1. You have to specifically enable AUR
        2. When you do, it warns you of this potential incompatibility
        3. If possible, I'd be using something in the official repo or flatpak far sooner than AUR for sake of support, security, and not having to way for AUR to Build

        These are valid complaints folks have had, but none that have really been deal-breakers to me, and not worth the trade-off of a more minimal OOB experience. You have the people that are more used to more stable distros that don't like it being "less stable", and you have the Arch folks that don't like that this isn't as minimal and DIY as Arch. Way I see it, I like to game, I don't like having to fix my computer, and it's struck a nice balance for me. I'm sure Garuda or Nobara would treat me well, but I've already customized my environment to suit me, and tbh, distro's aren't the end-all be-all of Linux, would you do with it is - kinda the whole point of its modularity 😊

117 comments