A UniversalBlue repo creator! (fun with AI)

So, Fridays are my “Fun with AI” time, just to see what I can direct it to do. I like to learn coding manually myself, but learning how to use AI is just part of keeping your job nowadays…so..

And HERE is last Friday’s thing…

What is it?

uBlue Builder is a beginner-focused terminal tool for Bazzite, Aurora, and Bluefin users that creates and updates signed custom Universal Blue image repos on GitHub. It can scan your current system for layered packages, turn those into a GitHub-backed image repo, and keep the repo config, workflow, and README in sync as you make changes later.

  • Creates a new public GitHub repo for a custom Universal Blue image
  • Writes the repo files needed for a GitHub Actions build
  • Lets users add packages, COPR repos, services, and base-package removals
  • Updates repos that were previously created by this tool
  • Can scan a running rpm-ostree / bootc system and carry layered packages into a new image repo

If you try it out, read the readme! (especially the disclaimer…)

So I’ve made repos, updated them, and used the part of the utility which will scan an existing live image you are running for layered packages that were installed with rpm-ostree install and add them to your GitHub repo. Some menus need some work.

It’s got some work left to do, and some warnings to add, etc. But…it does work, I think! COPR part isn’t tested.

I’ve made some major improvements and squashed bugs, so if anybody wants to re-download it, this is a good time as I will not touch it for a while. Time to let it settle. I may create an asciinema video of it in action and post it here.

Next update!

Now, I said I was going to leave it alone, and I did! But then I thought, “This could support all Fedora Atomic images fairly easily.”

So, I’ve created a new repo with that in mind. The old repo is still there, and at some point, I’ll retire it, but the new repo supports all Universal Blue images AND all the Fedora Atomic desktop images as well! So, for you SWAY users, here ya go! :wink:

Now, I’ve not built EVERY desktop; I just tried SWAY, and it worked like the Universal Blue images, so it should be fine.

Enjoy!

I might add a feature to include the Brew OCI image Universal Blue has made in any image the user wants to create (optional of course).

Quick update since my last post:

The tool has grown quite a bit over the last few weeks. It still creates and updates GitHub-backed custom bootc image repos, and it could already scan the current rpm-ostree / bootc system to carry layered packages into a new image repo. The newer work has mostly expanded the build options, update workflow, and safety checks. I have NOT tested all these features yet; in fact, I’d love it if anybody uses it and could report any issues :wink: If not, that’s ok. I’m just having fun with it anyhow, but I think it could be useful for people.

The github stuff in the notable changes is only if you fork it and muck with it yourself. Generally a user would clone and run it (yea, I’ll package it up at some point with actual release numbers)

Notable changes:

  • It now supports both Containerfile and BlueBuild based repos.
  • Fedora Atomic users can optionally add Homebrew using the Universal Blue brew OCI layer.
  • The app can show recent GitHub Actions build status without leaving the terminal UI.
  • Containerfile users can run a local Podman test build before pushing changes.
  • It handles cosign signing setup and can now rotate the repo’s cosign signing key from the update menu.
  • The update flow has gotten more useful overall: BlueBuild support, Homebrew toggles, build status, local test builds, and key rotation are now part of the guided workflow.
  • There has been a lot of hardening around generated workflows, pinned GitHub Actions, signing edge cases, GitHub error handling, and tests.
  • The docs and guardrails are clearer, especially around what the tool manages and what users should review.

It is still beta and still AI-assisted, so please treat it cautiously. Review what it changes, keep backups where appropriate, and expect rough edges. But it is much more capable than it was when I first posted it.

Repo: