Running snaps on Fedora Silverblue
My foray into immutable Linux distro desktops continues.
After trying out openSUSE's MicroOS desktop and enjoying it I thought I would come back and try Fedora Silverblue and give it a shot. OpenSUSE never broke by the way if you're wondering, I mostly don't have unlimited laptops (yet!) so I decided to change it up a bit.
It took some time to get it exactly how I wanted so I decided to write it down. I wanted to get snaps on my desktop since that's how I get my apps, and since flatpak support already comes with it I can have both.
Doing what you're not supposed to be doing
There are two main problems with running snaps on silverblue, namely the filesystem is read only, so you can't make /snap
easily, and your home directory is in /var/home/jorge
instead of /home/jorge
. Similar to running it on openSUSE we lie to the OS. Thankfully Gabriel Mattoso was awesome enough to make some scripts and toss them on github:
I have a small permissions problem with one of the service units, but worse case I run that by hand after an update, I'm still investigating, any help there would be appreciated!
I was able to get all my snaps running and install all my applications, and it only took a quick rsync of ~/snap to the new install to get most of my state onto it. Nice.
Cranking it to 11
Since I can now recover from just about anything I can now make this thing an appliance. First thing I wanted to do is to automate the rpm-ostree updates.
This excellent blog post from Micah Abbott made it really easy to enable automatic download and staging of updates. The nice bit is they integrate that right into the rpm-ostree status
command, that's really nice!
❯ rpm-ostree status
State: idle
AutomaticUpdates: stage; rpm-ostreed-automatic.timer: last run 40min ago
Deployments:
● ostree://fedora:fedora/34/x86_64/silverblue
Version: 34.20210705.0 (2021-07-05T01:10:06Z)
BaseCommit: 95f69dd67808a1620b6aedf3c2588d6ea2e3a0057613dd3752b2c440c0699511
GPGSignature: Valid signature by 8C5BA6990BDB26E19F2A1A801161AE6945719A39
LayeredPackages: fedora-workstation-repositories gimp gnome-extensions-app gnome-tweaks snapd
ostree://fedora:fedora/34/x86_64/silverblue
Version: 34.20210705.0 (2021-07-05T01:10:06Z)
BaseCommit: 95f69dd67808a1620b6aedf3c2588d6ea2e3a0057613dd3752b2c440c0699511
GPGSignature: Valid signature by 8C5BA6990BDB26E19F2A1A801161AE6945719A39
LayeredPackages: fedora-workstation-repositories gnome-extensions-app gnome-tweaks snapd
Similar to with openSUSE, I didn't want to install too much stuff here so that we can keep the OS and apps decoupled. I did install gnome-tweaks and gimp as canaries just to learn how to interact with layered packages but I'll likely remove them later.
Unlike snaps you have to manually update flatpaks (ugh), so I was reasonably certain someone had fixed this already, and lo and behold, thanks to Jordan Williams for blogging these systemd service units to make that easier!
TODO: Setting up Toolbox
Unlike openSUSE, Red Hat switched Silverblue to the newer toolbox, and unlike the old bash one you can't just toss a .toolboxrc
in ~ and point to an Ubuntu image.
Martin Pitt has a solution for this, I just haven't done it yet and figured I would leave it here for reference.
Conclusion
And that's pretty much it. The main difference between openSUSE MicroOS and Silverblue is that openSUSE follows their tumbleweed release (that's their sid in Debian-speak), whereas Silverblue follows Fedora 34 (at this time of writing) and then you manually rebase on every major release. You can optionally follow rawhide too, which is neat but too aggressive for me.
It seems to me like the release number is just arbritrary now, they already do major updates of components in a given release of Fedora. I think that you could probably just have "Fedora" and not even do a release number similar to how browsers do it, though I would expect that lining up with the other flavors and the traditional OS is probably more important.