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 /usr paths 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.