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 fishThe 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-liveI 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-openjdkAll packages that you install inside toolbox are not available to the system globally.
# List local toolboxes
$ toobox listModules
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.15rpm-ostree has an experimental way to install modules globally. Unfortunately, it didn't work for me.
$ rpm-ostree ex module enable nodejs:14Misc
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.