All projects

Personal OS

A personal variation on Project Bluefin's Dakota, reusing upstream components with a different system configuration and application selection.

Adapting Dakota

Personal OS is my variation on Project Bluefin's Dakota, reusing its build recipes, components, and integration work alongside GNOME and freedesktop-sdk. My work focuses on reorganizing that configuration for my desktop, maintaining upstream updates, and resolving integration issues. It uses BuildStream and bootc for image builds and deployment.

  • Adapted upstream application and service recipes for my desktop, including Flatpak applications, Docker, Podman, Distrobox, Tailscale, and QEMU/libvirt.
  • Added GitHub Actions builds that assemble, validate, split into reusable layers, and publish the image to GHCR.

Builds and updates

Renovate opens dependency update pull requests for upstream components and tools. GitHub Actions validates OS changes in pull requests and publishes built images to GHCR with date-based and commit tags.

  • Configured installed systems to check for bootc updates and stage them for the next user-initiated reboot.

Bring-up and validation

I installed the image onto a fresh virtual disk and tested it in QEMU/KVM through GNOME initial setup, login, and reboot. The validation covered persistent writable state, native and Flatpak applications, container networking, virtualization, and desktop integration.

  • Diagnosed and fixed image composition, initramfs boot, Docker and firewalld, and GNOME Shell extension installation issues found during bring-up.
  • Documented what was tested and kept unfinished installer, update, hardware, and Secure Boot work explicit.

Built with

Linux, GNOME, freedesktop-sdk, BuildStream, bootc, OCI, systemd, Btrfs, Podman, QEMU/KVM, GitHub Actions