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
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 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
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.|
|Firefox||Firefox comes installed|
|IDEA Community||IDEA Community|
|Virtual Box||Can try Gnome Boxes|
|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.|
|go:1.17||go:1.16||I don't need 1.17.|
|OpenJDK 11||OpenJDK 11|
|Node 14||Install a Node 14 module||Comes with NPM 6.|
|packer||Install it from official repo|
|Python 3||Comes preinstalled|
|rustup||rust:1.57 and cargo|
|Syncthing GTK||Syncthing GTK|
|sqlite 3||sqlite 3|
|terraform||Install it from official repo||Looks the same as for packer|
|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.