From a72d848e78466a9f9ee145fbf6a528e52f80b176 Mon Sep 17 00:00:00 2001 From: rickpeters Date: Mon, 28 Sep 2026 19:28:10 +0200 Subject: [PATCH 1/2] feat: Steam's OS Version is the SteamOS release Steamify follows (steamos-3.9), its OS Codename steam-machine; About this System keeps "CachyOS Linux" (UseOSReleaseVersion) --- AGENTS.md | 22 +++++++++++++--------- CHANGELOG.md | 3 ++- lib/login-manager.sh | 23 +++++++++++++---------- patches/README.md | 2 +- patches/steamify-os-release.sh | 15 ++++++++------- 5 files changed, 37 insertions(+), 28 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index ce3dd14..b0bae5e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -312,16 +312,20 @@ gamescope and the Plasma desktop. Primary target: the Valve Steam Machine switches `boot` on an installed conversion: `WANTED` is `CURRENT` plus that, so no updates or removals a normal run would pick. - What Steam's System settings show (SteamOS conversion, 2.9.0): the OS name - stays CachyOS's everywhere (legal clarity; Steam reads `lsb_release -d`, - not touched). `/etc/os-release` gets only `VARIANT="Steamify "`, - `VARIANT_ID=steamify-` (what Steam shows as OS Variant) and `VERSION_CODENAME=steamos-X.Y` (no `VERSION_ID`: KDE's About - this System shows it after the name, "CachyOS Linux 2.9.0") (Valve's - newest jupiter repo), refreshed by `os_version_refresh` after every run that - changes something; a pacman hook (`zz-steamify-os-release`) runs after - cachyos-hooks. Never `NAME` or `PRETTY_NAME`: limine-snapper-sync finds the - boot entries by the OS name ("Target OS name ... not found in + stays CachyOS's everywhere (legal clarity; Steam's OS Name is + `lsb_release -d`, not touched). `/etc/os-release` gets `VERSION_ID=steamos-X.Y` + (Steam's OS Version: Valve's newest jupiter repo; offline, the previous + value), `VERSION_CODENAME=steam-machine`, `VARIANT="Steamify "` and + `VARIANT_ID=steamify-` (Steam shows VARIANT_ID as OS Variant), + refreshed by `os_version_refresh` after every run that changes something; a + pacman hook (`zz-steamify-os-release`) runs after cachyos-hooks. KDE's About + this System would show VERSION_ID after the name: `kcm-about-distrorc` + `UseOSReleaseVersion=true` (kset) makes it show os-release's VERSION, which + CachyOS doesn't have. Never `NAME` or `PRETTY_NAME`: limine-snapper-sync + finds the boot entries by the OS name ("Target OS name ... not found in /boot/limine.conf"); `/etc/default/limine` gets `TARGET_OS_NAME="CachyOS"` - when it has none, as a guard. + when it has none, as a guard. The serial number (tmpfiles rule) is Steam + Machine support's, so Fremont only. - `Relogin=true` means a gamescope that fails to start is relaunched in a tight loop; keep that in mind when changing session handling. diff --git a/CHANGELOG.md b/CHANGELOG.md index b59fdb5..75b39a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,8 @@ one per merged pull request. ## 2.9.0 - 2026-09-28 - `d30d505` **chore: Version 2.9.0** -- **fix: Steam's OS Variant shows Steamify's version (VARIANT_ID=steamify-2.9.0; Steam shows VARIANT_ID, not VARIANT)** +- **feat: Steam's OS Version is the SteamOS release Steamify follows (steamos-3.9), its OS Codename steam-machine; About this System keeps "CachyOS Linux" (UseOSReleaseVersion)** +- `27a4070` **fix: Steam's OS Variant shows Steamify's version (VARIANT_ID=steamify-2.9.0; Steam shows VARIANT_ID, not VARIANT)** - `44bfe07` **fix: No VERSION_ID in os-release: About this System said "CachyOS Linux 2.9.0"; the version is in VARIANT ("Steamify 2.9.0")** - `435f69c` **feat: Steam's System settings: the OS name stays CachyOS (no renaming, also not in About this System), Steamify as the variant, the SteamOS release it follows as the codename (steamos-3.9)** - `ce71b34` **feat: Steam's System settings and About this System like on SteamOS: OS name "CachyOS with Steamify" (lsb-release, kept through CachyOS updates by a pacman hook), Steamify as OS variant and version (os-release VARIANT/VERSION_ID; NAME/PRETTY_NAME stay CachyOS's for limine, TARGET_OS_NAME pinned), "CachyOS Linux with Steamify" in About this System; on a Steam Machine the serial number and Steam's Wi-Fi backend setting (existing installs get it as an update)** diff --git a/lib/login-manager.sh b/lib/login-manager.sh index 579c66b..bd35013 100644 --- a/lib/login-manager.sh +++ b/lib/login-manager.sh @@ -20,24 +20,24 @@ gaming_status() { # What Steam shows in its System settings besides the OS name (which stays # CachyOS's, for legal clarity and because limine-snapper-sync finds the boot -# entries by it): Steamify as the variant and version, the SteamOS release it -# follows as the codename (os-release VARIANT/VERSION_CODENAME; no -# VERSION_ID, which About this System would show after CachyOS's name). +# entries by it): the SteamOS release as the OS version, steam-machine as the +# codename, Steamify with its version as the variant (os-release VERSION_ID, +# VERSION_CODENAME, VARIANT_ID; see patches/steamify-os-release.sh). OS_NAME_SCRIPT=/usr/local/libexec/steamify-os-release OS_NAME_HOOK=/etc/pacman.d/hooks/zz-steamify-os-release.hook # limine's tools take the OS name from TARGET_OS_NAME, else os-release's # PRETTY_NAME: pinned to CachyOS, the boot entries never depend on os-release. LIMINE_DEFAULTS=/etc/default/limine -steamos_codename() { +steamos_release() { # The SteamOS release Steamify follows: Valve's newest jupiter-X.Y repo - # (where the SteamOS extras come from), as a codename (os-release allows - # no spaces or capitals: steamos-3.9). Offline (e.g. in the installer): - # the one set before, if any. + # (where the SteamOS extras come from), as an os-release ID (no spaces or + # capitals: steamos-3.9). Offline (e.g. in the installer): the one set + # before, if any. local v v="$(curl -fsL --max-time 15 "$VALVE_MIRROR/" 2>/dev/null | grep -oE 'jupiter-[0-9]+\.[0-9]+/' | tr -d / | sort -V | tail -n 1)" if [[ -n "$v" ]]; then echo "steamos-${v#jupiter-}" - else sed -n 's/^VERSION_CODENAME=//p' /etc/os-release 2>/dev/null; fi + else sed -n 's/^VERSION_ID=\(steamos-.*\)$/\1/p' /etc/os-release 2>/dev/null; fi } os_name_enable() { @@ -48,7 +48,10 @@ os_name_enable() { fi [[ -n "$(kreadconfig6 --file kcm-about-distrorc --group General --key Name 2>/dev/null)" ]] && kset gaming kcm-about-distrorc General Name --delete - patch_file steamify-os-release.sh | fill VERSION="$VERSION" CODENAME="$(steamos_codename)" | + # About this System: os-release's VERSION (CachyOS has none) instead of + # VERSION_ID, which is the SteamOS release now. + kset gaming kcm-about-distrorc General UseOSReleaseVersion true + patch_file steamify-os-release.sh | fill VERSION="$VERSION" STEAMOS="$(steamos_release)" | sudo install -Dm755 /dev/stdin "$OS_NAME_SCRIPT" && patch_file steamify-os-release.hook | fill SCRIPT="$OS_NAME_SCRIPT" | sudo install -Dm644 /dev/stdin "$OS_NAME_HOOK" && @@ -82,7 +85,7 @@ os_version_refresh() { # OS version follows Steamify's, not just the one that set it up. Silent: # the app reads the backend's stdout as JSON. gaming_status 2>/dev/null || return 0 - grep -qx "VARIANT=\"Steamify $VERSION\"" /etc/os-release 2>/dev/null && return 0 + grep -qx "VARIANT_ID=steamify-$VERSION" /etc/os-release 2>/dev/null && return 0 os_name_enable > /dev/null 2>&1 return 0 } diff --git a/patches/README.md b/patches/README.md index e5d4c80..5b67b00 100644 --- a/patches/README.md +++ b/patches/README.md @@ -13,5 +13,5 @@ read and reviewed on their own. `lib/*.sh` reads them with `patch_file | `steamify-fremont-poweroff.dkms.conf`, `steamify-cros-ec-cec.dkms.conf` | `lib/fremont-poweroff.sh`, `lib/cec.sh` | The DKMS modules' `dkms.conf` (`fill NAME=... VERSION=...`) | | `steam-shortcuts.py` | `lib/steam-game.sh` (Add as non-Steam game) | Reads and writes Steam's binary `shortcuts.vdf` (find, add or update, remove) | | `steamify-notifier.py` | `lib/update-notifier.sh` (Update notifications) | The daily check: notification and tray icon when there's a new release | -| `steamify-os-release.sh`, `steamify-os-release.hook` | `lib/login-manager.sh` (SteamOS conversion) | Steamify as the OS variant and version, and the SteamOS release it follows as the codename, for Steam's System settings (`VARIANT`, `VERSION_CODENAME` in `/etc/os-release`, no `VERSION_ID`; the OS name stays CachyOS's); the pacman hook runs it again after cachyos-hooks (`fill SCRIPT=... VERSION=... CODENAME=...`) | +| `steamify-os-release.sh`, `steamify-os-release.hook` | `lib/login-manager.sh` (SteamOS conversion) | What Steam's System settings show besides the OS name (which stays CachyOS's): `VERSION_ID=steamos-X.Y`, `VERSION_CODENAME=steam-machine`, `VARIANT`/`VARIANT_ID` Steamify with its version, in `/etc/os-release`; the pacman hook runs it again after cachyos-hooks (`fill SCRIPT=... VERSION=... STEAMOS=...`) | | `cros-ec-cec-single-port.patch` | `lib/cec.sh` (HDMI-CEC) | Makes Valve's Steam Machine CEC driver find amdgpu's HDMI port | diff --git a/patches/steamify-os-release.sh b/patches/steamify-os-release.sh index 12cadf6..33c3f3c 100644 --- a/patches/steamify-os-release.sh +++ b/patches/steamify-os-release.sh @@ -1,13 +1,14 @@ #!/bin/sh # Installed by Steamify CachyOS (SteamOS conversion): what Steam shows in its -# System settings besides the OS name, which stays CachyOS's: Steamify as the -# variant with its version, and the SteamOS release it follows as the -# codename (/etc/os-release's VARIANT, VERSION_CODENAME). No VERSION_ID: KDE's -# About this System would show it after CachyOS's name ("CachyOS Linux 2.9.0"). NAME and +# System settings besides the OS name, which stays CachyOS's: the SteamOS +# release Steamify follows as the OS version (VERSION_ID, e.g. steamos-3.9), +# steam-machine as the codename, and Steamify with its version as the variant +# (VARIANT_ID, which Steam shows). KDE's About this System would show +# VERSION_ID after the name: the conversion sets its UseOSReleaseVersion, so it +# shows os-release's VERSION instead, which CachyOS doesn't have. NAME and # PRETTY_NAME are never touched: limine-snapper-sync finds the boot entries by # the OS name. The zz-steamify-os-release hook runs this after cachyos-hooks. sed -i -e '/^VARIANT=/d' -e '/^VARIANT_ID=/d' -e '/^VERSION_ID=/d' -e '/^VERSION_CODENAME=/d' /etc/os-release -# Steam shows VARIANT_ID as the OS Variant: the version goes in there too. -printf '%s\n' 'VARIANT="Steamify @VERSION@"' 'VARIANT_ID=steamify-@VERSION@' >> /etc/os-release -[ -n "@CODENAME@" ] && echo 'VERSION_CODENAME=@CODENAME@' >> /etc/os-release +printf '%s\n' 'VARIANT="Steamify @VERSION@"' 'VARIANT_ID=steamify-@VERSION@' 'VERSION_CODENAME=steam-machine' >> /etc/os-release +[ -n "@STEAMOS@" ] && echo 'VERSION_ID=@STEAMOS@' >> /etc/os-release exit 0 From 3b4f3b231393189380664bd641a6ab736d47694c Mon Sep 17 00:00:00 2001 From: rickpeters Date: Mon, 28 Sep 2026 19:31:28 +0200 Subject: [PATCH 2/2] docs: changelog hash for a72d848 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75b39a8..ee1c854 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ one per merged pull request. ## 2.9.0 - 2026-09-28 - `d30d505` **chore: Version 2.9.0** -- **feat: Steam's OS Version is the SteamOS release Steamify follows (steamos-3.9), its OS Codename steam-machine; About this System keeps "CachyOS Linux" (UseOSReleaseVersion)** +- `a72d848` **feat: Steam's OS Version is the SteamOS release Steamify follows (steamos-3.9), its OS Codename steam-machine; About this System keeps "CachyOS Linux" (UseOSReleaseVersion)** - `27a4070` **fix: Steam's OS Variant shows Steamify's version (VARIANT_ID=steamify-2.9.0; Steam shows VARIANT_ID, not VARIANT)** - `44bfe07` **fix: No VERSION_ID in os-release: About this System said "CachyOS Linux 2.9.0"; the version is in VARIANT ("Steamify 2.9.0")** - `435f69c` **feat: Steam's System settings: the OS name stays CachyOS (no renaming, also not in About this System), Steamify as the variant, the SteamOS release it follows as the codename (steamos-3.9)**