---
title: "Bazzite: an immutable gaming-first Fedora variant"
date: 2026-04-25
tags: [linux, bazzite, immutable-os, gaming, fedora]
summary: Short orientation to Bazzite. What it is, why the immutable layout matters, how it changes day-to-day system management.
aliases: [bazzite, bazzite-overview]
---

[Bazzite](https://bazzite.gg/) is a community-built Linux distribution derived from Fedora's atomic desktop family ([Silverblue](https://fedoraproject.org/atomic-desktops/silverblue/), [Kinoite](https://fedoraproject.org/atomic-desktops/kinoite/)) with a heavy focus on gaming, handhelds (Steam Deck, ROG Ally), and home-theatre boxes. Ships with the Steam stack, [Mesa](https://www.mesa3d.org/) drivers, Proton-tuned kernels, and `gamescope` preconfigured.

## Mental model

Two things change relative to a traditional Fedora install:

1. **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 install` of arbitrary RPMs into the running system. The OS image is built upstream and you rebase between images.
2. **User software lives in containers and Flatpaks.** [Flatpak](https://flatpak.org/) for graphical apps, [`distrobox`](https://distrobox.it/) and [`toolbx`](https://containertoolbx.org/) for traditional CLI tooling, [Homebrew](https://brew.sh/) 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`, or `ujust update` on Bazzite (which wraps the same machinery and also refreshes Flatpaks). Reboot to apply. See [[rpm-ostree-rebase-cheatsheet]] 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 [[flatpak-1password-browser-bridge]] for some notes on that.
- **Install a CLI tool.** Spin up a `toolbox` or `distrobox` container 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](https://podman.io/), not Docker. See also [[podman-vs-docker]].


## 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 via `rpm-ostree`.
- **Layered RPM.** Added via `rpm-ostree install`. Listed by `rpm-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](https://docs.bazzite.gg/).
