Bazzite: an immutable gaming-first Fedora variant
Short orientation to Bazzite. What it is, why the immutable layout matters, how it changes day-to-day system management.
Bazzite is a community-built Linux distribution derived from Fedora's atomic desktop family (Silverblue, Kinoite) with a heavy focus on gaming, handhelds (Steam Deck, ROG Ally), and home-theatre boxes. Ships with the Steam stack, Mesa drivers, Proton-tuned kernels, and gamescope preconfigured.
# Mental model
Two things change relative to a traditional Fedora install:
- The base system is image-based and read-only. Updates are atomic. You boot into a new commit or roll back to the previous one. There's no
dnf installof arbitrary RPMs into the running system. The OS image is built upstream and you rebase between images. - User software lives in containers and Flatpaks. Flatpak for graphical apps,
distroboxandtoolbxfor traditional CLI tooling, Homebrew for one-shot CLI packages.
That split is why Bazzite is hard to brick (you can break the user side without touching boot).
# Day-to-day
- Update.
rpm-ostree upgrade, orujust updateon Bazzite (which wraps the same machinery and also refreshes Flatpaks). Reboot to apply. See rpm-ostree: rebase, pin, rollback for rebase, pin, and rollback. - Install a GUI app. Prefer Flatpak:
flatpak install flathub <app>. Desktop integration is fine for almost everything. Notable exception is browser → 1Password. See Making 1Password browser extensions talk to the Flatpak desktop app for some notes on that. - Install a CLI tool. Spin up a
toolboxordistroboxcontainer running Fedora or Arch, install the tool inside, export the binary. Containers are throwaway. Destroy and recreate when you want a clean state. - Container runtime. Bazzite ships Podman, not Docker. See also Living without docker: podman as a daily driver.
# When troubleshooting
"Where does this thing live?" is harder on Bazzite than on stock Fedora. A given binary is in one of four places:
- Image layer. Read-only at
/usr. Changes only viarpm-ostree. - Layered RPM. Added via
rpm-ostree install. Listed byrpm-ostree status -v. - Flatpak. Sandboxed under
/var/lib/flatpak. - Container. Inside
distrobox/toolbox. Invisible to the host package manager.
Knowing which layer a misbehaving binary lives in tells you which tool fixes it. A 1Password browser plugin failing to talk to the desktop app is almost always a Flatpak permission / host-bridge problem, not a system one.
# Privacy footnote
Everything in this note is public Bazzite behaviour, nothing specific to my install. For the authoritative reference, man rpm-ostree and the Bazzite docs.