I would just like to preface this. This is the first blog post I’ve ever written, so please please please give me feedback if you can. I also didn’t intend on it being here on Lemmy, but Hugo is quite a complex tool that’ll take some time for me to understand. Webdev is not my cup of tea.
Introduction.
About a month ago, I switched from Endeavour OS to a spin of Fedora called Fedora Onyx (Now Fedora Atomic Budgie, from now on shortened to FAB). Why? I love Arch, it was even my first distro (I am sane I promise) thanks to a friend, but it’s infamous for breaking. Which it did. Time and time again.
Whether I was doing something wrong or not is irrelevant now, but on every Arch or Arch-based install I’ve done; overtime something has caused seemingly random parts of the system to begin to break down or slow down.
After 3 years of this behavior across countless installs, enough was enough. I’d played around with Atomic, otherwise known as Immutable, distros before in VMs but never used one on bare metal. I knew what I was getting into though, sandboxing and containerization left right and center, Flatpak for apps and restriction to the base directories. A routine backup later, and it was distro-shopping time.
What I looked for.
I initially didn’t plan on FAB nor an Atomic distro, I was actually going for NixOS (and if I were to switch from Atomic, NixOS would be my new home). But I’m of the mind of I want to use my computer more than building it, at least on the software side of things, and I know that if I had a NixOS system I’d never stop tweaking it. After trying NixOS in a VM a couple times, this constant tweaking ended up in the system breaking both times to the point where it was impossible to edit the .nix config file without chroot (and a lot of GRUB entries, a rather bit messy if you ask me).
I needed a system that:
- Wouldn’t break without my active attempt to do so.
- Was modern, had the latest versions of software available and the newest kernels (once an Arch user, always an Arch user).
- Had a large community and buzz in-case I needed support.
After the events of NixOS, I turned to Fedora. I’ve used Fedora Workstation a couple times on my laptop & desktop, and Fedora Silverblue (technically Fedora Atomic Gnome) I’d tried in a VM. Fedora Workstation fits two of those three requirements, omitting only the reliability I craved. But Fedora’s Atomic spins were a perfect fit.
Budgie?
Desktop Environments are incredibly subjective and no one is better than another, I don’t like Gnome nor KDE simply due to the scale of them. Large enough to jokingly label those desktops as Gnome/Linux and KDE/Linux rather than GNU/Linux. This is a nightmare if you ask me, the system and the DE should be separate areas of an OS stack.
Gnome’s scale can be felt across the entire Linux-verse, more and more apps are being made with Libadwaita; essentially alienating anyone who doesn’t use Gnome if they value consistency in the appearance of their system. KDE uses the Qt framework for UI, which causes itself to be alienated from the majority of Linux apps.
So I need a small desktop that uses GTK, but has modern features and animations while being under active development. Out of the 2 remaining Fedora Atomic spins, Sway or Budgie, it has to be Budgie.
I. Love. Budgie. I’ve used it many times in my old Arch installs and I’m constantly on the lookout for the best Budgie experience. Budgie is everything I want out of a DE, it’s small, it’s fast, it’s modern, it’s GTK, and under active development. It was also the first FOSS project I donated to!
With everything backed up, the distro chosen and a USB flashed. It was time to switch.
Week 1 & 2.
FAB started out exactly like most distros, you have to use Flatpak to manage all your apps otherwise going Atomic is almost pointless. FAB shipped with Gnome Software installed but again, I love consistency in the appearance of my system and so opted to use Flatpak and Flathub straight from a terminal. Gnome Software also seems to take a good minute to finish the ‘Loading Software Catalogue’ step, whereas the CLI faces no such issue.
To install packages onto the base system, known as ‘layering’, you have to use a specialized package manager that supports layering on Atomic. Fedora Atomic ships with a tool called rpm-ostree that replaces dnf . I layered Xfce-Terminal, Flatseal*, Vim, Neofetch, and packages for virtualization onto my system. Your layered packages can be seen with the command:
rpm-ostree status
*The flatpak version of Flatseal didn’t seem to apply any of the overrides.
It started out quite nicely, I usually mount my secondary drives into /mnt/DRIVELABEL but due to the restrictions to the base directories I had to change this to /run/media/USERNAME/DRIVELABEL, not a big deal and should be expected.
Gaming was obviously fine as it was on Arch. Blender did everything perfectly too, after overrides to access my projects folder. It was almost easy to forget I was on an Atomic distro. So far, I’m loving it.
Week 3.
Week 3 is when things start to get interesting, Atomic distros such as VanillaOS advertise themselves as perfect for developers. I’m a hobbyist developer, I make odd projects here and there for my personal use and other automations. Week 3 is when I wanted to start a new project.
Week 3 is also when I almost gave up on ‘Immutable’ distros.
I introduced myself to Toolbox , a program that’s used to create containerized images of non-Atomic distros right under your host system; like a Docker container (It actually uses Podman as the backend so it is a Docker container of sorts). Running:
toolbox create
Defaults to creating a Fedora container (I’m guessing it’s Fedora server), so you have access to dnf and the total mutability of non-Atomic distros on your Atomic distro. I then proceeded to installing my editor of choice and packages for Python & Rust.
I learnt a lot about how to manage development on an Atomic distro in Week 3, Toolbox advertises that it enables ‘seamless’ integration of software from the container and host system. In my experience, it’s not quite that simple.
I won’t divulge into what went wrong because it’s completely my fault and nothing wrong with Fedora, Atomicity or Toolbox. But to summarize the containerization was almost too much, causing me to flash a NixOS USB and plan to switch. VSCodium wouldn’t see that I’ve installed the languages I did, nor find my font (Geist Mono Nerd Font). This put a very sour taste for Toolbox in my mouth.
But the weekend came and I left my computer for a good day.
I came back and wiped everything from my dev environment, even the Toolbox container. Toolbox allows you to specify what distro you want to install, so I came up with the brilliant idea of Arch. After that I proceeded to install Yay, VSCodium, Python and a couple other languages. Finally, peace at last. The trick was to install VSCodium from the Toolbox, I knew that prior to the wipe but VSCodium isn’t in the Fedora repos. So now, with everything all under the Toolbox container, programming is quite a nice experience.
Week 4 & Beyond.
So this is it, one month after installing and I can’t see myself ever going back to a non-Atomic distro. Even using NixOS doesn’t seem quite as likely now. I’ve grown to enjoy and embrace the sandboxing & containerization now that I’ve figured out what to do in order to achieve a task. The best part, my system is (mostly) identical to what it was at the start. So in theory, it’ll be the same even as the years go by. Not that I’m likely to keep this exact install for years, on my desktop at least I like to try new things and ultimately end up getting bored of an install after an amount of time.
So to answer the popular question right now, is Atomicity the future of the Linux desktop? I say yes, if we can make them easier for first-timers. Right now, I’d recommend everyone to use a normal distro for a while before trying Atomic distros. During setup, the two are quite distinct from each other, and doing the setup on a normal distro is required foundation for an Atomic setup. However…
Do I believe anyone who has some experience using Linux should try an Atomic distro? Absolutely! Even if you never encounter breakages on a normal distro, using something Atomic if you don’t have specific use-cases brings no downsides. Going Atomic definitely teaches you a lot about Sandboxing, Containerization, Linux and miscellaneous Security concepts. Plus, doesn’t it just sound cool? “Yeah, I use an Atomic system.”
It even has a psychological benefit, I feel a stronger sense of solidarity and security from this system. Maintenance is easier, as I know where and how each app has installed itself and what it can access or do. I’ve layered on all the packages I could want so my base system should almost never change now beyond updates. I could even re-base to a different Fedora Atomic spin if I wanted to.
So, if you’ve used Linux for some amount of time, I highly recommend giving Atomic a try. It’s quite a unique & interesting way to use your system. If you’ve never used Linux, I don’t recommend going straight to Atomic as there are certain new and developing concepts that are used heavily throughout the system. Do I think Atomicity is the future? Yes, I can definitely see them gaining a larger share of the Linux desktop given time. To make a reliable Linux desktop, I see almost no other solution than Atomicity that doesn’t require extensive Linux experience.
After trying NixOS in a VM a couple times, this constant tweaking ended up in the system breaking both times to the point where it was impossible to edit the .nix config file without chroot (and a lot of GRUB entries, a rather bit messy if you ask me).
I don’t get it, doesn’t NixOS let you go to a previous configuration in the boot menu?
To make a reliable Linux desktop, I see almost no other solution than Atomicity that doesn’t require extensive Linux experience.
You have a very skewed perspective coming from your constantly broken Arch install.
You don’t need immutability and containers to have a reliable Linux install. My Ubuntu installs are extremely reliable, both on desktops and servers.
I have to say though that I ran Arch for a few years and it only broke once or twice. This is either astroturfing or PEBCAK.
I’ve been running fedora with updates since 29 without issue. I don’t know what people are doing that they break shit constantly. Maybe I’m just old and don’t do extreme enough on my desktop.
You’ve clearly never done any BMX stunts using Linux.
Learning. I want to know Linux thoroughly, so I explore as much as I can. This is why I keep breaking things, just sticking in a screwdriver and wiggling it around a bit to see what happens. I am slowly getting into the habit of using VMs for this.
My Ubuntu installs are extremely reliable, both on desktops and servers.
Probably because you’re an experienced user, not everyone has the same skillset.
I mean, it’s not exactly rocket surgery.
Learn how to boot single user, make backups.
Sure, being able to undo package manager fuckery would be good, but you done need to be particularly skilled to unfuck a box, you just have to be bothered to put in the effort.
Been there and done that. It’s better to just not have the host OS break in the first place.
don’t screw with it, it won’t break :)
That’s a fucking lie. I’ve literally had debian fail to update because of Nvidia drivers, the ones from their official repos too.
I agree, but want to add my personal experience.
I used ubuntu since version 11 and it used to break on every major release upgrade for me. So I ended up reinstalling every half a year, because I wanted the new software features.
Since I moved to arch a couple of years ago, I definitely had to learn a lot and find out what the most stable setup and set of tools is, but since then I have been running it without any hiccups for over 3 years on my gaming pc, my work laptop and recently on the production server of my personal business (yeah I know lol)
NixOS does let you do that, but somehow I goofed it so hard I couldn’t even do that. Most of the time my issues arrived when tinkering with the bootloader, so outcomes like that are to be expected.
100% I’m biased, you chuck a person who can’t swim into the deep end and they’ll be terrified of water for life. With Arch being my first distro, this sorta thing happened to me. I just skipped the usual debian-based stepping stones new Linux users traverse. You’re totally right though, you can have a reliable system with almost anything debian-based. But again, for me I can’t use debian due to the old packages. I have tried it, didn’t like it. I like Fedora, it’s not reliable enough for me. Fedora Atomic fixes that.
This is not astroturfing though. Just me and my views based on past experiences.
Just wanted to note that tinkering with the bootloader on Fedora Atomic is as error-prone as on any other distro.
Yeah of course, bootloaders are bootloaders. However I don’t need to tinker with it on Fedora Atomic as it ships with GRUB as the default, not systemd-boot. Additionally, it’s easier to tinker with it on NixOS as it’s just a couple lines in the config.
I’m not saying NixOS is bad, I wish I had the time to use it. For my workload, Fedora Atomic is more appropriate.
You can also just tell NixOS to use GRUB. It’s fairly easy.
I like the minimal installer, I learn more that way.
What does that have to do with using GRUB? It’s a setting in your configuration.nix or hardware.nix if your installing manually. Not talking about the live ISO or whatever.
Everyone seems shocked when Arch breaks but it’s been my experience with Arch as well. Literally on an old laptop I was basically using for web browsing I had Arch break several times randomly after updates. That was enough for me to give up on it.
Accusing the poster of astroturfing is extremely toxic and warrants revision on your part.
Arch Linux is known for its instability and it’s highly dependent on what you are doing. Linux stability in general is very dependent on what you are doing. I’ve even had issues on debian using their official Nvidia drivers.
That long GNOME software / KDE discover loading is due to the dedicated rpm-ostree module that fetches updates. Annoying as hell but you can override remove it and enable automatic updates.
Those stores use packagekit so they do a lot at once,of course flatpak through terminal didnt update rpm-ostree.You should install flatseal from flathub, yep a flatpak to manage flatpaks, magic. Same as with pupgui that can download Proton-GE into Bottles Flatpak. Strange as normally it works. But I am on KDE and use the settings page for that.
The default Fedora Toolbox is not server but a base toolbox image.
Toolbox has unrestricted home access, but the system directory is separated.
~/.local/share/fonts
should work. But I use a seperate home directory for Distrobox to not mess up different versions of programs.There is a VSCodium RPM repo, you should use that and install inside the toolbox.
Agree with your view on Atomic distros, they are a blessing. I wouldnt use an XOrg desktop though, but Budgie will have Wayland support in some time.
But why not KDE? Its the best DE of all, most complete settings, Wayland support, … Gnome is also nice and has a ton of extensions but they always break.
Fedora Kinoites KDE is very slim, but disabling baloo and KDE Connect may help reduce the load more.
I am now on secureblue Kinoite-laptop-userns and it works great. It is quite extreme and Firefox is gone. I am working on my own version of Firefox and hopefully get a COPR or Github repo soon, that Firefox works with hardened_malloc.
Thanks for the info! :D. I use Budgie simply because it’s my favorite. I don’t like Gnome’s scale nor childishly large UI elements, but I want a desktop that uses GTK. KDE is Qt, so no GTK apps really look right there. Sure you can theme GTK to fit your Qt theme, but they still aren’t 100%. I’ll give KDE another try when 6 releases, but it’s obviously still gonna be on Qt.
I’ve used KDE, Gnome and Budgie extensively. Budgie is hands-down the nicest to use. It’s light, it’s consistent, it’s modern so on and so forth. KDE used to be my main, but after I learnt that Budgie development had picked back up I switched for good.
I agree with your X.Org distaste. I don’t like that I’m using it too but we know that Wayland is coming to Budgie very soon so I’m ok with waiting. Battery life on my laptop is good enough, and I experience no X.Org artifacts such as tearing on my desktop (probably thanks to a 165Hz monitor :P).
Fyi, GNOME is supposed to be possible to decrease the top bar size etc using dconf, need to try that. Also dash to panel is a really actively developed addon so the support is great, which gives you a traditional layout quickly.
KDE uses Adwaita for GTK apps by default, I never cared for the theme but note that this GTK theme follows the light/dark system theme which works really well.
Yes Budgie seems to be very active! I wouldnt use Xorg for security reasons, but when its done, why not?
Btw there also is an immutable image for Fedora COSMIC, its very alpha and based on Silverblue but you can try that desktop. I have the feeling some packages are outdated, and they use GDM instead of cosmics login manager, but it evolves.
PackageKit is not used on atomic. Gnome-software has a direct rpm-ostree and flatpak plugin.
Discover too, thanks
But why not KDE? Its the best DE of all, […]
Not OP but I tried Fedora Kinoite a few days ago. My experience:
- Try to add a widget to the task bar
- Why are there mutiple widgets for desktop switching with the same icon but a differen’t name?
- Try to add a widget to the desktop
- The widget gets spawned outside of the visible desktop. Apparrently there’s no easy way to delete a widget that’s off-screen.
- The badge with the numer that indicates how often a widget is already added to the desktop only gets shown after I added a new widget, that is off-screen too.
- Shut down and uninstall VM.
Why is it possible to even spawn widgets that are off screen? Whey are there multiple task bar widgets that apparently do the same thing and are indistinguishable? Very frustrating unfortunately.
Thats KDE only. The widget adding is complex as it allows to place them everywhere not only on the panel. This makes it very unstable compared to panel only (which would be like GNOME and enough for many workflows).
Kinoite also has no dedicated welcome dialog for doing the things that the GNOME setup does on Silverblue, I will do that when I have time.
I tried Silverblue a year ago on my laptop and it was quite nice. Back then I had no idehow to properly use toolbox or rpm-ostree though, so it felt quite limiting. I had to go back to Windows on my laptop because of college, but I’ll try setting up a dual boot with Silverblue once the new Fedora beta drops. If that goes well, I might even switch to atomic on my main PC.
Very good read, thanks a lot!
I wanted to post one myself like yours, but now, I can just upvote yours and focus on other content.
As for Toolbx, I personally would recommend Distrobox instead, since it has more features, including the
distrobox-export -a yourapp
function, which creates shortcuts on your home screen for GUI apps.I also began to prefer Arch as container over others, since I use zsh with the Arch plugin. Pacman and the AUR are both very minimalist, fast and great.
Right now, I don’t want to use Budgie yet, due to the lack of Wayland support. When it is there, I will give it a try.
I’ve been thinking about switching to distrobox, but I feel slightly uneased by replacing toolbox as thats what FAB ships with. I know it’s fine to do though.
You can switch to uBlue Budgie, which has Distrobox already baked in instead of Toolbx, with other QoL stuff also added too.
I’ve seen uBlue mentioned a couple times around the Fedora Atomic circle. I’ll go look into that a bit, thanks :D
Definitely go for it. Just rebase (after reading what it brings) and see if you like it.
I personally see uBlue-main (with the DE of your choice) just as a minor “fix” of the OG Atomic.
So, I’ve tried using Toolbox on my Debian machine. It works and it’s nice to have access to newer versions of the programming languages I use. But much like OP, I encountered a problem with VS Code in that the IDE cannot work with the compilers from my toolboxes. For example, Debian has Go 1.19 and Fedora (in a toolbox) has Go 1.21. In-between the versions a small change of the
go.mod
configuration file has happened, so VS Code which uses Go 1.19 cannot parse it.Is there a way to solve this? OP’s way of solving this, i.e. installing the IDE in the container seems like a hack. I don’t want to manage 20 different instances of VS Code.
installing the IDE in the container seems like a hack.
Interestingly, more and more projects are doing this now that devcontainers are growing in popularity.
VS Code has two separate parts:
- The server, which handles linting, debugging, the built-in terminal, etc.
- The client, which handles the UI (including file navigation, debugger UI, etc.)
When you run VS Code on your computer, it runs both parts by default. However, it also has the ability to run the server on another system, for example over SSH or using WSL on Windows. This is useful because you can use your preferred desktop OS for the VS Code UI, but have the dev tooling running on a system with an OS closer to what you use in production. It still feels the same as if you were just using VS Code locally, as the UI still runs locally.
Devcontainers are the next logical step from there. Instead of manually installing development tools either on your computer or on a dev server, devcontainers let each project specify a Docker container (there’s a few prebuilt ones), extra features to add, and a list of VS Code extensions to install when connecting to the container. The VS Code server runs inside the container. This essentially containerizes the entire development environment so that anyone can download the project’s code and immediately start working without having to manually install anything other than VS Code and Docker. It’s very helpful when dealing with things like projects that use old versions of Ruby that are otherwise painful to do manually.
I don’t want to manage 20 different instances of VS Code.
The way I do it is all my development in one or two distroboxes, other stuff in another. So I don’t end up having 20 but just a few. Nothing really to manage.
I tried Fedora silverblue in a VM. It took minutes and a reboot to install
tmux
. I just don’t know. I’ve run arch linux and never ran into significant problems, I don’t know if the overhead is worth it.It’s not so much overhead, the reboot is necessary due to the immutable nature of the running system. The time taken to install packages is definitely a lot longer though and I’m not quite sure why that is. However I almost never install packages onto the base system, opting for Flatpak as is intended. Therefore the speed of rpm-ostree isn’t a massive concern.
Here’s my feedback on the post:
If you would have posted this anywhere else, I wouldn’t have read it. People keep making posts that link to other blogs and personally I don’t like leaving website just to go read something (but that is manly because I use Lemmy on my phone)
As for the content, really nice write-up. I’ve been debating whether I should go for Arch or atomic fedora, and this article shined more light in the world of atomicity
Thanks for the feedback, I think I’ve decided I’m going to stick to writing on Lemmy for precisely those reasons among others. To weigh-in a bit more on your decision between Arch and Fedora Atomic, I’d only go for Arch here if you want to learn Linux inside and out. If you want to learn what makes up a Linux system, what different components do what and all that stuff then Arch will teach you that as long as you do a manual install. You can also go red-pill mode and get into configuring custom kernels on Arch but that takes many hours and many attempts to get something optimized.
Remember you can always try out distros in VMs if your computer is powerful enough (>=8 Threads, >=16GB RAM).
Thanka for the encouragement on Arch XD
Since I am in the same boat as you pretty much, I want to see what makes a computer tick under Linux, I think I’ll try arch as my first bare metal distro and see how often I can manage to break it. If it’s too much I’ll switch to atomic fedora.
Good stuff!! Thank you for sharing. I’ve been running Ubuntu on my server for 4 years or so now and it’s been great for me.
I don’t actually have a Linux machine for day to day computing at the moment. I do a lot of work from my iPad (using Blink to ssh into my server), and I have an M1 Mac mini that I’d love to install Asahi on, but I share the m1 with my wife and she prefers macOS.
As far as atomic distros go, one of these days I’ll give one a try, but I’ll need a machine I can tinker around with to do it.
The trick was to install VSCodium from the Toolbox
Another option you can try that I use is the dev containers extension which allows you to move your workspace to different containers from within vscode. I will say however, i have tried many times to get it working in vscodium and have been unsuccessful and it only seems to work in vscode proper.
This is cool. I am trying KDE and sway variants now. I work installing Linux on people coming from windows. Always looking for the best and most stable distro. Fedora atomic might be my next favorite.
I’ve been using Atomic stuff for a while. First Silverblue but now I use Bazzite Gnome.
I actually use Nix ontop of it for dev tools and CLI tools that Flatpak doesn’t handle.
I don’t like the toolbox style of doing things. Nor devbox, dev containers, nix shells, whatever. Too much hassle.
But I do like using Nix + Home-manager to manage my home directory and tools, especially between computers as it’s all in a git repo and has separate configs.
Can you elaborate on why new Linux users shouldn’t use an Atomic system? I’ve been looking to try one so I have no experience as of yet. My Dad wants to try Linux with his upcoming new computer. I was thinking Fedora Kinoite as from what I understand, they just work and have a very low chance of breaking. He doesn’t do anything beyond the basic computing tasks like web browsing, writing documents and spreadsheets, and archiving photos. Do you think it wouldn’t be good for him?
My view on that is more as a precaution on general Linux adoption. If your dad is going to use a distro that employs Flatpak, such as Fedora, then I would coach him a bit on that as he wouldn’t know that Flatpaks are sandboxed. For example if I gave a friend of mine that uses Windows a Flatpak system, they might be confused why Steam can’t see their games drive.
I get specific with Atomic because Atomic systems are very new, they use a lot of in-development technology and are subject to massive changes. New users may take this as a trope across Linux and be rocked off the boat. Obviously not saying a new user strictly cannot use Atomic, but again I highly recommend coaching.
Very reasonable, thank you
Flatpaks need a bit of getting used to since they’re not normal apps, they’re sandboxed so they don’t see each other and also don’t see parts of the underlying filesystem if not given explicit access. They also don’t offer lots of apps.
I would consider a system that relied exclusively on Flatpaks quite limited. I use them occasionally for various reasons, mainly as binary alternatives for something that I’d need to compile from source if I installed it from AUR. But lots of things in AUR aren’t in Flathub.
That being said it might work for a casual user like your dad but he might run into apps that aren’t available. Which is why an immutable distro may not be ideal.
Thank you for the write-up! I liked it overall. Perhaps consider to have like a day in-between proofread sessions. This might have alleviated some passages for which I currently hold some minor nitpicks. It’s clear that you’ve written it with care, but -at least in my case- I notice that my proofreading skills (somehow) are a lot sharper the next day (or something).
VSCodium wouldn’t see that I’ve installed the languages I did, nor find my font (Geist Mono Nerd Font).
Assuming you had VSCodium installed as a Flatpak, perhaps the pointers found in this excellent blogpost could help out with that. FWIW, I succeeded with a similar endeavor without installing the IDE in the Toolbx/Distrobox.
Thanks for the feedback :D. I totally get the proof-reading argument, I’ll take extra time to proof-read my next ones for sure. This post was kinda caught in the crossfire a bit to be honest, as it’s been applied onto four different platforms at this point as I try to find one I like. So I simply forgot to do a thorough proof-read.
I’ve also switched to Fedora Kinoite a little over a year ago after lots of issue-driven frantic distrohopping followed by me having temporarily given up on Linux, and it really stuck for me as well. Fedora Atomic is honestly really cool, and it’s been more reliable than most other distros I tried (even Workstation itself!), and I’m glad I’m not the only one who feels this way ^^’
I really enjoyed reading this, thank you.
I’d be interested in reading more about the benefits of using an atomic distro, if you were looking for ideas on things to write about. I imagine it must make system upgrades easier but what about replicating your setup elsewhere? Like if I was doing some development and now I need to throw some serious hardware at the problem, could I just backup all my Flatpaks some configs, and spin up my desktop on a cloud VM?
I’m pretty sure that’s what Nix is all about, but the learning curve seems steep.