I decided during my midwinter vacation that I'd try out Fedora Silverblue on my desktop, and I liked it, so here I am still using it on my work laptop.
Silverblue is a version of Fedora using rpm-ostree to provide a minimal and immutable base OS, providing a platform for running applications in containers.
Previously I was using Ubuntu with a lot of Ansible playbooks for installing things both globally and in my home directory. I used to keep those playbooks in the same directory as my dotfiles, but after the switch to Fedora I removed them. If anyone is curious about what that looked like, they are here.
The benefits I was hoping for was
- Make my laptop setup more "out of the box", to get away from having a big collection of Ansible roles for varied purposes, that all have to work together on my laptop.
- Simplifying my base OS by moving development stuff and applications into containers.
- Plain Gnome desktop without custom themes.
- RPM-based. This is not an advantage in itself, but makes things a bit easier as I mostly deal with RHEL and Centos for work.
For applications, I'm using mostly Flatpak. I found after a while that applications I had installed from the Fedora Flatpak repository was more buggy than the ones I had from Flathub, so at one point I made a switch to get all my applications from Flathub.
Here's the entire command line to get
rpm-ostree into the current state of my laptop:
rpm-ostree install \
rpm-ostree install 'https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-31.noarch.rpm'
rpm-ostree install 'https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-31.noarch.rpm'
rpm-ostree install fuse-exfat exfat-utils
As you can see, there's just a few things that has to be added as RPMs. Not a lot, considering that in the default installation, Silverblue just comes with a terminal, a file manager, and Firefox, in terms of applications.
The main thing I've done so far to make it convenient for me to use as a development system is to create container images for use with Toolbox. I keep these images here in GitLab. I'll write more about that in a future article.
For now I'll summarize it by saying I've created some Toolbox environments for various languages, configured to keep caches and such in the container, rather than my
$HOME, and it's working quite nicely so far.
I used the default Ubuntu desktop before, so this is not a dramatic change, but I like the look and feel of the default Gnome desktop. I also get a somewhat newer version of it, which is nice.
A few weeks after the switch, Tobias Bernard (Gnome developer) posted the article Doing Things That Scale, which resonated with me. While I've done some hacking to set up my development environments "just right" as described above, I'm trying to think of how to make that work more usable for others, maybe by contributing back to the Toolbox project, or by making some sort of GUI wrapper to manage a set of development environment toolboxes.