Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

steamos-nvidia-installer

Install real SteamOS on any PC with an NVIDIA RTX graphics card.

steamos-nvidia-installer demo

Valve's SteamOS recovery image only ships drivers for AMD hardware. This script takes the official recovery image and produces a bootable USB installer with the NVIDIA driver baked in — including self-healing OS updates, so updating from inside Steam keeps working afterwards.

Everything is built from the official image on your own machine. Nothing from Valve is redistributed here.

Independent hobby project — not affiliated with or endorsed by Valve or NVIDIA. See LICENSE.


What you need

A Linux machine to build the USB image on (Arch-based recommended):

  • ~20 GB free disk space
  • losetup, btrfs-progs, rsync, curl, kmod, zstd, pacman, python3, binutils (for readelf)
  • root (sudo)

The target machine (where SteamOS will be installed):

  • NVIDIA GTX 16 / RTX 20-series or newer — the open kernel driver only supports Turing and later, so GTX 10 series and older will not work
  • UEFI boot, Secure Boot disabled
  • A USB stick or external drive of 16 GB or more to flash the installer to

Step 0 — Get this script

Clone the repo:

git clone https://github.com/28allday/steamos-nvidia-installer.git
cd steamos-nvidia-installer

Or download just the one script:

curl -O https://raw.githubusercontent.com/28allday/steamos-nvidia-installer/main/steamos-nvidia-installer.sh
chmod +x steamos-nvidia-installer.sh

Step 1 — Download the official SteamOS recovery image

Get it straight from Valve:

https://help.steampowered.com/en/faqs/view/65B4-2AA3-5F37-4227#install

Download the recovery image and decompress it — you end up with a .img file:

bunzip2 steamdeck-*.img.bz2

Step 2 — Build the NVIDIA installer image

Put the .img next to the script and run it (with no argument it auto-detects a single recovery image sitting beside it):

sudo ./steamos-nvidia-installer.sh steamdeck-<version>.img

This copies the image (the original is never modified), resolves the NVIDIA open driver from Arch Linux (the current one, or the branch you asked for with --driver), pins it to permanent archive URLs, verifies every binary is compatible with the image's glibc, compiles the kernel module against the image's exact kernel in a throwaway build chroot, installs the driver, and adds a one-click installer to the desktop. Takes roughly 10–20 minutes. The result is:

steamdeck-<version>-nvidia-usbinstall.img

Picking a driver branch

By default you get whatever nvidia-open current Arch ships. To pin a specific branch instead — SteamOS itself ships 575.x — pass --driver:

sudo ./steamos-nvidia-installer.sh --driver 580 steamdeck-<version>.img

The argument is latest (default) or a version prefix: a branch (580), a release (580.105.08), or an exact build (580.105.08-4). The newest matching build is taken from Arch's package archive, and the matching nvidia-open-dkms, lib32-nvidia-utils and any support package the frozen SteamOS image lacks (e.g. egl-wayland2, only a dependency from 590 on) are pinned to the same release. Turing (RTX 20-series) or newer is required on every branch.

Rebuilding with a different branch in the same --workdir is fine — the build overlay is cleared automatically when the cached version doesn't match (the downloaded packages are kept).

Step 3 — Flash it to USB

sudo dd if=steamdeck-<version>-nvidia-usbinstall.img of=/dev/sdX bs=4M status=progress conv=fsync

Replace /dev/sdX with your USB stick (check with lsblkeverything on it will be erased).

Step 4 — Boot the USB and install

  1. Boot the target machine from the USB stick (UEFI boot menu, Secure Boot off).
  2. It boots into a SteamOS desktop. Double-click one of the icons:
    • Install SteamOS (NVIDIA) to Hard Drive — fresh install; erases the chosen disk completely.
    • Upgrade SteamOS (NVIDIA) — keeps games & data — reinstalls only the OS partitions on a disk that already has SteamOS, preserving your games, saves and Steam login.
  3. Pick the target disk, confirm, and wait a few minutes. The machine powers off when done.
  4. Remove the USB stick and boot. First boot lands in the Steam setup screen, then it's a normal SteamOS machine — Game Mode, Desktop Mode, the lot.

OS updates

Updates from inside Steam just work (this is the default). Valve's updater stages the new OS version as usual, then the driver is automatically rebuilt for the new version before the reboot prompt appears (adds 10–20 minutes to an update). If the rebuild fails for any reason, the update is cancelled and the machine keeps booting the current working system — it fails safe.

To move to a different driver later, rebuild the USB image (each run re-resolves the driver — latest by default, or whatever --driver names) and reinstall using the Upgrade icon. The installed system stays on the driver it was built with until you do; updates never drift it to another version.

Alternative update modes at build time:

Flag Behaviour
(default) Self-healing updates as described above
--hold-updates Steam always reports "up to date" — OS is frozen
--no-hold-updates Stock updates — an OS update will remove the driver

All options

--driver SPEC      Driver to install: latest (default), or a branch/version
                   prefix — 580, 580.105.08, 580.105.08-4.
--hold-updates     Hard-hold OS updates instead of self-healing.
--no-hold-updates  Stock update behaviour (driver lost on update!).
--no-installer     Skip the desktop installer — just a bootable patched OS.
--trim-cuda        Drop CUDA/OpenCL/OptiX libraries (~350 MB smaller).
--skip-sigcheck    Disable pacman signature checks in the build chroot.
--workdir DIR      Build cache location (~3 GB, speeds up reruns).

Troubleshooting

Black screen on first boot of the installed system — power-cycle once before digging deeper; SteamOS hides its boot console (it lives on tty4–6), so a working boot can look black for a while. If it persists, press Ctrl+Alt+F3, log in as deck, and run steamos-session-select plasma to get a desktop for diagnosis.

The build says "No repair_device.sh in image home" — the .img you fed it isn't the recovery/repair image. Use the recovery image from the link in Step 1.

pacman signature errors during the build — rerun with --skip-sigcheck (packages come from Valve's and Arch's own servers over HTTPS).

Hybrid graphics laptops (iGPU + RTX) — desktops with only an RTX card are the clean path. On hybrids the iGPU may own the boot display; results vary.

Security note

The installed system ships a passwordless-sudo drop-in for the deck user (the desktop installer needs it). Once you've set a password (passwd in Desktop Mode), remove it:

sudo rm /etc/sudoers.d/zz-deck-nopasswd

Disclaimer

Not affiliated with, authorised by, or endorsed by Valve or NVIDIA. SteamOS is Valve's; the NVIDIA driver is NVIDIA's. This is an independent hobby project that wires them together on your own hardware — use at your own risk. Tested on SteamOS 3.8.10–3.8.14 recovery images with an RTX 5060 Ti and NVIDIA driver 610.43.03.

About

Install SteamOS on any PC with an NVIDIA RTX card — one-click USB installer built from the official recovery image, with self-healing OS updates.

Resources

Stars

113 stars

Watchers

7 watching

Forks

Releases

Packages

Contributors

Languages