OSTREE feed pin

This post is just a collection of thoughts; my ideas are not vetted, which is why I’m posting here: to process my ideas with the collective mindshare. This concept simply provides automation for something that is currently available as a manual solution via “pins”. If it’s an interesting idea, I’ll just create a feature request for OSTREE.

OSTREE currently allows users to pin an image to ensure it is not rotated out of history. However, the current implementation is a static pin. The following concept would define dynamic pinning based off of a tag that is applied to an ostree image.

My idea for “feed pinning” would mean that the user can tag an image with a feed name. If an image is tagged and then updated: the updated image gets pinned automatically, and the previous image is automatically unpinned.

For example, on my system I may have two images: Silverblue and Kinoite. Feed tagging would allow the system to automatically maintain these two images without having to manually pin the latest image each time. With this example, I would tag the latest Silverblue image as a feed called “silverblue”, as well as latest Kinoite image with “kinoite” feed name. After applying an update to image in “kinoite” feed, new image automatically gets pinned, and older image is automatically unpinned. This functionality would provide effortless maintenance to ensure my kinoite image has the latest KDE updates.

This functionality would not have any impact on existing static pins, so any image statically pinned would remain pinned.

This idea may be useful for other enterprise use cases too. For example, let’s say I was to set up the workstation as a thin client or a kiosk: I could create a minimal ostree image that includes openbox and Firefox flatpak, but I still may want to maintain another image on the same host with the upstream Silverblue image to get access to toolbox and basic admin tools.


1 Like

Reading your use cases, it feels like it would be easier to manage with package overlays than with ostree refs that can only be switched to via a reboot:

  • To get both GNOME & KDE, you can overlay KDE on Silverblue and choose at session login.
  • To create a kiosk setup, you can start with Silverblue, overlay openbox, setup a default auto-login session and add a fallback on another TTY for GNOME.

Or maybe you could build purpose specific ostree images for each use case?

From what I have seen in the past, having both Gnome and KDE installed creates some conflicts in the settings and defaults.

My thought was, similar to what you suggested, have a specific ostree image for each use case. That way I can reboot to my Gnome image if that’s what i’m feeling like. Or reboot into the Kinoite image if I want to explore the latest KDE updates. Or reboot into a custom Fedora Pantheon image if my wife wants to use the computer. But the hope would be that when applying updates to any image, they automatically re-pin as the latest update in that feed, so that I dont have to manually unpin and pin images.

I am not running this kind of setup on Silverblue/Kinoite but my regular Workstation system has both installed and I have not encountered any major issue so far.

It’s been awhile since ive tried it, so maybe i just need to give it another shot.

Nonetheless, my long term hope was to have multiple “clean” desktops installed so i can live in them from time to time and explore. However, it might just make more sense to wait until Silverblue/OSTree-based OSs get better dual boot support (unless this exists already?).