I use Fedora 38, it’s stable, things just work, and the software is up-to-date.
I use Mint. As a beginner the Windows-like feel is convenient for me but once I get the hang of it I could see myself trying something else
This is what I recommend for Linux newbs. And they can stay with it if they’re happy with it. It’s also a decently competent Linux distribution which is a hell of a bonus.
@Anolutheos @Lolors17 I use Mint Debian edition. I got fed up opening my laptop and having to update when MS said so, so switched to Ubuntu, then Mint, the LMDE and have stayed for 4 years. It’s not exciting, cutting edge, etc but neither am I! It just works all the time. Updates are easy and everything is boringly reliable - I love it!
Hopefully LMDE6 is a game changer for the most popular first Linux distro. If the CosmicOS by System76 doesn’t win that title.
My grandparents were 1,5 years with Mint but LMDE5 has now been for 10 months and it is awesome. Literally 0 issues since day 0 whereas Win7 and Win10 caused constant headaches for me over the phone.
@Nuuskis Are you using a System76 machine? If so, how do you find it? And importantly how would you rate the keyboard against a ThinkPad / Lenovo?
Unfortunately I’m not. I’m running numerous Thinkpads until System76 releases their in-house produced Virgo laptop with hot-swappable mechanical keys and open source bios (Coreboot). It’ll also have the trackpoint from Thinkpads.
@Nuuskis That sounds like an interesting arrangement too - let us know when you do that and how you get on! 😉👍
OpenSUSE Tumbleweed. I like it for being a rolling release with quality control. On the one hand I don’t like its restrictive defaults but on the other hand I know enough to work with them and that’s given me a leaner system.
I like Tumbleweed because it’s utterly boring and predictable while being rolling.
I like it because I can appreciate a good lizard.
That’s also what I run.
I want a boring up to date system with a good KDE desktop that just works (even with an nVidia GPU). Tumbleweed is fine. I don’t want to mess with my computer, I want to use it. I messed with it ages ago when I had to enter xmodelines by hand to make the damn thing work, I’m glad we’re past that.
Same here. Very good KDE Plasma and KDE apps integration, rolling and up to date apps, and very stable at that and if something would go wrong I can easily at boot switch back to a state before the update. Pure gold.
Debian as a server base OS is well-tested and (for me) ultra reliably stable.
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 donixos-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 GNUstow
. 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 likeapt install ...
. However with NixOS you don’t need to permanently install anything if you just want to try it, you can just donix run nixpkgs#emacs
ornix 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 hasbuildFHSUserEnv
to work around that and provide apps with a normal looking Linux filesystem, but that requires a bit more effort than the usualcurl 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 vianix profile install
(which behave much the same asapt
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.
Thanks for this write up.
- 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.
Yes, that’s what home-manager is for, your configuration goes into
~/.config/home-manager/
and from that you can generate all the other configuration files that go into your$HOME
(either by just copying a read-only version of the raw file or by generating it on the fly from the nix configuration file when a home-manager module is provided)
I use Arch. I use the command-line to update, I am very glad that I can do the updates when I do want them. Of course, going over the update list is my responsibility, but such is the power my OS grants me—I can make or break things.
Otherwise, yeah, it’s the customization it offers me. I can make it as janky as I want it to be, or rice it to my heart’s content.
I use arch too. Mainly because of rolling releases. I love the install once last forever philosophy. i also like that arch ships vanilla upstream packages, quickly.
That said arch makes very few choices for you. It aends you to the excellent wiki to make your own choice. So the first install may take a bit of time if you’re new.
To be fair, the fact that Arch makes very few choices for us users is one reason, perhaps the biggest reason, I was hesitant jumping in at the start. A well-meaning friend pushed me off the ledge of hesitation and into the thick of things. Did I feel nervous? Hell yes! But was it worth the frayed nerves? I guess it is.
So many nice things about Arch. I got into Linux with Ubuntu, switched to Debian for many years, and now use Arch.
Why Arch?
- AUR provides a huge library of software that natively integrates into your system, including git versions of major components like kernel/mesa so you can test the latest features.
- Rolling release means it’s always up-to-date and you don’t have to worry about version-hopping to the next version every release cycle.
- Follows upstream projects closely
I installed all my Arch installations with the Calam Arch installer ISO. The one big complaint I see with Arch is the complicated install process, but with Calam installer it’s no different than most other distros.
I came to Arch for the customisation, I stayed for the AUR
Mint is up to date but less buggy than Ubuntu, and it has served me well for years without problems. The UI is very conventional so I don’t spend time thinking about where stuff is. It supports multiple packaging systems now, so it’s easy to find and install software. You don’t have to go to anywhere as dodgy as the Arch User Repository to find what you need. Mint is not too conservative, not too cutting edge either, and not restrictive due to ideology. It’s boring and it works and I can just get on with stuff.
I got a Mint laptop recently, and I’ve been loving it (even though I don’t need it to do much).
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.
I use Arch because it’s so customizable and there’s so much more freedom. Once I installed Arch I realized I’d never go back to Ubuntu. I’m so used to using the command line all the time now it feels weird and annoying when I have to use something with a GUI desktop environment (I use i3.) People always tell me when they see my system in public (it’s a ThinkPad) it looks clunky, but even the inability to set custom time/date settings in KDE was mildly annoying to me.
I sincerely think CLIs and TUIs are no harder than “user-friendly” GUIs but they’re just too far from the average modern person’s experience for this to be acknowledged. Using nmtui to connect to WiFi is hardly more difficult than what Windows or macOS do.
I also really love pacman, the AUR, and the Arch Wiki.
Arch Linux because it has sane defaults, is rolling, up to date, helpful community, awesome wiki and is minimalistic.
That really depends on your definition of “sane defaults.” Even a lot of the computer science professionals I work with wouldn’t consider Arch Linux defaults as sane. I picture sane defaults to include a lot more basic functionality that Arch doesn’t have out of box (automatic suspend, desktop environment, lock screen, etc.).
I use Arch for the exact same reason you do though. Once you get past the tedious stuff like setting up your networking stack, setting up idle suspend, etc. it’s nice to choose whatever WM/DE you want and customize it how you want.
Sane defaults?
Yeah, it has almost no defaults, allowing you to tailor the installation to your needs.
EndevourOS. Easy to install and customizable/up to date as Arch can get.
I use Fedora. I like the combination of recent, stable, up-to-date software, new releases every six months, and firmware updates for my ThinkPad direct from Lenovo.
Running Endeavor OS. Painless installation, everything works outta the box, good community, no release/lts bullshit. If it breaks, just rollback.
Gentoo. Great rolling release that is stable and had timely updates, but has the flexibility to configure my system down to the tiniest details, with a great and knowledgable community. I love source-based distros and Gentoo is definitely the best.
Had to scroll too far to find Gentoo.
Does source-based mean you need to build every package from scratch? How long does it take to update? Do you use it on a laptop or desktop?
Yes, though there are some prebuilt binaries for large packages. I use gentoo on a desktop and updates don’t take too long, minutes. Big updates that cause lot of packages to rebuild can take hours.
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 like that I don’t even care about it. The main user of it is my wife, who is non-technical. It’s the only computer she uses, for everything (browsing, shopping, banking, word processing, printing) for 20+ years, and if you ask her which distro it is, well, she doesn’t know what “distro” means.
She doesn’t “use Linux” because she wanted to “learn Linux” nor to “try this distro”. She uses youtube, instagram, the bank site, amazon, libreoffice, etc. The closest she gets to the OS is accepting the package manager prompt to update.
I wish one day most people can answer your question with “I don’t know, whatever came with my computer”, because it’ll mean all of them are as easy to use, as unobtrusive and as unimportant to the user as possible.
But to finally answer it, kubuntu, some ancient, still updatable LTS version (can’t even recall when I last upgraded), because it was easier for my wife to adapt, coming from windows 95 when she started using it.