Name: pocketds-steam Version: 20260517 Release: 20260517180000%{?dist} Summary: Native ARM64 Steam client + Proton 11 (ARM64) bootstrap for the AYANEO Pocket DS # Switchdeck (Source10/Source11) is GPL-3.0; the postinst/udev/spec # bits are GPL-3.0-or-later so the whole RPM is GPL-3.0-or-later. License: GPL-3.0-or-later URL: https://github.com/Azkali/Switchdeck # ── system entry points ── Source0: pocketds-steam Source1: steam.desktop # ── per-user bootstrap (Switchdeck-derived) ── Source10: pocketds-steam-bootstrap Source11: launch-steam.sh # ── per-user Proton 11 ARM64 installer + auto-default pin ── Source20: pocketds-steam-install-proton Source21: pocketds-steam-default-proton11 # ── user systemd units (oneshots fired by the preset on first login) ── Source30: pocketds-steam-bootstrap.service Source31: pocketds-steam-install-proton.service Source32: pocketds-steam.preset # ── system drop-ins ── Source40: 70-uinput.rules Source41: uinput.conf Source42: libvpx-compat.sh Source99: README.md BuildArch: noarch %global debug_package %{nil} BuildRequires: systemd-rpm-macros # Runtime deps for the user bootstrap + Proton install paths. Requires: wget Requires: unzip Requires: tar Requires: xz Requires: gzip Requires: coreutils Requires: file Requires: findutils Requires: procps-ng Requires: gawk # default-proton11 helper is Python; matches the python3 footprint we # already pull in via pocketds-userspace's mode-listener. Requires: python3 # `xdg-user-dir` for Switchdeck's launch-steam.sh user-desktop logic. Requires: xdg-user-dirs # libvpx-compat.sh needs libvpx.so.9 to exist before it'll shim .so.6. Requires: libvpx # Steam ARM client transitively expects these for SDL2 input + GTK2 chrome. Requires: SDL2 Requires: gtk2 # Steam Big Picture / steamwebhelper hard-links libnss; pull it in to # keep the bootstrap usable behind a captive-portal CDN. Requires: nss # /dev/uinput uaccess rule needs systemd-udev to actually apply. Requires: systemd-udev # Switchdeck's gamemode mode-2 stops/starts plasma-plasmashell; only a # soft dep so removing Plasma doesn't yank the package. Recommends: plasma-workspace %description Wraps Azkali/Switchdeck (GPL-3.0) into an RPM that ships the native ARM64 Steam client bootstrap, the Steam Linux Runtime (steamrt3c arm64), the Proton 11 ARM64 mod (Sildur build, ~1.09 GiB from archive.org), and the system-side bits the bootstrap needs: a /dev/uinput uaccess udev rule, an early-boot uinput modprobe drop-in, and a libvpx.so.6 → libvpx.so.9 compatibility symlink. Two user-systemd oneshots (auto-enabled by a preset) do the actual download + install on first login, then `pocketds-steam-default-proton11` pins Proton 11 ARM64 as the global Steam Play default by editing config.vdf — the user never has to touch Steam's Settings → Compatibility dialog. %prep # no build, sources are dropped in directly %build # nothing to build %install # ── system entry points ── install -D -m 0755 %{SOURCE0} %{buildroot}%{_bindir}/pocketds-steam install -D -m 0644 %{SOURCE1} %{buildroot}%{_datadir}/applications/pocketds-steam.desktop # ── per-user bootstrap + Switchdeck launcher ── install -D -m 0755 %{SOURCE10} %{buildroot}%{_bindir}/pocketds-steam-bootstrap install -D -m 0755 %{SOURCE11} %{buildroot}%{_datadir}/pocketds-steam/launch-steam.sh # ── per-user Proton 11 ARM64 install + default-pin helper ── install -D -m 0755 %{SOURCE20} %{buildroot}%{_bindir}/pocketds-steam-install-proton install -D -m 0755 %{SOURCE21} %{buildroot}%{_bindir}/pocketds-steam-default-proton11 # ── user systemd units + preset ── install -D -m 0644 %{SOURCE30} %{buildroot}%{_userunitdir}/pocketds-steam-bootstrap.service install -D -m 0644 %{SOURCE31} %{buildroot}%{_userunitdir}/pocketds-steam-install-proton.service install -D -m 0644 %{SOURCE32} %{buildroot}%{_prefix}/lib/systemd/user-preset/95-pocketds-steam.preset # ── system drop-ins ── install -D -m 0644 %{SOURCE40} %{buildroot}%{_sysconfdir}/udev/rules.d/70-uinput.rules install -D -m 0644 %{SOURCE41} %{buildroot}%{_sysconfdir}/modules-load.d/uinput.conf # ── /etc/pocketds-steam (empty dir for override files) ── install -d -m 0755 %{buildroot}%{_sysconfdir}/pocketds-steam # ── docs ── install -D -m 0644 %{SOURCE99} %{buildroot}%{_docdir}/%{name}/README.md %files %{_bindir}/pocketds-steam %{_bindir}/pocketds-steam-bootstrap %{_bindir}/pocketds-steam-install-proton %{_bindir}/pocketds-steam-default-proton11 %{_datadir}/applications/pocketds-steam.desktop %{_datadir}/pocketds-steam/launch-steam.sh %dir %{_datadir}/pocketds-steam %{_userunitdir}/pocketds-steam-bootstrap.service %{_userunitdir}/pocketds-steam-install-proton.service %{_prefix}/lib/systemd/user-preset/95-pocketds-steam.preset %{_sysconfdir}/udev/rules.d/70-uinput.rules %{_sysconfdir}/modules-load.d/uinput.conf %dir %{_sysconfdir}/pocketds-steam %doc %{_docdir}/%{name}/README.md %post # libvpx.so.6 shim — see libvpx-compat.sh header for rationale. We # splat the script body inline rather than installing it because it's # a one-shot %post action with no need to live on the filesystem. if [ -e /usr/lib64/libvpx.so.9 ] && [ ! -e /usr/lib64/libvpx.so.6 ]; then /usr/bin/ln -s libvpx.so.9 /usr/lib64/libvpx.so.6 || : fi # udev hwdb refresh so the uinput uaccess tag takes effect on the # already-loaded module without a reboot. /usr/bin/systemd-hwdb update >/dev/null 2>&1 || : /usr/bin/udevadm control --reload-rules >/dev/null 2>&1 || : /usr/bin/udevadm trigger --sysname-match=uinput >/dev/null 2>&1 || : # Try to load uinput now; on a chroot install this is a no-op (no live # kernel to load into) and the modules-load.d drop-in handles cold # boot instead. /usr/sbin/modprobe uinput >/dev/null 2>&1 || : %postun # Remove the libvpx shim only if it's still pointing at our target # and nobody else owns it. Skip on upgrade (`$1 -ge 1`). if [ "$1" -eq 0 ]; then if [ -L /usr/lib64/libvpx.so.6 ] && \ [ "$(/usr/bin/readlink /usr/lib64/libvpx.so.6)" = "libvpx.so.9" ]; then /usr/bin/rm -f /usr/lib64/libvpx.so.6 || : fi fi %changelog * Sun May 17 2026 Pocket DS Maintainers - %{version}-%{release} - Initial package: Switchdeck-wrapped native ARM64 Steam client + Proton 11 ARM64 (Sildur build, archive.org mirror), with auto-pin of Proton 11 ARM64 as the global Steam Play default and a libvpx.so.6 Fedora compatibility shim.