2022-01-10

Trying out Fedora Silverblue 35

Installation

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.

Configuration

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

Flathub

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

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 🤔.

Toolbox

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

Modules

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
v14.18.2
$ npm --version
6.14.15

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

$ rpm-ostree ex module enable nodejs:14

Misc

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 Version Availability on Fedora Notes
Ansible:2.10 Ansible:2.9 and Ansible core:2.11 I don't fully understand the separation into ansible and ansible-core. Perhaps, ansible-core will be enough for me use case.
Chromium Chromium
Emacs:27 Emacs:27
Firefox Firefox comes installed
IDEA Community IDEA Community
KeePassXC KeePassXC
Virtual Box Can try Gnome Boxes
Remmina Remmina
Telegram Telegram
VLC VLC
aspell apell
aspell-en apell-en
docker docker I'd like to switch to podman which comes preinstalled.
docker-compose docker-compose Let's hope that podman and podman-compose can simply replace docker.
earlyoom earlyoom Install only if system starts to hang.
fd:8.3 fd:8.2
fish:3.3 fish:3.3
go:1.17 go:1.16 I don't need 1.17.
OpenJDK 11 OpenJDK 11
neovim:0.6 neovim:0.6
nginx nginx
Node 14 Install a Node 14 module Comes with NPM 6.
maven:3 maven 3
packer Install it from official repo
Python 3 Comes preinstalled
rustup rust:1.57 and cargo
Slack Slack
Syncthing GTK Syncthing GTK
sqlite 3 sqlite 3
terraform Install it from official repo Looks the same as for packer
tig tig
tree tree
zola:0.14 zola:0.12 This is a bit outdated.

This website helps with finding the right packages for developer tools: https://developer.fedoraproject.org/tech.html

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