mirror of
https://github.com/ublue-os/bazzite.git
synced 2025-02-21 09:39:49 +00:00
234 lines
23 KiB
Markdown
234 lines
23 KiB
Markdown
<p align="center">
|
|
<img src="/repo_content/logo.png?raw=true" alt="Bazzite Logo"/>
|
|
</p>
|
|
<p align="center">
|
|
<img src="/repo_content/text_logo.png?raw=true" alt="Bazzite"/>
|
|
</p>
|
|
|
|
[](https://github.com/ublue-os/bazzite/actions/workflows/build.yml)
|
|
[](https://github.com/ublue-os/bazzite-arch/actions/workflows/build.yml)
|
|
|
|
## About & Features
|
|
|
|
Bazzite is an OCI image that serves as an alternative operating system for the [Steam Deck](https://www.steamdeck.com/), and a ready-to-game SteamOS-like for desktop computers and living room home theater PCs.
|
|
|
|
Bazzite is built from [ublue-os/main](https://github.com/ublue-os/main) and [ublue-os/nvidia](https://github.com/ublue-os/nvidia) using [Fedora](https://fedoraproject.org/) technology, which means expanded hardware support and built in drivers are included. Additionally, Bazzite adds the following features:
|
|
|
|
- Proprietary Nvidia drivers pre-installed.
|
|
- Full hardware accelerated codec support for H264 decoding.
|
|
- Full support for AMD's ROCM OpenCL/HIP run-times.
|
|
- [xpadneo](https://github.com/atar-axis/xpadneo) driver for wireless Xbox One controllers.
|
|
- Full support for [DisplayLink](https://www.synaptics.com/products/displaylink-graphics).
|
|
- Includes Valve's KDE themes from SteamOS.
|
|
- [LatencyFleX](https://github.com/ishitatsuyuki/LatencyFleX), [vkBasalt](https://github.com/DadSchoorse/vkBasalt), [MangoHud](https://github.com/flightlessmango/Mangohud), and [OBS VkCapture](https://github.com/nowrep/obs-vkcapture) installed and available by default
|
|
- Support for [Wallpaper Engine](https://www.wallpaperengine.io/en). <sub><sup>(Only on KDE)</sup></sub>
|
|
- [Distrobox](https://github.com/89luca89/distrobox) preinstalled with automatic updates for created containers.
|
|
- Automated `duperemove` services for reducing the disk space used by wine prefix contents.
|
|
- [System76-Scheduler](https://github.com/pop-os/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 and CFS parameters from [Linux-TKG](https://github.com/Frogging-Family/linux-tkg).
|
|
- Uses [Google's BBR TCP congestion control](https://github.com/google/bbr) by default.
|
|
- [Input Remapper](https://github.com/sezanzeb/input-remapper) preinstalled and enabled. <sub><sup>(Available but default-disabled on the Deck variant)</sup></sub>
|
|
- Helpful first-start installer provides an easy way to install numerous applications and tweaks, including installing [CoreCtrl](https://gitlab.com/corectrl/corectrl) and [GreenWithEnvy](https://gitlab.com/leinardi/gwe).
|
|
- [Nix](https://nixos.org/) package manager optionally available.
|
|
- [Waydroid](https://waydro.id/) preinstalled for running Android apps. Future releases will offer to set this up for you. <sub><sup>(Not available on Nvidia builds)</sup></sub>
|
|
- [OpenRGB](https://gitlab.com/CalcProgrammer1/OpenRGB) i2c-piix4 and i2c-nct6775 drivers for controlling RGB on certain motherboards.
|
|
- [GCAdapter_OC](https://github.com/hannesmann/gcadapter-oc-kmod) driver for overclocking Nintendo's Gamecube Controller Adapter to 1000hz polling.
|
|
- Out of the box support for [Wooting](https://wooting.io/) keyboards.
|
|
- A fix is available for [a TF2 bug](https://github.com/ValveSoftware/Source-1-Games/issues/5043) that makes the game crash on launch - `just fix-tf2-tcmalloc`
|
|
|
|
### Desktop
|
|
|
|
Common variant available as `bazzite`, suitable for desktop computers.
|
|
|
|
- Runs Steam and Lutris in a [custom Arch Linux OCI](https://github.com/ublue-os/bazzite-arch/) via Distrobox.
|
|
- Automatic updates for the OS, Flatpaks, and all Distrobox containers.
|
|
|
|
> [!IMPORTANT]
|
|
> **ISOs can be downloaded from our releases page [here](https://github.com/ublue-os/bazzite/releases), and a helpful install guide can be found [here](https://universal-blue.org/images/bazzite/installation/).**
|
|
|
|
If you're on an existing Universal Blue image follow [these instructions](https://universal-blue.org/images/#image-list). To rebase an existing upstream Fedora Silverblue/Kinoite ostree system to this image:
|
|
|
|
```bash
|
|
podman pull ghcr.io/ublue-os/config && rpm-ostree install --assumeyes --apply-live --force-replacefiles $(find ~/.local/share/containers -name ublue-os-signing.noarch.rpm 2>/dev/null) && rpm-ostree rebase --uninstall $(rpm -q ublue-os-signing-* --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{Arch}') ostree-image-signed:docker://ghcr.io/ublue-os/bazzite:latest
|
|
```
|
|
|
|
or for devices with Nvidia GPUs:
|
|
|
|
```bash
|
|
podman pull ghcr.io/ublue-os/config && rpm-ostree install --assumeyes --apply-live --force-replacefiles $(find ~/.local/share/containers -name ublue-os-signing.noarch.rpm 2>/dev/null) && rpm-ostree rebase --uninstall $(rpm -q ublue-os-signing-* --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{Arch}') ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-nvidia:latest
|
|
```
|
|
|
|
**For users with Secure Boot enabled:** Once you've installed or rebased to a Nvidia build, [be sure to follow step 3 from the ublue-os/nvidia guide](https://github.com/ublue-os/nvidia#3-enable-secure-boot-support).
|
|
|
|
### Steam Deck/Home Theater PCs (HTPCs)
|
|
|
|
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 Gamemode 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.**
|
|
- Uses Wayland on the desktop with [full support for Steam input](https://github.com/Supreeeme/extest).
|
|
- Features ported versions of most SteamOS packages, including drivers, firmware updaters, and fan controllers [from the evlaV repository](https://gitlab.com/evlaV).
|
|
- Patched Mesa for proper framerate control from Gamescope.
|
|
- Comes with patches from [SteamOS BTRFS](https://gitlab.com/popsulfr/steamos-btrfs) for full BTRFS support for the SD card by default.
|
|
- Ships with a ported copy of [SDGyroDSU](https://github.com/kmicki/SteamDeckGyroDSU), enabled by default.
|
|
- Option to install [Decky Loader](https://github.com/SteamDeckHomebrew/decky-loader), [EmuDeck](https://www.emudeck.com/), and [ProtonUp-Qt](https://davidotek.github.io/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 Gamemode UI.
|
|
- 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.
|
|
- Exclusively uses ZRAM by default with the option to switch back to a swap file and set a custom size if desired. <sub><sup>(1GB by default)</sup></sub>
|
|
- BFQ I/O scheduler to prevent I/O starvation when installing games or during background `duperemove` processes.
|
|
- TLS/SSL secured DNS and NTP by default. <sup><sub>(This is a handheld PC you're likely to use on random public networks after all)</sub></sup>
|
|
- Applies SteamOS's kernel parameters and enables `amd-pstate` by default.
|
|
- Default-disabled power-user features, including:
|
|
- Service for low-risk undervolting of the Steam Deck via [RyzenAdj](https://github.com/FlyGoat/RyzenAdj), see `ryzenadj.service` and `/etc/default/ryzenadj`.
|
|
- Service for limiting the max charge level of the battery, see `batterylimit.service` and `/etc/default/batterylimit`. <sup><sub>(Works even when the device is off)</sub></sup>
|
|
- Built in support for display overclocking. For example, add `GAMESCOPE_OVERRIDE_REFRESH_RATE=40,70` to `/etc/environment`.
|
|
- Ability to switch back to 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. <sup><sub>(Can you share your soldering skills?)</sub></sup>
|
|
- Steam Deck hardware-specific services can be disabled by running `just disable-deck-services` in the terminal, useful for trying this image on other handhelds or for use on HTPCs.
|
|
|
|
> [!WARNING]
|
|
> **Due to an upstream bug, Bazzite cannot be used on Steam Decks with 64GB eMMC storage at this time.**
|
|
|
|
> [!IMPORTANT]
|
|
> **ISOs can be downloaded from our releases page [here](https://github.com/ublue-os/bazzite/releases), and a helpful install guide can be found [here](https://universal-blue.org/images/bazzite/installation/).**
|
|
|
|
If you're on an existing Universal Blue image follow [these instructions](https://universal-blue.org/images/#image-list). To rebase an existing upstream Fedora Silverblue/Kinoite ostree system to this image:
|
|
|
|
```bash
|
|
podman pull ghcr.io/ublue-os/config && rpm-ostree install --assumeyes --apply-live --force-replacefiles $(find ~/.local/share/containers -name ublue-os-signing.noarch.rpm 2>/dev/null) && rpm-ostree rebase --uninstall $(rpm -q ublue-os-signing-* --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{Arch}') ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-deck:latest
|
|
```
|
|
|
|
### GNOME
|
|
|
|
Builds with the GNOME desktop environment are available in both desktop and deck flavors. These builds come with the following additional features:
|
|
|
|
- [Variable refresh rate support enabled under Wayland](https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1154).
|
|
- Custom menu in the top bar for returning to game mode, launching Steam, and opening a number of useful utilities. <sub><sup>(Only on Steam Deck builds)</sup></sub>
|
|
- [GSConnect](https://extensions.gnome.org/extension/1319/gsconnect/) preinstalled and ready to use.
|
|
- Features optional Valve-inspired themes matching Vapor and VGUI2 from SteamOS.
|
|
- Numerous optional extensions pre-installed, including [important user experience fixes](https://www.youtube.com/watch?v=nbCg9_YgKgM).
|
|
|
|
> [!IMPORTANT]
|
|
> **ISOs can be downloaded from our releases page [here](https://github.com/ublue-os/bazzite/releases), and a helpful install guide can be found [here](https://universal-blue.org/images/bazzite/installation/).**
|
|
|
|
To rebase an existing ostree system to the **desktop** release:
|
|
|
|
```bash
|
|
podman pull ghcr.io/ublue-os/config && rpm-ostree install --assumeyes --apply-live --force-replacefiles $(find ~/.local/share/containers -name ublue-os-signing.noarch.rpm 2>/dev/null) && rpm-ostree rebase --uninstall $(rpm -q ublue-os-signing-* --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{Arch}') ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-gnome:latest
|
|
```
|
|
|
|
To rebase an existing ostree system to the **desktop with Nvidia drivers** release:
|
|
|
|
```bash
|
|
podman pull ghcr.io/ublue-os/config && rpm-ostree install --assumeyes --apply-live --force-replacefiles $(find ~/.local/share/containers -name ublue-os-signing.noarch.rpm 2>/dev/null) && rpm-ostree rebase --uninstall $(rpm -q ublue-os-signing-* --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{Arch}') ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-gnome-nvidia:latest
|
|
```
|
|
|
|
> [!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:
|
|
|
|
```bash
|
|
podman pull ghcr.io/ublue-os/config && rpm-ostree install --assumeyes --apply-live --force-replacefiles $(find ~/.local/share/containers -name ublue-os-signing.noarch.rpm 2>/dev/null) && rpm-ostree rebase --uninstall $(rpm -q ublue-os-signing-* --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{Arch}') ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-deck-gnome:latest
|
|
```
|
|
|
|
## 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 <sub><sup>(So go ahead and install that obscure VPN software you spent an hour trying to get working in SteamOS)</sup></sub>. 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 and disk encryption, making this a sensible solution for general computing. <sup><sub>(Yes, you can print from Bazzite)</sub></sup>
|
|
|
|

|
|

|
|

|
|

|
|

|
|

|
|
|
|
## Custom Packages
|
|
|
|
Ported SteamOS and ChimeraOS packages, among others used by Bazzite, are built on Copr in [bazzite](https://copr.fedorainfracloud.org/coprs/kylegospo/bazzite/) and [bazzite-multilib](https://copr.fedorainfracloud.org/coprs/kylegospo/bazzite-multilib/).
|
|
|
|
|Package|Status|
|
|
|---|---|
|
|
|ds-inhibit||
|
|
|[extest](https://github.com/Supreeeme/extest)||
|
|
|[gamescope-session](https://github.com/ChimeraOS/gamescope-session)||
|
|
|gnome-shell-extension-bazzite-menu||
|
|
|[gnome-shell-extension-caribou-blocker](https://extensions.gnome.org/extension/1326/block-caribou/)||
|
|
|[gnome-shell-extension-hanabi](https://github.com/jeffshee/gnome-ext-hanabi)||
|
|
|[gnome-shell-extension-search-light](https://extensions.gnome.org/extension/5489/search-light/)||
|
|
|[gnome-shell-extension-compiz-windows-effect](https://github.com/hermes83/compiz-windows-effect)||
|
|
|jupiter-fan-control||
|
|
|jupiter-hw-support-[btrfs](https://gitlab.com/popsulfr/steamos-btrfs)||
|
|
|[mangohud](https://github.com/flightlessmango/MangoHud)||
|
|
|mesa||
|
|
|powerbuttond||
|
|
|[python3-hid](https://github.com/apmorton/pyhidapi)||
|
|
|[ryzenadj](https://github.com/FlyGoat/RyzenAdj)||
|
|
|[sddm-sugar-steamOS](https://github.com/JiayuanWen/sddm-sugar-steamOS)||
|
|
|[sdgyrodsu](https://github.com/kmicki/SteamDeckGyroDSU)||
|
|
|steamdeck-kde-presets||
|
|
|steamdeck-kde-presets-desktop||
|
|
|steam_notif_daemon||
|
|
|udisks2||
|
|
|vpower||
|
|
|
|
Additionally, the following packages are used from other Copr repos:
|
|
|
|
|Package|Status|
|
|
|---|---|
|
|
|[distrobox](https://github.com/89luca89/distrobox)-git||
|
|
|[gcadapter_oc-kmod](https://copr.fedorainfracloud.org/coprs/ublue-os/akmods/)||
|
|
|[gnome-vrr](https://copr.fedorainfracloud.org/coprs/kylegospo/gnome-vrr/)||
|
|
|[gradience](https://copr.fedorainfracloud.org/coprs/lyessaadi/gradience/)||
|
|
|[hl2linux-selinux](https://copr.fedorainfracloud.org/coprs/kylegospo/hl2linux-selinux/)||
|
|
|[latencyflex-vulkan-layer](https://copr.fedorainfracloud.org/coprs/kylegospo/LatencyFleX/)||
|
|
|[noise-suppression-for-voice](https://copr.fedorainfracloud.org/coprs/ycollet/audinux/)||
|
|
|[obs-vkcapture](https://copr.fedorainfracloud.org/coprs/kylegospo/obs-vkcapture/)||
|
|
|[openrgb-kmod](https://copr.fedorainfracloud.org/coprs/ublue-os/akmods/)||
|
|
|[steamdeck-kmod](https://copr.fedorainfracloud.org/coprs/ublue-os/akmods/)||
|
|
|[system76-scheduler](https://copr.fedorainfracloud.org/coprs/kylegospo/system76-scheduler/)||
|
|
|[wallpaper-engine-kde-plugin](https://copr.fedorainfracloud.org/coprs/kylegospo/wallpaper-engine-kde-plugin/)||
|
|
|
|
## Verification
|
|
|
|
These images are signed with sigstore's [cosign](https://docs.sigstore.dev/cosign/overview/). You can verify the signature by downloading the `cosign.pub` key from this repo and running the following command:
|
|
|
|
```bash
|
|
cosign verify --key cosign.pub ghcr.io/ublue-os/bazzite
|
|
```
|
|
|
|
## [](https://repography.com) / Recent Activity [](https://repography.com)
|
|
[](https://github.com/ublue-os/bazzite/commits)
|
|
[](https://github.com/ublue-os/bazzite/issues)
|
|
[](https://github.com/ublue-os/bazzite/pulls)
|
|
[](https://github.com/ublue-os/bazzite/graphs/contributors)
|
|
|
|
## [](https://repography.com) / Top Contributors
|
|
[](https://github.com/ublue-os/bazzite/graphs/contributors)
|
|
|
|
## 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:
|
|
|
|
- [evlaV](https://gitlab.com/evlaV) - For making Valve's code available and for being [this person](https://xkcd.com/2347/).
|
|
- [ChimeraOS](https://chimeraos.org/) - For gamescope-session and for valuable support along the way.
|
|
- [Jovian-NixOS](https://github.com/Jovian-Experiments) - For supporting us with technical issues and for creating a similar project. Seriously, go check it out. It's our Nix-based cousin.
|
|
- [Steam Deck Homebrew](https://deckbrew.xyz) - For choosing to support distributions other than SteamOS despite the extra work, and a special thanks to [PartyWumpus](https://github.com/PartyWumpus) for getting Decky Loader working with SELinux for us.
|
|
- [cyrv6737](https://github.com/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](https://docs.github.com/en/actions/security-guides/encrypted-secrets) on keeping secrets in github. You'll need to [generate a new keypair](https://docs.sigstore.dev/cosign/overview/) with cosign. The public key can be in your public repo <sub><sup>(Your users need it to check the signatures)</sup></sub>, 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](https://github.com/apps/pull) 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.
|