Contents

Before you begin

Use Desktop Mode and open Konsole. Keep the Deck on external power, preserve important data, and read the resolver’s trust classification before installing. SteamOS updates can replace the active A/B system slot, so an install that works today is not automatically carried into a future SteamOS image.

The inspection and published-install entrypoints check these executable names before they create a working directory or request administrator access:

curl
git
modinfo
python3
realpath
sha256sum
tar
zstd

On SteamOS, modinfo is provided by the kmod package, python3 by the python package, and realpath plus sha256sum by GNU coreutils. NVIDIA userspace setup also preflights awk, sort, tar, grep, tail, mkdir, rm, sudo, pacman, ldconfig, cp, install, sed, and tee before the phase that uses them. The standard SteamOS base supplies these through its base shell/coreutils, pacman, kmod, and privilege packages.

On a stock SteamOS image, use Valve’s supported package-management workflow to restore a missing prerequisite. Do not paste an unreviewed command that disables read-only mode or refreshes package databases merely to satisfy this list. The entrypoint reports Missing command: NAME and exits before installation when a required tool is absent.

Development source builds additionally require rootless Podman with its graph root under the user’s home directory. Core build entry points never install a missing Podman implicitly. After reviewing the host mutation, install it explicitly with ./bootstrap/setup_build_env.sh --install-podman; without that flag, setup fails before sudo or pacman. QEMU, host storage tools, and Linux/macOS application dependencies belong to OPEMOS.EXE host setup and are not Core CLI prerequisites.

The expected kernel module set is exactly:

nvidia.ko
nvidia-drm.ko
nvidia-modeset.ko
nvidia-peermem.ko
nvidia-uvm.ko

Inspect without changing the system

The resolution-only path reports the selected SteamOS, kernel, NVIDIA version, release, and trust state without installing userspace or modules:

cd ~ && bash <(curl -fsSL "https://raw.githubusercontent.com/CorniiDog/OPEMOS/main/bootstrap/online_setup_nvidia.sh?x=$(date +%s)") --resolve-only

no_compatible_artifact is a safe result. It means an exact artifact has not been published; it is not permission to use a closest kernel.

Install a published build

cd ~ && bash <(curl -fsSL "https://raw.githubusercontent.com/CorniiDog/OPEMOS/main/bootstrap/online_install.sh?x=$(date +%s)")

The orchestrator selects matching userspace, validates the release artifact, installs the modules, refreshes dependency metadata and initramfs state, and owns the optional reboot prompt. Low-level installers do not reboot by themselves.

The initial curl currently comes from mutable main. That gives run consistency after download but is not independent bootstrap authentication. See Public online installer.

Use a reviewed local checkout

This path lets you inspect the exact scripts before running them:

cd ~
git clone https://github.com/CorniiDog/OPEMOS.git opemos
cd opemos
./bootstrap/setup_nvidia.sh --resolve-only
./bootstrap/online_install.sh --help
./bootstrap/online_install.sh

Before rerunning after a SteamOS reinstall, capture a non-sudo baseline:

./tests/non_sudo.sh --online \
  --report "$HOME/.cache/open-gpu-kernel-modules-steamos-support/baselines/pre-reinstall.txt"

Development and upstream control modes

Select matching userspace for a project source branch without replacing kernel modules:

./bootstrap/setup_nvidia.sh --development 580 --resolve-only

Build and install pristine NVIDIA upstream as a control case, without project patches:

./bootstrap/setup_nvidia.sh --use-upstream 580 --resolve-only
./bootstrap/setup_nvidia.sh --use-upstream 580 --yes --offer-reboot

Build a pristine archive without replacing installed modules:

./bootstrap/install_upstream.sh --build-only 580.119.02

These are development workflows. They must not be presented as certified published installation.

Install a local artifact

Route a local archive through the normal orchestration and validation path:

./bootstrap/online_install.sh --local /absolute/path/to/nvidia-open-....tar.gz

Compile the current NVIDIA source checkout and pass it to the installer:

./bootstrap/online_install.sh --in-code

Uninstall

From the repository checkout:

./bootstrap/uninstall.sh

The transaction restores module dependencies, initramfs state when available, and SteamOS read-only state. A failed rollback remains a failure; do not treat partial cleanup as success.

Where files are stored

OPEMOS retains its original internal directory identifier so upgrades and uninstalls can find existing state.

Large source trees, build output, backups, and containers stay on /home:

~/.cache/open-gpu-kernel-modules-steamos-support/

Installed state is recorded under:

/var/lib/open-gpu-kernel-modules-steamos-support/

Only the final module set belongs under the exact running kernel’s module tree.