Persistent packages on Steam Deck using Nix
Using Nix on the Steam Deck / Immutable Arch
- The Deck’s immutable Arch root makes traditional AUR/pacman installs fragile; Nix is seen as a strong fit because it respects immutable roots, supports atomic upgrades, and has a large, up-to-date package set.
- Common pattern: Flatpak for GUI apps, Nix for CLI/dev tools; others use overlayfs or re-run pacman scripts after each SteamOS update.
- Users report success running Nix-installed tools and using Home Manager–created user systemd services alongside SteamOS, including in game mode, though the exact boundaries vs. full NixOS remain somewhat unclear.
Graphics / OpenGL and Desktop App Issues
- Several people hit serious problems packaging GUI apps with Nix on non-NixOS systems: OpenGL/Vulkan and hardcoded X11 paths often break when the app is run outside the Nix environment.
- nixGL and nix-gl-host can wrap executables or the compositor to inject correct driver paths, but wrapping everything is seen as tedious.
- Broader complaint: decades of software assuming fixed
/usrpaths makes Nix-style per-package prefixes painful; Nix’s design is described as a workaround for badly written, non-relocatable software.
What “Nix” Is (and Comparisons to Guix/Spack)
- Clarifications:
- Nix = package manager + build system; Nix language/expressions = config language; nixpkgs = package repo; NixOS = distro built/configured with Nix.
- Some distinguish three parts: language, interpreter, and build/sandbox engine.
- Guix is praised for its Scheme/Guile-based language and service manager, but criticized for fewer/staler packages and strict FOSS-only policies; nonguix exists for nonfree bits, and patch workflow via mailing lists frustrates some.
- Spack is mentioned as another option in HPC settings for mixing system and source-built dependencies.
Installers, Forks, and Governance (Determinate, Lix)
- Determinate Systems’ Nix installer is widely praised: clear about changes, supports clean uninstallation, and was explicitly tested on the Steam Deck.
- Some criticize the tight relationship between this company and upstream Nix (conflict-of-interest concerns, “Determinate Nix” enabling features not yet default upstream).
- Lix is a fork of Nix (language + implementation) and also a community project; claims include better defaults, fewer footguns, faster parsing, and regular releases, plus a fork of the Determinate installer.
- An “official” installer in the style of Determinate’s is reportedly in progress but constrained to upstream’s official feature set.
Nix for Development Environments
- Positive experiences: per-project environments via Nix + direnv on macOS/Linux; exact tool versions pinned in Git; same configs reused in CI and production.
- Use cases cited: consulting across many stacks; tooling like Node, kustomize, poetry, linters, language servers, and shell tools (grep/sed/awk) that fall outside language-specific package managers.
- Some are skeptical, saying they’ve rarely needed this complexity; others respond that Nix is painful but often the only unified, reliable solution, especially compared to conda, which is described as brittle at scale.
- Nix works well for C/C++, but Python+ML packaging via Nix is reported as still tricky for complex stacks.
Retro Gaming and Game Ports
- Several users use Nix/NixOS to trivially build and bundle retro ports (Ocarina of Time, Majora’s Mask, SM64) and want these setups on Steam Deck; Nixpkgs contains most of these ports, with a few missing due to packaging difficulty.
- Nix is seen as attractive for “retro rigs” because it can bundle emulators, drivers, and supporting tools declaratively.
- Outside of Nix, EmuDeck and RetroDeck are discussed:
- EmuDeck is feature-rich but considered messy (absolute symlinks, sync issues, different Windows/Linux behavior).
- RetroDeck is a newer, more self-contained flatpak-based alternative.
Practical Concerns on the Deck
- Some report Nix daemon/socket issues after suspend on the Deck; single-user (no-daemon) mode is considered safer there.
- Storage usage concerns are raised: between Flatpak, Nix, and games, space can be tight; replies note that both Nix and Flatpak deduplicate shared libraries, but the overall impact remains a consideration.
Terminology, Arch, and Channels
- There’s a side discussion clarifying that “nix” is historically a censorship/trademark dodge (“Unx”), not a literal glob, and that “Unix-like” is a clearer term.
- Running Nix on Arch/Steam Deck is jokingly framed as “peak Linux”; some note Arch’s Nix package has been subtly broken in the past, and suggest using upstream installers or AUR variants instead.
- One commenter questions why Nix stable channels do not expose a “latest” alias, forcing users to manually update their channel URLs; no definitive answer is given.