fix(steamdeck): fix Steam OOBE 'unable to download required update' error #572
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/steamdeck-oobe-update"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Steam's OOBE on Jovian NixOS fails with "unable to download the required update" and setup cannot complete.
Root causes (four, found iteratively)
jupiter-initial-firmware-update checkexits 127. The script escalates via pkexec before checking its sentinel file, and the gamescope session has no polkit agent, so the day-1 firmware OOBE screen can never complete.The sentinel never exists on Jovian NixOS. On SteamOS,
/etc/jupiter-ran-initial-firmware-updateis created after the day-1 firmware flow; on Jovian NixOS firmware is Nix-managed so the flow never runs. Additionally, the steam-runtime pressure-vessel container mounts its own/etc/(host/etc/is invisible inside), so the sentinel must live under/run/(shared with the host)./usr/bin/steamos-polkit-helpers/doesn't exist. Steam hardcodes this path for OS/BIOS update checks. Jovian renamed the package toholo-polkit-helperswith no compat path, so every check returned 127. Upstream Jovian does not handle this (verified against the development branch).The Jovian gamescope-session hardcodes the steam binary path at build time, so
programs.steam.extraPackagesadditions never reached the running session. Also/etc/systemd/user/is read-only on NixOS, so the service override must be a drop-in under~/.config/systemd/user/.A fifth gotcha: the container maps host
/usr/bin/→ container/bin/, and the host had no/usr/bin/sh— so the container had no/bin/shand every#!/bin/shscript exited 127 regardless of being present.Fix
/run/jovian/jupiter-ran-initial-firmware-updatevia tmpfiles (visible in-container)jupiter-initial-firmware-updatewrapper that checks the sentinel before pkexecsteamos-polkit-helperscompat dir (host tmpfiles symlink + FHS package viaprograms.steam.extraPackages) withsteamos-update/steamos-select-branchcalling jovian-stubs directly and ajupiter-biosupdateexit-0 stubsteamos-update/steamos-update-raucstubs in systemPackages/usr/bin/shsymlink so the container gets/bin/sh~/.config/systemd/user/pointing atconfig.programs.steam.package(plus ownership fixes for the tmpfiles unsafe-path-transition rejection)Verified
jupiter-initial-firmware-update check→ 0 (was 127)/usr/bin/steamos-polkit-helpers/steamos-update check→ 7/8 (was 127)🤖 Generated with Claude Code
c87210e8428bed47521bView command line instructions
Manual merge helper
Use this merge commit message when completing the merge manually.
Checkout
From your project repository, check out a new branch and test the changes.