Skip to content

ublue-os/bazzite

Repository files navigation

Bazzite

build-bazzite build-bazzite-isos

Download Bazzite


Table of Contents


About & Features

Please see our website for a newcomer-friendly explaination of Bazzite. This readme will cover everything in-depth.

Bazzite is an OCI image that serves as an alternative operating system for the Steam Deck, and a ready-to-game SteamOS-like for desktop computers and living room home theater PCs.

Bazzite is built from ublue-os/main and ublue-os/nvidia using Fedora technology, which means expanded hardware support and built in drivers are included. Additionally, Bazzite adds the following features:

  • Uses the fsync kernel to achieve HDR and expanded hardware support, among numerous other included patches.
  • HDR available in Game mode.
  • NVK available on non-Nvidia builds.
  • Full hardware accelerated codec support for H264 decoding.
  • Full support for AMD's ROCM OpenCL/HIP run-times.
  • xone driver for Xbox controllers.
  • Full support for DisplayLink.
  • Includes Valve's KDE themes from SteamOS.
  • Features optional Valve-inspired GTK3/4 themes matching Vapor and VGUI2 from SteamOS. Install Gradience to make use of them.
  • LatencyFleX, vkBasalt, MangoHud, and OBS VkCapture installed and available by default
  • Uses TuneD in place of PPD, with full integration into GNOME, KDE, and Game mode. This is an incredibly powerful tool that Red Hat offers entire classes on.
  • Patched Switcheroo-Control fixing default-broken iGPU/dGPU switching.
  • Support for Wallpaper Engine. (Only on KDE)
  • ROM Properties Page shell extension included.
  • Full support for Winesync/Fastsync/NTsync.
  • Distrobox preinstalled with automatic updates for created containers.
  • Ptyxis Terminal used as the default in all images. This terminal is specifically designed for the container workflow you'll use in Bazzite. If you wish to return to stock, run ujust restore-original-terminal
  • Automated duperemove service for reducing the disk space used by wine prefix contents.
  • Support for HDMI CEC via libCEC.
  • System76-Scheduler preinstalled, providing automatic process priority tweaks to your focused application and keeping CPU time for background processes to a minimum.
  • Customized System76-Scheduler config with additional rules.
  • Uses Google's BBR TCP congestion control by default.
  • Input Remapper preinstalled and enabled. (Available but default-disabled on the Deck variant, may be enabled with ujust restore-input-remapper)
  • Bazzite Portal provides an easy way to install numerous applications and tweaks, including installing LACT and GreenWithEnvy.
  • Waydroid preinstalled for running Android apps. Set it up with this quick guide.
  • Manage applications using Flatseal, Warehouse, and Gear Lever.
  • OpenRGB i2c-piix4 and i2c-nct6775 drivers for controlling RGB on certain motherboards.
  • OpenRazer drivers built in, Select OpenRazer in Bazzite Portal or run ujust install-openrazer in a terminal to begin using it.
  • OpenTabletDriver udev rules built in, with the full software suite installable via Bazzite Portal or by running ujust install-opentabletdriver in a terminal.
  • Out of the box support for Wooting keyboards.
  • Built in support for Southern Islands (HD 7000) and Sea Islands (HD 8000) AMD GPUs under the amdgpu driver.
  • XwaylandVideoBridge is available for Discord screensharing on Wayland.
  • Webapp Manager is available for creating applications from websites for a variety of browsers, including Firefox.

Desktop

Common variant available as bazzite, suitable for desktop computers.

  • Automatic updates for the OS, Flatpaks, and all Distrobox containers - powered by ublue-update and topgrade.

Important

ISOs can be downloaded from our releases page, and a helpful install guide can be found here.

Rebase from an existing upstream Fedora Atomic to this image:

rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite:stable

or for devices with Nvidia GPUs:

rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-nvidia:stable

For users with Secure Boot enabled: Follow our secure boot documentation prior to rebasing.

Steam Deck/Home Theater PCs (HTPCs)

Important

Devices that are NOT the Steam Deck can still use the bazzite-deck images, but must use a modern AMD GPU. Intel Arc GPUs also have been confirmed to work.

Variant designed for usage as an alternative to SteamOS on the Steam Deck, and for a console-like experience on HTPCs, available as bazzite-deck:

  • Directly boots to Game mode matching SteamOS's behavior.
  • Automatic duperemove greatly trims the size of compatdata.
  • Latest version of Mesa creates smaller shader caches and does not require them to prevent stutter.
  • Able to be booted even if the drive is full.
  • Support for every language supported by upstream Fedora.
  • Uses Wayland on the desktop with support for Steam input.
  • Includes HHD for expanded input support on non-Valve handhelds.
  • Features ported versions of most SteamOS packages, including drivers, firmware updaters, and fan controllers from the evlaV repository.
  • Patched Mesa for proper framerate control from Gamescope.
  • Comes with patches from SteamOS BTRFS for full BTRFS support for the SD card by default.
  • Ships with a ported copy of SDGyroDSU, enabled by default.
  • Option to install Decky Loader, EmuDeck, RetroDECK, and ProtonUp-Qt, among numerous other useful packages on installation.
  • Custom update system allows for the OS, Flatpaks, and Distrobox images to be updated directly from the Game mode UI powered by ublue-update and topgrade.
  • Built in support for Windows dual-boot thanks to Fedora's installation of GRUB being left intact.
  • Update break something? Easily roll back to the previous version of Bazzite thanks to rpm-ostree's rollback functionality. You can even select previous images at boot.
  • Steam and Lutris preinstalled on the image as layered packages.
  • Discover Overlay for Discord pre-installed and automatically launches in both Game mode and on the Desktop if Discord is installed. View the official documentation here.
  • Uses ZRAM(4GB) with the ZSTD compression algorithm by default with the option to switch back to a 1GB swap file and set a custom size for it if desired.
  • Kyber I/O scheduler to prevent I/O starvation when installing games or during background duperemove process.
  • Applies SteamOS's kernel parameters.
  • Color calibrated display profiles for matte and reflective Steam Deck screens included.
  • Default-disabled power-user features, including:
    • Service for limiting the max charge level of the battery, see batterylimit.service and /etc/default/batterylimit. (Works even when the device is off)
    • Built in support for display overclocking. For example, add GAMESCOPE_OVERRIDE_REFRESH_RATE=40,70 to /etc/environment.
    • Ability to use X11 on the desktop if desired by editing /etc/default/desktop-wayland.
    • 32GB RAM mod your Steam Deck? Enjoy double the maximum VRAM amount, automatically applied. (Can you share your soldering skills?)
  • Steam Deck hardware-specific services can be disabled by running ujust disable-bios-updates and ujust disable-firmware-updates in the terminal. These are automatically disabled on non-Deck hardware, and on Decks with DeckHD displays or 32GB RAM mods.
  • More information can be found here on the Bazzite Steam Deck images.

Warning

Due to an upstream bug, Bazzite cannot be used on Steam Decks with 64GB eMMC storage at this time. Upgrading the storage resolves the issue.

Important

ISOs can be downloaded from our releases page, and a helpful install guide can be found here.

Rebase from an existing upstream Fedora Atomic to this image:

rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-deck:stable

Alternative Handhelds

Please refer to our Handheld Wiki for required setting changes and Decky Loader plugins for Steam Gaming Mode on your specific Handheld.

If you're using this image on a handheld other than the Steam Deck, you can get TDP control via the SimpleDeckyTDP Decky Loader Plugin.

  • First install Decky Loader with: ujust setup-decky
  • Then install SimpleDeckyTDP with: ujust setup-decky simpledeckytdp

If you're using a handheld supported by hhd (Such as the Lenovo Legion Go and the ASUS Ally), you can also get the plugin to integrate an option menu for it into game mode with: ujust setup-decky hhd-decky

Be sure to also read the hhd documentation, some handhelds require specific setting changes/tweaks to function properly.

We also ship ujust commands to install various CSS Loader themes that can't be found on the CSS Loader store. These will be automatically updated with Bazzite if installed.

# Install ROG Ally Theme for CSS Loader (https://github.com/semakusut/SBP-ROG-Ally)
ujust install-rog-ally-theme

# Install Lenovo Legion Go for CSS Loader (https://github.com/frazse/SBP-Legion-Go-Theme)
ujust install-legion-go-theme

# Install PS5-to-Xbox glyph theme for hhd & CSS Loader (https://github.com/frazse/PS5-to-Xbox-glyphs)
ujust install-hhd-xbox-glyph-theme

GNOME

Builds with the GNOME desktop environment are available in both desktop and deck flavors. These builds come with the following additional features:

Important

ISOs can be downloaded from our releases page, and a helpful install guide can be found here.

Rebase from an existing upstream Fedora Atomic to this image:

rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-gnome:stable

To rebase an existing ostree system to the desktop with Nvidia drivers release:

rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-gnome-nvidia:stable

Warning

Due to an upstream bug, Bazzite cannot be used on Steam Decks with 64GB eMMC storage at this time.

To rebase an existing ostree system to the Steam Deck/HTPC release:

rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-deck-gnome:stable

For users with Secure Boot enabled: Follow our secure boot documentation prior to rebasing.

Features from Upstream

Universal Blue

  • Proprietary Nvidia drivers pre-installed. (Only for Nvidia images)
  • Flathub is enabled by default.
  • ujust commands for convenience.
  • Multi-media codecs out of the box.
  • Rollback Bazzite from any build within the last 90 days.

Features from Fedora Linux (Kinoite & Silverblue)

  • A rock solid and stable base.
  • System packages stay relatively up to date.
  • Can layer Fedora packages to the image without losing them between updates.
  • Security focused with SELinux preinstalled and configured out of the box.
  • The ability to rebase to different Fedora Atomic images, if desired, without losing user data.
  • Printing support thanks to CUPS being preinstalled.

Why

Bazzite started as a project to resolve some of the issues that plague SteamOS, mainly out of date packages (despite an Arch base) and the lack of a functional package manager.

Despite this project also being image-based, you are able to install any Fedora package straight from the command line. These packages will persist across updates (So go ahead and install that obscure VPN software you spent an hour trying to get working in SteamOS). Additionally, Bazzite is updated multiple times a week with packages from upstream Fedora, giving you the best possible performance and latest features - all on a stable base.

Bazzite ships with the latest Linux kernel and SELinux enabled by default with full support for secure boot (Run ujust enroll-secure-boot-key and enter the password ublue-os if prompted to enroll our key) and disk encryption, making this a sensible solution for general computing. (Yes, you can print from Bazzite)

Read the FAQ for details on what makes Bazzite stand out from other Linux operating systems.

Showcase

KDE Vapor Theme KDE VGUI2 Theme Steam Game Mode Waydroid Distrobox Terminals GNOME Vapor Theme GNOME VGUI2 Theme

Documentation & Newsletters

View additional documentation surrounding the project.

Check out our newsletters that get published on a regular basis for updates on the project.

Custom Packages

Ported SteamOS and ChimeraOS packages, among others used by Bazzite, are built on Copr in bazzite and bazzite-multilib.

Package Status
bluez Build Status
ds-inhibit Build Status
duperemove Build Status
extest Build Status
gamescope Build Status
gamescope-session-plus Build Status
gamescope-session-steam Build Status
gamescope-shaders Build Status
galileo-mura Build Status
gnome-randr-rust Build Status
gnome-shell Build Status
gnome-shell-extension-bazzite-menu Build Status
gnome-shell-extension-caribou-blocker Build Status
gnome-shell-extension-compiz-windows-effect Build Status
gnome-shell-extension-hanabi Build Status
gnome-shell-extension-hotedge Build Status
joystickwake Build Status
jupiter-fan-control Build Status
jupiter-hw-support-btrfs Build Status
kf6-kio Build Status
mangohud Build Status
mesa Build Status
pipewire Build Status
powerbuttond Build Status
python3-hid Build Status
ryzenadj Build Status
sdgyrodsu Build Status
steamdeck-dsp Build Status
steamdeck-gnome-presets Build Status
steamdeck-kde-presets Build Status
steamdeck-kde-presets-desktop Build Status
steam_notif_daemon Build Status
ublue-update Build Status
udisks2 Build Status
unl0kr Build Status
upower Build Status
vpower Build Status
wireplumber Build Status
xwiimote-ng Build Status

Additionally, the following packages are used from other Copr repos:

Package Status
discover-overlay Build Status
hhd Build Status
joycond Build Status
kernel-fsync Build Status
latencyflex-vulkan-layer Build Status
mutter Build Status
nerd-fonts Build Status
noise-suppression-for-voice Build Status
obs-vkcapture Build Status
ptyxis Build Status
rom-properties Build Status
steamdeck-kmod Build Status
system76-scheduler Build Status
tuned-ppd Build Status
wallpaper-engine-kde-plugin Build Status
webapp-manager Build Status

Verification

These images are signed with sigstore's cosign. You can verify the signature by downloading the cosign.pub key from this repo and running the following command:

cosign verify --key cosign.pub ghcr.io/ublue-os/bazzite

Secure Boot

Warning

Steam Deck Users: The Steam Deck does not come with secure boot enabled and does not ship with any keys enrolled by default. Do not enable this unless you absolutely know what you're doing.

Secure boot is supported with our custom key. The pub key can be found in the root of this repository here. If you'd like to enroll this key prior to installation or rebase, download the key and run the following:

sudo mokutil --timeout -1
sudo mokutil --import secure_boot.der

For users already on a Universal Blue image, you may instead run ujust enroll-secure-boot-key.

If asked for a password, use ublue-os.

Contributor Metrics

Bazzite

Star History

Star History Chart

Special Thanks

Bazzite is a community effort and wouldn't exist without everyone's support. Below are some of the people who've helped us along the way:

  • rei.svg - For creating our logo and overall branding.
  • SuperRiderTH - For creating our Steam game mode startup video.
  • evlaV - For making Valve's code available and for being this person.
  • ChimeraOS - For gamescope-session and for valuable support along the way.
  • Jovian-NixOS - For supporting us with technical issues and for creating a similar project. Seriously, go check it out. It's our Nix-based cousin.
  • sentry - For assistance with needed kernel patches and for creating the kernel-fsync repo we now use.
  • nicknamenamenick - For being the MVP nearly single-handedly upkeeping our documentation and support literature, and countless cases of helping users.
  • Steam Deck Homebrew - For choosing to support distributions other than SteamOS despite the extra work, and a special thanks to PartyWumpus for getting Decky Loader working with SELinux for us.
  • cyrv6737 - For the initial inspiration and the base that became bazzite-arch.

Build Your Own

Bazzite is built entirely in GitHub and creating your own custom version of it is as easy as forking this repository, adding a private signing key, and enabling GitHub actions.

Familiarize yourself on keeping secrets in github. You'll need to generate a new keypair with cosign. The public key can be in your public repo (Your users need it to check the signatures), and you can paste the private key in Settings -> Secrets -> Actions with the name SIGNING_SECRET.

We also ship a config for the popular pull app if you'd like to keep your fork in sync with upstream. Enable this app on your repo to keep track of Bazzite changes while also making your own modifications.

Join The Community

You can find us on the Universal Blue Discord and view the archive of support threads without an account.

Discuss and create user guides over at the Universal Blue Discourse Forums.

Follow Universal Blue on Mastodon.