Solvednixpkgs Steam: Proton games don't start anymore

Describe the bug
I can't start proton games anymore since some days.

At first it helps to restart steam, but today i have the issue every time.

I haven't done a NixOS update, but there was a Steam update 7 days ago. Maybe that broke something again.

A NixOS update did not fix it.

To Reproduce
Steps to reproduce the behavior:

  1. Start Steam
  2. Start a Windows game using Proton
  3. Steam says the game is started and then stopped, you don't see a window or anything

This might be the main error:

pressure-vessel-wrap[3305800]: W: Found more than one possible libdrm data directory from provider
pressure-vessel-wrap[3305800]: W: "/nix/store/m7zbimzdhss9ngi5qaaarsx20n3vd4ww-libdrm-2.4.105/share/libdrm" is unlikely to appear in "/run/host"
bwrap: execvp /usr/lib/pressure-vessel/from-host/bin/pressure-vessel-adverb: No such file or directory

Here is the full log: https://gist.github.com/davidak/72f1632ec5b79cb230df06204774a1e6

Workaround

  1. Search for "Steam Linux Runtime - Soldier" in your Library
  2. Open it's properties
  3. Go to Betas and select "previous_release"

Screenshot from 2021-07-21 05-15-57

Expected behavior
Steam games start as before

Additional context

Pantheon Desktop, AMD Radeon RX 480 GPU

Tested games that fail to start:

  • Are you ready for Valve Index?
  • GemCraft - Chasing Shadows
  • Borderlands Game of the Year Enhanced
  • Borderlands 2
  • Eternal Card Game
  • STAR WARS™ Battlefront™ II
  • STAR WARS™ Jedi Knight II - Jedi Outcast™
  • STAR WARS™ Jedi Knight - Jedi Academy™
  • Bad North
  • Gothic 1
  • Plants vs. Zombies GOTY Edition
  • Red Faction Guerrilla Steam Edition
  • Rise of Nations: Extended Edition
  • Sid Meier's Civilization® IV
  • Untitled Goose Game

Tested games that work:

  • Age of Mythology: Extended Edition
  • Counter-Strike: Global Offensive (linux native)
  • Pine (native linux)

I tested the open Steam PRs, but they don't fix this issue.

#130456
#126435

Notify maintainers
@jagajaga @jonringer

Metadata

  • system: "x86_64-linux"
  • host os: Linux 5.12.10, NixOS, 21.05.1555.6b940846e99 (Okapi)
  • multi-user?: yes
  • sandbox: yes
  • version: nix-env (Nix) 2.3.12
  • channels(root): "home-manager-21.05, nixos-21.05.1555.6b940846e99, nixos-hardware, nixos-unstable-21.11pre302501.b59c06dc92f"
  • nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos

Maintainer information:

# a list of nixpkgs attributes affected by the problem
attribute: steam
# a list of nixos modules affected by the problem
module:
34 Answers

✔️Accepted Answer

This should be fixed in SteamLinuxRuntime_soldier depot 0.20210723.18, currently available in the client_beta branch. The status of today's versions should be:

  • previous_release: 0.20210415.x, works
  • default branch: 0.20210629.0, doesn't work on NixOS
  • client_beta: 0.20210723.18, works

The 0.20210723.18 build, or a later version, will be committed to the default branch when more people have had a chance to try it and check for regressions.

The fixed version looks like this (or newer):

$ cat ~/SteamLibrary/steamapps/common/SteamLinuxRuntime_soldier/VERSIONS.txt 
#Name	Version		Runtime	Runtime_Version	Comment
depot	0.20210723.18			# Overall version number
pressure-vessel	0.20210722.0			
scripts	v0.20210722.0-0-gb142f90			# Entry point scripts, etc.
soldier	0.20210719.0	soldier	0.20210719.0	# soldier_platform_0.20210719.0/

If you are still getting the error bwrap: execvp .../pressure-vessel-adverb: No such file or directory with a fixed version, please comment on ValveSoftware/steam-runtime#431 with full details.

If you experience different problems with Proton 5.13+, please open a separate issue.

Other Answers:

it has already been stated that valve does not want and will not support us if we package/distribute the steam soldier runtime ourselves

Yes, this. The only supported distribution channel for Steam games, Proton and soldier is Steam's own download mechanism (Steampipe). Similarly, the only supported scout Steam Runtime is the one in ~/.steam/root/ubuntu12_32/steam-runtime.

Part of the purpose of the soldier runtime is that its content and update cadence is under Valve's control, so if a new version of Proton requires adding or upgrading libraries in soldier, Valve can make sure a suitable version of soldier ships first. That wouldn't work if downstream distributions package an older version of soldier that takes an arbitrary amount of time to update - if we tried to support that, then we'd be limited by the speed of the slowest-updating distribution (or, more realistically, we wouldn't know about all the distributions and would continue anyway, and the slower-updating distributions would stop working).

This should not be news to anyone - Steam is a sales and distribution platform for binary blobs with known content. Some of them (like soldier and Proton) happen to be built from open-source software, but their official, supportable version is a specific binary build, and no other build of them is going to be supported.

It's also not currently possible to have a second, parallel version of soldier, even as an unsupportable tweak: Proton 5.13+ encodes its dependency on soldier as a Steampipe app-ID, not as an abstract runtime ABI identifier that could point to a user-configurable implementation, so the only thing it is going to use is the Steam library directory into which an official soldier build is downloaded. (I have to edit that directory in-place when I'm testing new versions of soldier.)

NixOS has an unusual non-FHS layout that breaks many assumptions that would be true on more typical distros, and pressure-vessel needs detailed knowledge of the filesystem layout, so it is likely that pressure-vessel on NixOS will occasionally regress. I try to keep it working, but my resources are limited and I can't run examples of every distribution. If you want to minimize regressions like this for NixOS users, the best way to do that is to use the beta branches of soldier and Steam, and report regressions early, so that we can fix them before they get into the default branch next time (kudos to @baracoder for reporting ValveSoftware/steam-runtime#431 and working with me to get this fixed).

Or maybe a fork of it, like GloriousEggroll's?

GloriousEggroll's Proton fork does not include a soldier fork: it runs on Valve's official binary builds of soldier, the same as Valve's official and experimental Proton builds. I'm hoping that forking soldier will never be necessary.

If you select Steam Linux Runtime - Soldier -> Betas -> previous_release, it works.
I have created this ticket: ValveSoftware/steam-runtime#431

This might be a bug in pressure-vessel or a bug in NixOS' packaging for Steam, we don't have enough information to know which yet.

It seems to be a pressure-vessel bug. Please use the previous_release on NixOS for now; the next beta release should have a fix.

This should be fixed in SteamLinuxRuntime_soldier depot 0.20210723.18, currently available in the client_beta branch.

soldier depot 0.20210723.18 (Steampipe build ID 7074429) has now been promoted to the default branch.

If you are experiencing similar symptoms with an up-to-date "Steam Linux Runtime - soldier", please open a separate issue with full details, minimally including SteamLinuxRuntime_soldier/VERSIONS.txt and the error messages from the log. Sorry, "it's broken" is not enough information to diagnose a bug or find a solution.

I am not a NixOS user or developer, so I don't know how NixOS developers prefer to manage their issue reports, but I suspect they would also find it easier for regression reports to be a separate issue with full details.

More Issues: