Universal Blue 1.0 - a toolkit for customizing Fedora images
If you're new to the blog I'll give you the quick TLDR: Most traditional desktop linuxes aren't reliable enough to be suitable for consumer usage, but immutable models like Silverblue are seen as too rigid to be customized to what people want. Ironic isn't it, the entire thing is designed to be customized, we just lacked the tools!
For the past year I've been working on a side project to see if concepts pioneered by Fedora Silverblue/Kinoite can be pushed further into the cloud-native space. A melding of cloud tech and desktop tech if you will. Thankfully CoreOS was already building this, we just had to figure it out.
At first I wanted to make a customized version of Fedora that looked like Ubuntu. This crude first try was cute, but not the way things were going.
I ran into Colin Walters at KubeCon and after learning about how they're shoving ostree into an OCI image I knew that the right approach was that this needed to be more of a "kit". This would be the key we needed to having a reliable desktop that can be customized to any level. And thanks to it using normal opencontainer.org containers ... all of a sudden every git repo and registry can become an OS factory. So even though my personal customized Fedora is indeed, the best one, true power comes being able to get the thing you want. So here's a first stab:
You can now make your own custom image-based Fedora Silverblue/Kinoite images, and have GitHub build and serve them back to you. Thanks Microsoft! Your machine will then boot off of this OCI image and use it as it's base OS image. Every day the actions will grab the latest from Fedora, apply your customizations, build the new OS, and then push to the GitHub container registry. Your computer will then get those updates.
Over the past few months we've been working on GitHub Actions, Containerfiles, building Nvidia images (WHAT?), and using and consuming these images to see if it worked as awesome as we thought it would. And they do work well, amazing well. The base image already have over 1,200 pulls (yikes!) so someone out there must be using it.
You currently need to install Silverblue and rebase to these custom images, but don't worry, top people are working on adding custom image support to the installer so yes, one day, you will have that perfect image ready to go.
So how do I use this?
The instructions are in the base image readme. You'll clone the repo and set up the entire thing in your own GitHub space, and then you'll rebase your laptop/machine to that image and you'll be set. You can also just check out this community-maintained list of custom images and add your own. You'll get your updates every day since we're building from Fedora every day, and normal package layering works too.
It gets really fun when you add more than one machine, you'll always have your custom OS config wherever you go.
This is complicated!
I know, I know ... you wish you could customize right on your laptop AND get the benefits of a pristine image, but in many cases that's not an ideal situation to put yourself in if you want to customize stuff. A stock Silverblue install with a bunch of layered packages is more reliable than the old way for sure, but not as reliable as it could be if we just had exactly what you wanted on your image.
Who is this for?
Realistically this project is designed to allow more technical people to be able to make custom images, then you'll just pick the one you like the most and use it and then go from there, let's see what people make!
You'll find some limitations too, most notably installing and customizing flatpaks have to be done post-installation since that process isn't supported in this containerized method yet. We're currently just using a post install script but that can be fixed. The CoreOS team have been amazingly supportive of custom images and have fixed or responded to issues that we've brought up, so you're helping out with the cause just by finding problems.
I've documented my past year here on YouTube if you're interested in the gory details! There are too many people who have been helping out to thank, you know who you are!