diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f5de6147..1446d5dc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -110,9 +110,9 @@ jobs: labels: | org.opencontainers.image.title=${{ env.IMAGE_NAME }} org.opencontainers.image.version=${{ steps.labels.outputs.VERSION }} - org.opencontainers.image.description=Gaming-focused builds of ublue-os with arch distrobox images for gaming, nvidia support, and future support for Valve's Steam Deck. + org.opencontainers.image.description=Bazzite is an OCI that serves as an alternative OS for the Steam Deck, and a ready-to-game SteamOS-like for desktop computers. io.artifacthub.package.readme-url=https://raw.githubusercontent.com/ublue-os/bazzite/main/README.md - io.artifacthub.package.logo-url=https://avatars.githubusercontent.com/u/120078124?s=200&v=4 + io.artifacthub.package.logo-url=https://raw.githubusercontent.com/ublue-os/bazzite/main/repo_content/logo.png # Build image using Buildah action - name: Build Image diff --git a/README.md b/README.md index 08f1e5e4..217354db 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,84 @@ -# Bazzite +

+ Bazzite Logo +

+

+ Bazzite +

[![build-bazzite](https://github.com/ublue-os/bazzite/actions/workflows/build.yml/badge.svg)](https://github.com/ublue-os/bazzite/actions/workflows/build.yml) +[![build-bazzite-arch](https://github.com/ublue-os/bazzite-arch/actions/workflows/build.yml/badge.svg)](https://github.com/ublue-os/bazzite-arch/actions/workflows/build.yml) -Bazzite is an OCI that serves as an alternative OS for the [Steam Deck](https://www.steamdeck.com/), and a ready-to-game SteamOS-like for desktop computers. +## About & Features -## Usage +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. -TODO +Bazzite is built from [ublue-os/main](https://github.com/ublue-os/main) and [ublue-os/nvidia](https://github.com/ublue-os/nvidia), which means expanded hardware support and built in drivers are included. Additionally, Bazzite adds the following features: -## Features +- Proprietary Nvidia drivers included on the image +- Full hardware accelerated codec support for H264 decoding +- Full support for AMD's ROCM OpenCL/HIP runtimes +- 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) on KDE. +- [Distrobox](https://github.com/89luca89/distrobox) preinstalled with automatic updates for created containers. +- Automated duperemove services for pruning wine prefix contents. +- Uses [Google's BBR TCP congestion control](https://github.com/google/bbr) by default. +- [Input Remapper](https://github.com/sezanzeb/input-remapper) preinsalled and enabled (Available but default-disabled on the Deck variant) +- Helpful first-start installer provides an easy way to install numerous helpful applications and tweaks, including installing [CoreCtrl](https://gitlab.com/corectrl/corectrl) and [GreenWithEnvy](https://gitlab.com/leinardi/gwe). +- Nix package manager, matching evidence in SteamOS 3.5 of this potentially being available in a future release. +- GCAdapter_OC driver for overclocking Nintendo's Gamecube Controller Adapter to 1000hz polling. -- Built from a base [ublue-os/kinoite](https://github.com/ublue-os/main) or [ublue-os/kinoite-nvidia](https://github.com/ublue-os/nvidia) image -- Initial setup wizard provides [Decky Loader](https://github.com/SteamDeckHomebrew/decky-loader), [EmuDeck](https://www.emudeck.com/), and an assortment of useful Flatpaks. -- Adds ported versions of Valve's Steam Deck packages -- Ships with [Distrobox](https://github.com/89luca89/distrobox) installed and ready to use -- Desktop variant uses [ublue-os/bazzite-arch](https://github.com/ublue-os/bazzite-arch) [![build-bazzite-arch](https://github.com/ublue-os/bazzite-arch/actions/workflows/build.yml/badge.svg)](https://github.com/ublue-os/bazzite-arch/actions/workflows/build.yml) in Distrobox to run Steam and other gaming workloads. -- Adds h264 decoding out of the box via [RPM Fusion](https://rpmfusion.org/) -- Supports [LatencyFleX](https://github.com/ishitatsuyuki/LatencyFleX) and [vkBasalt](https://github.com/DadSchoorse/vkBasalt) out of the box -- Comes with services for automatic system, distrobox, and flatpak updates. -- BTRFS by default, including the SD card -- Built in duperemove services -- Pre-tuned for gaming workloads -- Matches SteamOS as closely as possible +### Base + +Common variant available as `bazzite` and suitable for desktops and HTPCs. + +- Runs Steam and Lutris in a [custom Arch Linux OCI](https://github.com/ublue-os/bazzite-arch/) via Distrobox. +- Ships with a ported version of [System76's Scheduler](https://github.com/pop-os/system76-scheduler), providing automatic process priority tweaks to your focused application and keeping CPU time for background processes to a minimum. +- Option to automatically launch Steam in Big Picture Mode on boot for HTPCs. + +To rebase an existing system to this image: + + rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite:latest + +or for devices with Nvidia GPUs: + + rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-nvidia:latest + +### Deck + +Variant designed for usage as an alternative to SteamOS on the Steam Deck, available as `bazzite-deck`: + +- Directly boots to Gamemode matching SteamOS's behavior +- Features ported versions of most SteamOS packages, including drivers, firmware updaters, and fan controllers [from the evlaV repository](https://gitlab.com/evlaV) +- 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 +- Steam and Lutris preinstalled on the image +- Comes with a default-disabled service for low-risk undervolting of the Steam Deck via [RyzenAdj](https://github.com/FlyGoat/RyzenAdj) +- Exclusively uses zram by default with the option to switch back to a swapfile and set a custom size if desired +- Tuned I/O scheduler to reduce starvation when installing games or during background duperemove processes +- Uses CFS scheduler parameters from [TKG](https://github.com/Frogging-Family/linux-tkg) for increased performance +- Applies SteamOS's kernel parameters and enables amd-pstate by default + +To rebase an existing system to this image: + + rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-deck: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. Additionally, Bazzite is updated daily with packages from upstream [Fedora](https://fedoraproject.org/) 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. + +Yes, you can print from Bazzite. + +![Default Theme](/repo_content/desktop1.png?raw=true "Default Theme") +![VGUI2 Theme](/repo_content/desktop2.png?raw=true "VGUI2 Theme") -## Copr +## Custom Packages Ported SteamOS and ChimeraOS packages, among others used by Bazzite, are built on Copr in [this repo](https://copr.fedorainfracloud.org/coprs/kylegospo/bazzite/). @@ -32,7 +87,6 @@ Ported SteamOS and ChimeraOS packages, among others used by Bazzite, are built o |gamescope|![Build Status](https://copr.fedorainfracloud.org/coprs/kylegospo/bazzite/package/gamescope/status_image/last_build.png?)| |gamescope-session|![Build Status](https://copr.fedorainfracloud.org/coprs/kylegospo/bazzite/package/gamescope-session/status_image/last_build.png?)| |jupiter-fan-control|![Build Status](https://copr.fedorainfracloud.org/coprs/kylegospo/bazzite/package/jupiter-fan-control/status_image/last_build.png?)| -|jupiter-hw-support|![Build Status](https://copr.fedorainfracloud.org/coprs/kylegospo/bazzite/package/jupiter-hw-support/status_image/last_build.png?)| |jupiter-hw-support-[btrfs](https://gitlab.com/popsulfr/steamos-btrfs)|![Build Status](https://copr.fedorainfracloud.org/coprs/kylegospo/bazzite/package/jupiter-hw-support-btrfs/status_image/last_build.png?)| |python3-hid|![Build Status](https://copr.fedorainfracloud.org/coprs/kylegospo/bazzite/package/python3-hid/status_image/last_build.png?)| |ryzenadj|![Build Status](https://copr.fedorainfracloud.org/coprs/kylegospo/bazzite/package/ryzenadj/status_image/last_build.png?)| @@ -45,10 +99,13 @@ Ported SteamOS and ChimeraOS packages, among others used by Bazzite, are built o Additionally, the following packages are used from other Copr repos: |Package|Status| |---|---| +|[gcadapter_oc-kmod](https://copr.fedorainfracloud.org/coprs/ublue-os/akmods/)|![Build Status](https://copr.fedorainfracloud.org/coprs/ublue-os/akmods/package/gcadapter_oc-kmod/status_image/last_build.png?)| |[hl2linux-selinux](https://copr.fedorainfracloud.org/coprs/kylegospo/hl2linux-selinux/)|![Build Status](https://copr.fedorainfracloud.org/coprs/kylegospo/hl2linux-selinux/package/hl2linux-selinux/status_image/last_build.png?)| |[latencyflex-vulkan-layer](https://copr.fedorainfracloud.org/coprs/kylegospo/LatencyFleX/)|![Build Status](https://copr.fedorainfracloud.org/coprs/kylegospo/LatencyFleX/package/latencyflex-vulkan-layer/status_image/last_build.png?)| |[mangohud](https://copr.fedorainfracloud.org/coprs/kylegospo/mangohud/)|![Build Status](https://copr.fedorainfracloud.org/coprs/kylegospo/mangohud/package/mangohud/status_image/last_build.png?)| |[obs-vkcapture](https://copr.fedorainfracloud.org/coprs/kylegospo/obs-vkcapture/)|![Build Status](https://copr.fedorainfracloud.org/coprs/kylegospo/obs-vkcapture/package/obs-vkcapture/status_image/last_build.png?)| +|[steamdeck-kmod](https://copr.fedorainfracloud.org/coprs/ublue-os/akmods/)|![Build Status](https://copr.fedorainfracloud.org/coprs/ublue-os/akmods/package/steamdeck-kmod/status_image/last_build.png?)| +|[system76-scheduler](https://copr.fedorainfracloud.org/coprs/kylegospo/system76-scheduler/)|![Build Status](https://copr.fedorainfracloud.org/coprs/kylegospo/system76-scheduler/package/system76-scheduler/status_image/last_build.png?)| |[wallpaper-engine-kde-plugin](https://copr.fedorainfracloud.org/coprs/kylegospo/wallpaper-engine-kde-plugin/)|![Build Status](https://copr.fedorainfracloud.org/coprs/kylegospo/wallpaper-engine-kde-plugin/package/wallpaper-engine-kde-plugin/status_image/last_build.png?)| ## Verification @@ -56,3 +113,12 @@ Additionally, the following packages are used from other Copr repos: These images are signed with sisgstore'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: cosign verify --key cosign.pub ghcr.io/ublue-os/bazzite + +## [![Repography logo](https://images.repography.com/logo.svg)](https://repography.com) / Recent activity [![Time period](https://images.repography.com/35181738/ublue-os/bazzite/recent-activity/Th70YH5TPWj_xtgglSDUV9CY1CtpE2JkmmfhzTTj4Vg/D6pCB2LvmFrU9T9B0Kp9QIfQCmY5U2q5aHoeVk0Tdds_badge.svg)](https://repography.com) +[![Timeline graph](https://images.repography.com/35181738/ublue-os/bazzite/recent-activity/Th70YH5TPWj_xtgglSDUV9CY1CtpE2JkmmfhzTTj4Vg/D6pCB2LvmFrU9T9B0Kp9QIfQCmY5U2q5aHoeVk0Tdds_timeline.svg)](https://github.com/ublue-os/bazzite/commits) +[![Issue status graph](https://images.repography.com/35181738/ublue-os/bazzite/recent-activity/Th70YH5TPWj_xtgglSDUV9CY1CtpE2JkmmfhzTTj4Vg/D6pCB2LvmFrU9T9B0Kp9QIfQCmY5U2q5aHoeVk0Tdds_issues.svg)](https://github.com/ublue-os/bazzite/issues) +[![Pull request status graph](https://images.repography.com/35181738/ublue-os/bazzite/recent-activity/Th70YH5TPWj_xtgglSDUV9CY1CtpE2JkmmfhzTTj4Vg/D6pCB2LvmFrU9T9B0Kp9QIfQCmY5U2q5aHoeVk0Tdds_prs.svg)](https://github.com/ublue-os/bazzite/pulls) +[![Top contributors](https://images.repography.com/35181738/ublue-os/bazzite/recent-activity/Th70YH5TPWj_xtgglSDUV9CY1CtpE2JkmmfhzTTj4Vg/D6pCB2LvmFrU9T9B0Kp9QIfQCmY5U2q5aHoeVk0Tdds_users.svg)](https://github.com/ublue-os/bazzite/graphs/contributors) + +## [![Repography logo](https://images.repography.com/logo.svg)](https://repography.com) / Top contributors +[![Top contributors](https://images.repography.com/35181738/ublue-os/bazzite/top-contributors/Th70YH5TPWj_xtgglSDUV9CY1CtpE2JkmmfhzTTj4Vg/D6pCB2LvmFrU9T9B0Kp9QIfQCmY5U2q5aHoeVk0Tdds_table.svg)](https://github.com/ublue-os/bazzite/graphs/contributors) diff --git a/repo_content/desktop1.png b/repo_content/desktop1.png new file mode 100644 index 00000000..5a059f5c Binary files /dev/null and b/repo_content/desktop1.png differ diff --git a/repo_content/desktop2.png b/repo_content/desktop2.png new file mode 100644 index 00000000..0687de7d Binary files /dev/null and b/repo_content/desktop2.png differ diff --git a/repo_content/logo.png b/repo_content/logo.png new file mode 100644 index 00000000..5112fd4c Binary files /dev/null and b/repo_content/logo.png differ diff --git a/repo_content/text_logo.png b/repo_content/text_logo.png new file mode 100644 index 00000000..42aa8fc2 Binary files /dev/null and b/repo_content/text_logo.png differ diff --git a/system_files/deck/usr/share/ublue-os/bazzite/neofetch.conf b/system_files/deck/usr/share/ublue-os/bazzite/neofetch.conf new file mode 100644 index 00000000..172ada43 --- /dev/null +++ b/system_files/deck/usr/share/ublue-os/bazzite/neofetch.conf @@ -0,0 +1,41 @@ +print_info () { + info title + info underline + + distro="Bazzite x86_64" + info "Host" model + info "OS" distro + info "Kernel" kernel + info "Uptime" uptime + info "Packages" packages + info "Shell" shell + info "Resolution" resolution + info "DE" de + info "WM" wm + info "WM Theme" wm_theme + info "Theme" theme + info "Icons" icons + info "Terminal" term + info "Terminal Font" term_font + info "CPU" cpu + info "GPU" gpu + info "Memory" memory + + # The lines below with a '#' in front are additional info functions + # that are disabled by default. Removing the '#' enables them and adding + # a '#' to the start disables them again. You can add a '#' to any of the + # lines in this function to disable their output. + + # info "CPU Usage" cpu_usage + # info "Disk" disk + info "Battery" battery + # info "Font" font + # info "Song" song + # info "Local IP" local_ip + # info "Public IP" public_ip + # info "Users" users + # info "Birthday" birthday + + info cols +} + diff --git a/system_files/deck/usr/share/ublue-os/firstboot/yafti.yml b/system_files/deck/usr/share/ublue-os/firstboot/yafti.yml index 364e4627..cde84495 100644 --- a/system_files/deck/usr/share/ublue-os/firstboot/yafti.yml +++ b/system_files/deck/usr/share/ublue-os/firstboot/yafti.yml @@ -5,8 +5,8 @@ screens: first-screen: source: yafti.screen.title values: - title: "Welcome to Bazzite (Steam Deck)" - icon: "/path/to/icon" + title: "Welcome to Bazzite (Steam Deck Edition)" + icon: "/usr/share/ublue-os/bazzite/logo.svg" description: | Configure your system to get started configure-bazzite: diff --git a/system_files/desktop/etc/profile.d/neofetch.sh b/system_files/desktop/etc/profile.d/neofetch.sh new file mode 100755 index 00000000..67b0146e --- /dev/null +++ b/system_files/desktop/etc/profile.d/neofetch.sh @@ -0,0 +1 @@ +alias neofetch='neofetch --source /usr/share/ublue-os/bazzite/logo.txt --config /usr/share/ublue-os/bazzite/neofetch.conf' diff --git a/system_files/desktop/usr/share/ublue-os/bazzite/logo.svg b/system_files/desktop/usr/share/ublue-os/bazzite/logo.svg new file mode 100644 index 00000000..58103497 --- /dev/null +++ b/system_files/desktop/usr/share/ublue-os/bazzite/logo.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/system_files/desktop/usr/share/ublue-os/bazzite/logo.txt b/system_files/desktop/usr/share/ublue-os/bazzite/logo.txt new file mode 100644 index 00000000..aed2202d --- /dev/null +++ b/system_files/desktop/usr/share/ublue-os/bazzite/logo.txt @@ -0,0 +1,14 @@ +${c1} .,;;;;,..............;::::;. + .cccccccccccccccccccccccccccccc. + .cc,...';lccccccccccccccc,....,c:. + :: .ccccccccccccc: .c; + ,l' :llllllololll, ;c' + .lcc. 'l::coccoccl,:l. 'lcl. + ;occcc;,,;cc. .lccl,;,:';l;,,;cccco; + odlccccccccc. .lccc,;',;;ccccccccldo +'dddlccccccccc::cccccccc;:ccccccccclddd' +;ddddolccccc;'............';ccccclodddd; +,dddddddoll' .lloddddddd, +.ldddddddd' 'ddddddddl. + ;oddddo. .lddddl, + .;c;. ,;,. diff --git a/system_files/desktop/usr/share/ublue-os/bazzite/neofetch.conf b/system_files/desktop/usr/share/ublue-os/bazzite/neofetch.conf new file mode 100644 index 00000000..baff837a --- /dev/null +++ b/system_files/desktop/usr/share/ublue-os/bazzite/neofetch.conf @@ -0,0 +1,41 @@ +print_info () { + info title + info underline + + distro="Bazzite x86_64" + info "Host" model + info "OS" distro + info "Kernel" kernel + info "Uptime" uptime + info "Packages" packages + info "Shell" shell + info "Resolution" resolution + info "DE" de + info "WM" wm + info "WM Theme" wm_theme + info "Theme" theme + info "Icons" icons + info "Terminal" term + info "Terminal Font" term_font + info "CPU" cpu + info "GPU" gpu + info "Memory" memory + + # The lines below with a '#' in front are additional info functions + # that are disabled by default. Removing the '#' enables them and adding + # a '#' to the start disables them again. You can add a '#' to any of the + # lines in this function to disable their output. + + # info "CPU Usage" cpu_usage + # info "Disk" disk + # info "Battery" battery + # info "Font" font + # info "Song" song + # info "Local IP" local_ip + # info "Public IP" public_ip + # info "Users" users + # info "Birthday" birthday + + info cols +} + diff --git a/system_files/desktop/usr/share/ublue-os/firstboot/yafti.yml b/system_files/desktop/usr/share/ublue-os/firstboot/yafti.yml index a6304712..526da344 100644 --- a/system_files/desktop/usr/share/ublue-os/firstboot/yafti.yml +++ b/system_files/desktop/usr/share/ublue-os/firstboot/yafti.yml @@ -5,8 +5,8 @@ screens: first-screen: source: yafti.screen.title values: - title: "Welcome to Bazzite (Desktop)" - icon: "/path/to/icon" + title: "Welcome to Bazzite" + icon: "/usr/share/ublue-os/bazzite/logo.svg" description: | Configure your system to get started configure-bazzite: