Steam: Difference between revisions

From NixOS Wiki
imported>K900
imported>Hw-lunemann
m Setting STEAM_EXTRA_COMPAT_TOOLS_PATHS to what is it's default anyways is superfluous. Additionally this is relevant for any custom proton version, therefore the renaming of the heading.
Line 138: Line 138:
From this version of NixOS onwards, you should be able to play most games with Proton.
From this version of NixOS onwards, you should be able to play most games with Proton.


=== GE-Proton (GloriousEggroll) ===
=== Custom Proton versions ===


By default, Steam on NixOS won't see any manually-installed [https://github.com/GloriousEggroll/proton-ge-custom Proton-GE] versions. In order for Steam to be able to find these, you need to have the environment variable <code>STEAM_EXTRA_COMPAT_TOOLS_PATHS</code> set in your login session, for example:
By default, Steam looks for custom Proton versions such as GE-Proton in <code>~/.steam/root/compatibilitytools.d</code>. Additionally the environment variable <code>STEAM_EXTRA_COMPAT_TOOLS_PATHS</code> can be set to change or add to the paths which steam searches for custom Proton versions.
 
<syntaxhighlight lang=nix>
environment.variables.STEAM_EXTRA_COMPAT_TOOLS_PATHS = "~/.steam/root/compatibilitytools.d";
</syntaxhighlight>


{{note|As of 8/2022, the [https://search.nixos.org/packages?query&#61;protonup protonup] auto-updater in nixpkgs is currently broken due to a naming convention change; see discussion [https://github.com/AUNaseef/protonup/issues/25 here] which suggests using a fixed fork (which is not yet part of nixpkgs) until it is patched or a PR is accepted. (Or you can simply just continue to manually install new versions.)}}
{{note|As of 8/2022, the [https://search.nixos.org/packages?query&#61;protonup protonup] auto-updater in nixpkgs is currently broken due to a naming convention change; see discussion [https://github.com/AUNaseef/protonup/issues/25 here] which suggests using a fixed fork (which is not yet part of nixpkgs) until it is patched or a PR is accepted. (Or you can simply just continue to manually install new versions.)}}

Revision as of 22:29, 14 February 2023

This page is intended to explain how to run Steam, Steam games as well as proprietary DRM-free games under NixOS. A dedicated Games page lists games and reports on their successful execution on NixOS.

Install

To install the Steam package and enable all the system options necessary to allow it to run:

/etc/configuration.nix
programs.steam = {
  enable = true;
  remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
  dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
};
Note: Enabling steam installs several unfree packages. If you are using allowUnfreePredicate you will need to ensure that your configurations permit all of them.
{
  nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
    "steam"
    "steam-original"
    "steam-runtime"
  ];
}


steam-tui

If you want the steam-tui client you'll have to install it, but since it relies on `steamcmd` being set up, you'll have to set that up, just to generate the right files.

nix-shell -p steamcmd --run steamcmd

And then log in:

login <username> <password> <steam 2fa password>

After that, steam-tui should start fine.

FHS environment only

This will only make partial installation - provide the script, which creates the typical environment expected by proprietary games and software on regular Linux, allowing to run such software without patching. Useful if you plan to run games downloaded from the internet.

Note that this is not necessary for clients installed from Nixpkgs (like Minigalaxy or Itch), which already use the FHS environment.

There are two options to install the FHS environment. The first is to install steam-run.

Example snippet of configuration.nix:

  environment.systemPackages = with pkgs; [
    steam-run
  ];

Another option, in case you need more flexibility, is to directly reference the part of steam metapackage.

Example snippet of configuration.nix:

  environment.systemPackages = with pkgs; [
    (steam.override { /* Your overrides here */ }).run
  ];

Install the game by setting the executable attribute on the installer and then running it via steam-run ./your_installer.sh. After installation, edit the "~/.local/share/applications/your_game.desktop" and replace the exec line from Exec="/home/user/game/start.sh" "" with Exec="steam-run" "/home/user/game/start.sh".

Adding missing dependencies

  nixpkgs.config.packageOverrides = pkgs: {
    steam = pkgs.steam.override {
      extraPkgs = pkgs: with pkgs; [
        libgdiplus
      ];
    };
  };

Bumblebee and Primus

  environment.systemPackages = with pkgs; [
    (steam.override {
       withPrimus = true;
       extraPkgs = pkgs: [ bumblebee glxinfo ];
    }).run
  ];

Java

  programs.java.enable = true; 
  environment.systemPackages = with pkgs; [
    (steam.override { withJava = true; })
  ];

You can test java availability by invoking chrooted bash instance: steam-run bash and then typing: java -version. Can be combined with extra packages above.

Troubleshooting

For all issues: first run steam through the terminal and read the output.

Steam fails to start. What do I do?

strace then open a bug report.

Steam is not updated

When you restart Steam after an update, it starts the old version. (#181904)

A workaround is to remove the user files in /home/<user>/.local/share/Steam and setup Steam again.

Game fails to start

Games may fail to start because they lack dependencies (this should be added to the script, for now), or because they cannot be patched. The steps to launch a game directly are:

  • Patch the script/binary if you can
  • Add a file named steam_appid.txt in the binary folder, with the appid as contents (it can be found in the stdout from steam)
  • Using the LD_LIBRARY_PATH from the nix/store steam script, with some additions, launch the game binary
 LD_LIBRARY_PATH=~/.steam/bin32:$LD_LIBRARY_PATH:/nix/store/pfsa... blabla ...curl-7.29.0/lib:. ./Osmos.bin32 (if you could not patchelf the game, call ld.so directly with the binary as parameter)

SteamVR

The setcap issue at SteamVR start can be fixed with:

sudo setcap CAP_SYS_NICE+ep ~/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher

Known issues

"Project Zomboid" may report "couldn't determine 32/64 bit of java". This is not related to java at all, it carries its own outdated java binary that refuses to start if path contains non-Latin characters. Check for errors by directly starting local java binary within steam-run bash.

Steam hardware

If you are using a Steam Controller or a Valve Index, you will want to add hardware.steam-hardware.enable = true; to your configuration.

Note that this is already enabled with programs.steam.enable = true;.

Proton

NixOS 21.11

From this version of NixOS onwards, you should be able to play most games with Proton.

Custom Proton versions

By default, Steam looks for custom Proton versions such as GE-Proton in ~/.steam/root/compatibilitytools.d. Additionally the environment variable STEAM_EXTRA_COMPAT_TOOLS_PATHS can be set to change or add to the paths which steam searches for custom Proton versions.

Note: As of 8/2022, the protonup auto-updater in nixpkgs is currently broken due to a naming convention change; see discussion here which suggests using a fixed fork (which is not yet part of nixpkgs) until it is patched or a PR is accepted. (Or you can simply just continue to manually install new versions.)

See also

https://nixos.wiki/wiki/Explaining_the_current_Steam_Package_build