Fedora.
Fedora crew checking in. Where is the complementary goat cheese?
Really anything free and Debian-based. I’ve been happy with Pop! for a while but previously used Mint satisfactorily.
Still irritated that Ubuntu has turned into Red Hat and Red Hat has turned into Oracle — in terms of how they relate to their users, that is.
Opensuse
Tumbleweed
I’m considering to try it. Is the system stable?
Very stable for me. Been using it for over a year now.
OpenSuse Leap is my favourite distro.
Occasionally I try out others, some I really like, but I always end up back on leap.
It just works and works.
NixOS. After trying it, I could never go back to a “regular” distro.
What makes NixOS standout?
It’s a somewhat immutable distro, that is however fully configurable.
- The configuration is all in one place. No more changing a bunch of files in
/etc
, some in/lib
, etc, and having to remember all files you’ve changed. - You can easily recreate your system from your configuration or boot to older configuration.
- You can easily open shells with different programs available. Very useful for development, when you need a reproducible environment with the project’s specific dependencies.
- Very hard to learn, but if you have learned it well, a lot of things become easier than in other distros.
It’s a somewhat immutable distro
NixOS is an immutable distro. Immutability is binary, it either is, or it isn’t.
/nix/store
is immutable. But there are some files in other places like/etc
and/var
that are mutable. Also I (or a malicious executable) could, in theory, delete store symlinks and replace them with mutable files. Impermanence helps, but you’ll still want some mutable state.Fully immutable systems have everything outside of
/home
read-only. NixOS is not one of them.I see.
I don’t really get the malicious software point though. All immutable distros have a mechanism for changing, after all they need to be updated. If a malicious executable has root access, which is what you need to change symlinks on NixOS (I know services often get their own user, but unless modified, only root has access to those users), then these malicious executables could also leverage whatever mechanism for change other immutable distros have, to do malicious things, no?
Though I do agree with you, now, that NixOS isn’t immutable.
There are ways to secure the update process. For example, you can enable secure boot and store your secure boot keys encrypted (or on a smart card). Then (if a full chain of trust is implemented) to update your system, you’d need to enter the private key password (or insert the smart card), and a root-access executable couldn’t to that automatically.
Yeah, but do other distros do this though? Not that I’m aware.
And surely the same could be done to NixOS, no?
- The configuration is all in one place. No more changing a bunch of files in
The control and deterministic nature of it is amazing. I have a git repo for all of my machines entire config. I have no fear that installing something will break or make things that would require blowing away and reinstalling. Also blowing away and reinstalling is no big deal, as is building new boxes. It has a high bar for learning to use it effectively, but the view is worth climbing the mountain.
How configurable is the build process for individual applications? I run Gentoo, have all my config files stored in a git repo which includes the defaults supplied to any application’d configure/make/make install steps.
You could apply patches or change the build process. But there are some limitations to ensure reproducible builds. For example, compiler optimizations that break reproducibility are disabled.
I think you could disable build reproducibility to get rid of those limitations, but I haven’t tried it.
The way I run Gentoo would be the type of thing to break reproducibility, getting rid of features globally that I never need. I keep getting the itch to run NixOS but then I remember rebuilding my Gentoo build from scratch is a weekend task I don’t have time for as I’m too frugal to actually upgrade my hardware.
While technically possible, you wouldn’t want to compile everything locally on NixOS. Only packages that you’ve made changes to (such as applied a patch) will be built locally, and everything else (by default) will be pulled from the precomputed binary cache.
You can disable the binary cache, or make changes to every package. The thing is, if you update a
nix
package, you’ll have to rebuild everything that depends on it, and with lower-level components, that can be literally everything. It’s not a sustainable workflow.NixOS is not the most efficient distro either. I already mentioned some compiler optimizations are disabled by default, because they break build reproducibility. It also tends to use more disk space than other distros. So actually trying to super-optimize every package on it is somewhat pointless.
-
My config is in a single github repo for all of my machines and my user.
-
It’s really tightly integrated and just works with the nix package manager, which has a huge repo and builds packages reproducibly, so theoretically what would work on my machine would also work on yours. Also, with nix you can run software without installing it, you can have multiple versions of the same library, and there are way more benefits just from this package manager that I can’t list here.
-
You can iteratively test your config, apply it on a live system and roll it back. You can also use git to roll back to an older version while keeping the actual source files.
-
There’s no dependency hell / leftover packages after uninstalling something - what you declare in your config is what is installed, and if an app has unspecified dependencies it won’t build. I guess this would also be a part of #2
And there are probably other benefits I can’t remember.
-
Debian.
Based and Debianpilled
Arch, btw
NixOS! Definitely not for beginners, and also definitely not for people who are used to the arch way and want something similar.
It’s a declarative OS, versus most Linux distros which are imperative:
- Declarative: You define exactly what is what, such as what packages should be on your system, your configs, etc.
- imperative: you modify those stuff yourself after initialization (installing).
So, instead of having to install KDE and change my display manager to use it, I just add this line to my configuration file:
services.xserver.plasma5.enable = true;
If something wrong happens, I just change the config file to its old version. I can also share this config, and then the other person can run
nixos-rebuild
to get my exact system configuration.Absolutely agree, it’s a very steep learning curve but once it clicks it’s hard to go back to the old. It’s good on the desktop but I started running it on my server recently and I can’t stress how nice it is to just see everything in one place, especially with nix flakes. It’s been difficult with some stuff like running firefish (formerly calckey) but it’s hard to come by services that don’t have good support
I really want to give NixOS a try when I have some time to learn. I’ve been on Arch for a couple years now, and I’m ready for a change. Lol.
Any places you recommend going to learn how to get started in addition to the official docs?
You should definitely use the tool called home manager for per user configs, they have good docs too and make configs for popular programs super easy
Arch Linux is my #1, its package manager is extremely fast. Gentoo would be my #2 because the USE flags are just awesome to customize each package (basically an automated and centralized way of doing what used to be done using
./configure --enable-[...]
a long time ago). Both distos’ documentations are freaking good and the best there is on the internet right now.I’ve been a Gentoo user since it first came out. I always liked the idea of buildings my entire system around my actual use case. For example I didn’t own a printer so it made absolutely no sense why I’d ever install CUPS and have that service running. If you install a Debian, Ubuntu or Fedora based distro installing Firefox required CUPS. WTF?!? How does wanting to browse the Internet require printer services installed?
Turns out there is a lot of unnecessary apps installed on your system because all the binary distro aim for maximum support. I am not generic so why install for a generic user?
Why compile while I can let someone else do it for me? (Just to see it from the other side :))
Who compiles the binary in the configuration I want? What distro extract all the options out and allows me to install X11 apps without CUPS or alsa or dbus or anything else my system doesn’t actually need? The point of Gentoo is to set a single config file to say “whenever you do a
./configure
make sure you disable X features, enable Y features, and uses my specific compiler tunings to target a specific use case or build.”For example I never default building apps with guis. I’d rather be able to SSH in and use everything that way if possible. I then select the very few applications that actually get their GUI interface or configuration tools built. Can’t do that on binary distro.
Nobody obviously. The closest you would get it probably Arch, with a lot of optional dependencies. And you are not wrong at all, if gentoo works for you. I just wonder if that all that compiletime is ever won back.
Yeah I ran Arch for a little while and it was ok. Felt like it was in-between a binary and a complete source based system but lacked the configurability that makes source base work.
As for getting time back, I setup my system to build stuff at night for upgrades, most apps took a few minutes to build as it’s rare for me to not already have the vast majority of libraries already on my machine. The only things that took a long time was browsers and LibreOffice. Both of which I built when I was sleeping.
Additionally I ran lxc on my system for situations where I had to have something now. Spin up a Debian build and install it. In the background I’d still build a Gentoo clean version and dump the Debian image once it was done.
I love gentoo, but for different reasons:
- incredible flexibility in package versions. I can install multiple versions of a package, or install an old version of a package without incompatibility issues
- can mix between rolling release (arch-like) and fixed / stable releases (fedora-like) on the individual package level
- can very easily create packages not in the repos and treat them as first class
- super easy to add and manage patches
- global management of compile flags and options
- packages in portage are not only programs. You can let portage manage other things, such as users or configurations
- support for less common architectures or setups, like using musl, arm, clang, etc.
Very true, what OP said barely matters nowadays but the features you listed definitely give Gentoo an edge over most other distros.
Also, we gotta shout out the sheer stability of gentoo and honestly having to compile system packages isnt that bad if you use flatpak.
The only one I’ve ever really stuck with is Arch. I tried Pop_OS for a while but it wasn’t for me.
My home server runs Debian purelynfor stability but it’s a lot more work to get setup than Arch is.
Mint, with cinnamon.
It works for me, on everything I have, with zero issues. The only thing that annoys me is I can’t get waydroid working right so far.
Greetings, fellow Mint peasant. We may not be as cool as the Arch bros, but our stuff just works. I use Mint because I don’t want to spend my time fiddling about with my OS. It does what it’s supposed to do and doesn’t get in the way. One day when I i was bored I did an Arch install in a VM just for fun. But getting that to an actual working state is a lot of hassle. For my daily driver I’ll stick with Mint.
I love gentoo, and here’s why:
- incredible flexibility in package versions. I can install multiple versions of a package, or install an old version of a package without incompatibility issues
- can mix between rolling release (arch-like) and fixed / stable releases (fedora-like) on the individual package level
- can very easily create packages not in the repos and treat them as first class
- super easy to add and manage patches
- global management of compile flags and options
- packages in portage are not only programs. You can let portage manage other things, such as users or configurations
- support for less common architectures or setups, like using musl, arm, clang, etc.
I wanted to try Gentoo for a while. But I could never find a bootable ISO for it. And that’s basically the only way I know how to install a distro.
A bootable ISO for the installation media / Live CD? Or you mean the final install product?
Yes. Installation. With all the other Linux distributions I have installed, there is a bootable CD with an installer of some kind.
- Slackware
- Debian
- Ubuntu
- Mint
- Arch (though the install process with that one is admittedly more complicated. Also, because I have a very hard time grasping what the use cases are for anything outside of a “default” Linux system, it felt like I was using a very expensive arc furnace to toast myself a sandwich.)
- Manjaro
- OpenSUSE
- MX Linux (my current favorite)
Actually, come to think of it, my problem with Arch is also my problem with Gentoo: I don’t know what the use cases are.
In fact basically, I like Linux, but I also don’t know what Linux is for. I use it for Web browsing, occasional attempts at writing code (I’m bad at that. I have no idea what the proper process is for finding code that already does the things I want done, and I’m pretty sure that’s 90% of programming), I use it for taking markdown notes and mind mapping. And that’s honestly about it.
I could do all of that with Windows, technically speaking. It would just clutter my system, and I would not get to choose my own desktop environment. And I wouldn’t have access to the Debian repositories. And where it’s effortless reinstalling Debian based systems, Windows installation can be a pain.
So the way I use it, Linux is just a sleeker, more lightweight, more visually customizable Windows that I can run on older hardware and fill to the brim with random software packages acquired through Debian’s humongous library of verified programs without worrying about messing up my OS because ultimately, I can easily reinstall the whole system in a matter of 40 minutes.
To someone who uses a computer the way I do, it almost can’t be anything more than that.
I’m pretty sure that’s the real reason I don’t use Gentoo.
Gentoo’s install process is manual by design. If you don’t like the install process, then gentoo may not be for you, because want to use those skills while you use it day to day too.
There is bootable ISO installation media. One that is TTY-based, like Arch’s, and there’s one they added a couple years ago that has GUI based with KDE. You’ll still have to follow the hand book while you install, so it’s still manual. But if you wanted a graphical experience in the bootable ISO then that’s the one.
You can actually use ISOs from most other distros to install it. I think the wiki even mentions it
Debian. It’s FOSS.
I can have a 100% FOSS system. Everything else includes non-free stuff by default.
I keep coming back to Pop OS. I also own a System 76 Thelio Mira so I’m a bit biased.
POP!_OS:
- Constant maintnence by System76 (under a solid Ubuntu base)
- Ships latest Mesa, firmware, and Linux kernel only a week or so after latest stable
- flathub built in and the Pop shop is more stable and useful than gnome-software (but nowhere close to Linux Mint unfortunately)
- The COSMIC desktop is really pleasant to use and GNOME 42 still rocks! System76 also have a plan for wayland mapped out with cosmic-epoch (Mint devs far behind on this one)
GNU Guix:
- A transactional package manager that can be installed ontop of POP!_OS.
- Hacking on Guix allows me to get the latest packages of things I’m interested in without compromising my base system. Why distro hop when you can use Guix?
Flatpak/Flathub:
- Get latest stable versions of user applications.
- It’s flathub, what more is there to say?
POP!_OS + GNU Guix + Flathub = the most complete GNU/Linux one can get.
Interesting setup, I can definitely see myself giving that a go as a nice middle ground between traditional distros and full-on NixOS/Guix.