Erasing the Mystique: 10 Fishes in the Sea
A Linux distribution shouldn't be a sacred artifact maintained by priesthood. It should be a composition of choices — base OS, desktop, kernel, drivers — assembled by a factory and delivered as an image. Today, TunaOS has 10 variants spanning 4 package managers and every major Linux family. Here's why, and where we're going.
The Mystique
For decades, "making a Linux distro" meant: fork a package set, maintain an installer, hand-tune configs, ship ISOs on a 6-month cadence, and pray nothing breaks between your packages and upstream. The result: hundreds of distros that are 95% the same packages with 5% different defaults.
The mystique is that this is hard. That it takes a team of package maintainers and release engineers. That choosing Arch vs Fedora vs Debian is a permanent, load-bearing decision.
We reject this.
The Factory
TunaOS is not a distribution. It's an image factory. The inputs are:
base OS × desktop × kernel × drivers = bootable image
The output is an OCI container image you can bootc switch to — atomically, with rollback. Changing your "distro" is a one-line command. The factory stamps out every combination automatically.
The Fishes
Every TunaOS variant is named after a fish. Today there are 10:
| Fish | Base | Package Manager | Character |
|---|---|---|---|
| 🐠 Yellowfin | AlmaLinux Kitten 10 | dnf | Bleeding-edge Enterprise Linux |
| 🐟 Albacore | AlmaLinux 10 | dnf | Stable Enterprise Linux |
| 🍣 Skipjack | CentOS Stream 10 | dnf | Upstream RHEL |
| 🔒 Redfin | RHEL 10 | dnf | Supported, subscription-based |
| 🎣 Bonito | Fedora 44 | dnf | Cutting-edge Fedora |
| 🐟 Grouper | Ubuntu 26.04 | apt | Ubuntu on bootc |
| 🐟 Flounder | Debian Trixie | apt | Debian stable on bootc |
| 🐟 Flounder-sid | Debian Sid | apt | Debian rolling on bootc |
| 🐟 Marlin | Arch Linux | pacman | Rolling release, latest everything |
| 🐟 Wahoo | CachyOS | pacman | Performance-optimized Arch (BORE, LTO, v3) |
Each fish gets 6 desktops: GNOME, GNOME 50, KDE Plasma, COSMIC, Niri, and XFCE. Each desktop can optionally layer an HWE kernel or NVIDIA drivers on top.
How We Got Here
A week ago, adding a new base OS meant writing hundreds of lines of new shell scripts. Today it means:
- A Containerfile that bootcifies the stock container image (~150 lines, mostly the ostree filesystem layout)
- A
pacman:orapt:section in each desktop manifest (the packages that make up GNOME/KDE/etc. on that OS) - An entry in
build-config.yml(the variant name, base image, platforms)
That's it. The generic installer reads the YAML, installs the right packages for the detected OS, and produces a working image. No per-distro bash scripts. No per-DE-per-distro combinatorial explosion.
What This Means For Users
You're not locked in. Want to try Arch after running AlmaLinux for a year? sudo bootc switch ghcr.io/tuna-os/marlin:kde. Want the CachyOS performance kernel on your KDE desktop? sudo bootc switch ghcr.io/tuna-os/wahoo:kde. Don't like GNOME 50? Switch to GNOME 49: sudo bootc switch ghcr.io/tuna-os/yellowfin:gnome.
The matrix is your menu. Every cell is a valid, tested, bootable system.
What's Next
- Build validation — getting CI green for all 10 variants across all platforms
- ISOs — tacklebox-generated live ISOs for every variant×desktop combination
- NVIDIA on Arch/CachyOS —
pacman -S nvidia-openas a manifest entry (no akmods needed) - More desktops — Hyprland, Sway, Budgie are each one YAML file away
- Community manifests — let anyone contribute a desktop definition without touching build scripts
Credits
This wouldn't be possible without:
- bootcrew — reference bootc implementations for Arch and Debian
- jumpvi / bootc-shindig — bootc-deb packages for Ubuntu/Debian
- CachyOS — performance-optimized Arch repos and Docker images
- Universal Blue & Project Bluefin — proving bootc desktop works at scale
- bootc — the engine that makes all of this possible
The mystique is dead. A distro is just data in, image out. Pick your fish.
