I've just learned about Fedora Silverblue. It's website doesn't really do a great job at explaining what this project really is. A quote from Fedora Magazine helps a bit:

Silverblue is a codename for the new generation of the desktop operating system, previously known as Atomic Workstation. The operating system is delivered in images that are created by utilizing the rpm-ostree project. The main benefits of the system are speed, security, atomic updates and immutability.

The installation was super easy. I just downloaded the ISO file and attached it to my VM. There is a graphical installer that has only a few steps. Disk encryption worked without a hiccup.


With Silverblue you can install tools globally with Flatpak or with rpm-ostree.


Set up Flathub by going to flatpack/Fedora and clicking on a "Flathub repository file" button. Now you should be able to find applications from Flathub using "Software" application.


rpm-ostree is used to update the system but also to install overlay packages globally.

$ rpm-ostree install golang neovim emacs fish

The changes will be applied only after a system reboot. Luckily, there seems to be an exprimental way to apply the changes immediately:

$ sudo rpm-ostree ex apply-live

I used packages for the search. Maybe there is a better way 🤔.


Toolbx is a container which could be used for exprimentation and installing packages without affecting the system.

# Start a container
$ toolbox

# Inside toolbox you can use dnf to install packages
$ dnf install java-11-openjdk

All packages that you install inside toolbox are not available to the system globally.

# List local toolboxes
$ toobox list


By default dnf and rpm-ostree install the latest version of the package. In some cases I want to install an older version of the package. It is possible by using modules.

$ toolbox

# List available modules
$ dnf module list

# Install the module
$ sudo dnf module install nodejs:14/default

$ node --version
$ npm --version

rpm-ostree has an experimental way to install modules globally. Unfortunately, it didn't work for me.

$ rpm-ostree ex module enable nodejs:14


I couldn't get Peek to work but luckily there is a Kooha for screen recording that just works!

You can change default shell with:

$ sudo usermod --shell /path/to/shell <user>

Availability of software I use🔗

Table created on 2022-01-10

Name and VersionAvailability on FedoraNotes
Ansible:2.10Ansible:2.9 and Ansible core:2.11I don't fully understand the separation into ansible and ansible-core. Perhaps, ansible-core will be enough for me use case.
FirefoxFirefox comes installed
IDEA CommunityIDEA Community
Virtual BoxCan try Gnome Boxes
dockerdockerI'd like to switch to podman which comes preinstalled.
docker-composedocker-composeLet's hope that podman and podman-compose can simply replace docker.
earlyoomearlyoomInstall only if system starts to hang.
go:1.17go:1.16I don't need 1.17.
OpenJDK 11OpenJDK 11
Node 14Install a Node 14 moduleComes with NPM 6.
maven:3maven 3
packerInstall it from official repo
Python 3Comes preinstalled
rustuprust:1.57 and cargo
Syncthing GTKSyncthing GTK
sqlite 3sqlite 3
terraformInstall it from official repoLooks the same as for packer
zola:0.14zola:0.12This is a bit outdated.

This website helps with finding the right packages for developer tools:

I probably don't need to install all those tools globally. I should try scoping them with the toolbx.