Steam: Difference between revisions

Layer-09 (talk | contribs)
mNo edit summary
Pigs (talk | contribs)
m formatting and hyperlinking
 
(8 intermediate revisions by 6 users not shown)
Line 2: Line 2:
<translate>
<translate>
<!--T:1-->
<!--T:1-->
[https://store.steampowered.com/ Steam] is a digital distribution platform for video games, offering a vast library for purchase, download, and management. On NixOS, Steam is generally easy to install and use, often working "out-of-the-box". It supports running many Windows games on Linux through its compatibility layer, Proton.<ref>https://store.steampowered.com/</ref>
[https://store.steampowered.com/ Steam] is a digital distribution platform for video games, offering a vast library for purchase, download, and management. On NixOS, Steam is generally easy to install and use, often working "out-of-the-box". It supports running many Windows games on Linux through its compatibility layer, [[#Proton|Proton]].<ref>https://store.steampowered.com/</ref>
</translate>
</translate>


<translate>
<translate>
<!--T:2-->
== Installation == <!--T:2-->
== Installation ==
</translate>
</translate>


<translate>
<translate>
<!--T:3-->
==== Shell ==== <!--T:3-->
==== Shell ====
</translate>
</translate>


Line 19: Line 17:
To temporarily use Steam-related tools like <code>steam-run</code> (for FHS environments) or <code>steamcmd</code> (for server management or tools like steam-tui setup) in a shell environment, you can run:
To temporarily use Steam-related tools like <code>steam-run</code> (for FHS environments) or <code>steamcmd</code> (for server management or tools like steam-tui setup) in a shell environment, you can run:
</translate>
</translate>
<syntaxhighlight lang="bash">
<syntaxhighlight lang="console">
nix-shell -p steam-run # For FHS environment
$ nix-shell -p steam-run # For FHS environment
nix-shell -p steamcmd  # For steamcmd
$ nix-shell -p steamcmd  # For steamcmd
</syntaxhighlight>
</syntaxhighlight>
<translate>
<translate>
<!--T:5-->
<!--T:5-->
This provides the tools in your current shell without adding them to your system configuration. For <code>steamcmd</code> to work correctly for some tasks (like initializing for steam-tui), you might need to run it once to generate necessary files, as shown in the `steam-tui` section.
This provides the tools in your current shell without adding them to your system configuration. For <code>steamcmd</code> to work correctly for some tasks (like initializing for steam-tui), you might need to run it once to generate necessary files, as shown in the [[#steam-tui| steam-tui section]].
</translate>
</translate>


<translate>
<translate>
<!--T:6-->
==== System setup ==== <!--T:6-->
==== System setup ====
</translate>
</translate>


<translate>
<translate>
<!--T:7-->
<!--T:7-->
To install the [[Steam]] package and enable all the system options necessary to allow it to run, add the following to your <code>/etc/nixos/configuration.nix</code>:
To install the [[Steam]] package and enable all the system options necessary to allow it to run, add the following to your system configuration:
 
</translate>
</translate>
<syntaxhighlight lang="nix">
{{file|/etc/nixos/configuration.nix|nix|
# Example for /etc/nixos/configuration.nix
<nowiki>
programs.steam = {
programs.steam = {
   enable = true;
   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
};
};


Line 48: Line 44:
# you might consider using the LTS kernel or a known stable version.
# you might consider using the LTS kernel or a known stable version.
# boot.kernelPackages = pkgs.linuxPackages_lts; # Example for LTS
# boot.kernelPackages = pkgs.linuxPackages_lts; # Example for LTS
</syntaxhighlight>
</nowiki>
}}
 
<translate>
<translate>
<!--T:8-->
<!--T:8-->
Line 54: Line 52:
</translate>
</translate>


{{note|Enabling [[steam]] installs several unfree packages. If you are using <code>allowUnfreePredicate</code> you will need to ensure that your configurations permit all of them.
{{note|Enabling [[steam]] installs several [[unfree software|unfree packages]]. If you are using <code>allowUnfreePredicate</code> you will need to ensure that your configurations permit all of them.
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
{
   nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
   nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
     "steam"
     "steam"
     "steam-unwrapped"
     "steam-unwrapped"
   ];
   ];
}
</syntaxhighlight>
</syntaxhighlight>
}}
}}


<translate>
<translate>
<!--T:9-->
== Configuration == <!--T:9-->
== Configuration ==
</translate>
</translate>


<translate>
<translate>
<!--T:10-->
<!--T:10-->
Basic Steam features can be enabled directly within the <code>programs.steam</code> attribute set:
Basic Steam features can be enabled directly within the {{nixos:option|programs.steam}} attribute set:
</translate>
</translate>
<syntaxhighlight lang="nix">
{{file|/etc/nixos/configuration.nix|nix|
<nowiki>
programs.steam = {
programs.steam = {
   enable = true; # Master switch, already covered in installation
   enable = true; # Master switch, already covered in installation
   remotePlay.openFirewall = true;  # For Steam Remote Play
   remotePlay.openFirewall = true;  # Open ports in the firewall for Steam Remote Play
   dedicatedServer.openFirewall = true; # For Source Dedicated Server hosting
   dedicatedServer.openFirewall = true; # Open ports for Source Dedicated Server hosting
   # Other general flags if available can be set here.
   # Other general flags if available can be set here.
  # Tip: For improved gaming performance, you can also enable GameMode:
  # programs.gamemode.enable = true;
};
};
</syntaxhighlight>
# Tip: For improved gaming performance, you can also enable GameMode:
# programs.gamemode.enable = true;
</nowiki>
}}
<translate>
<translate>
<!--T:11-->
<!--T:11-->
If you are using a Steam Controller or a Valve Index, ensure Steam hardware support is enabled. This is typically handled by <code>programs.steam.enable = true;</code> which sets <code>hardware.steam-hardware.enable = true;</code> implicitly. You can verify or explicitly set it if needed:
{{note|If you are using a Steam Controller or a Valve Index, Steam hardware support is implicitly enabled by <code>programs.steam.enable {{=}} true;</code> which sets {{nixos:option|hardware.steam-hardware.enable}} to true.}}
</translate>
</translate>
<syntaxhighlight lang="nix">
hardware.steam-hardware.enable = true;
</syntaxhighlight>
<translate>
<translate>
<!--T:12-->
== Tips and tricks == <!--T:12-->
== Tips and tricks ==
</translate>
</translate>


<translate>
<translate>
<!--T:13-->
=== Gamescope Compositor / "Boot to Steam Deck" === <!--T:13-->
=== Gamescope Compositor / "Boot to Steam Deck" ===
</translate>
</translate>
<translate>
<translate>
Line 107: Line 99:
# Clean Quiet Boot
# Clean Quiet Boot
boot.kernelParams = [ "quiet" "splash" "console=/dev/null" ];
boot.kernelParams = [ "quiet" "splash" "console=/dev/null" ];
plymouth.enable = true;
boot.plymouth.enable = true;


programs.gamescope = {
programs.gamescope = {
Line 123: Line 115:
   settings = {
   settings = {
     default_session = {
     default_session = {
       command = "${pkgs.gamescope}/bin/gamescope -W 1920 -H 1080 -f -e --xwayland-count 2 --hdr-enabled --hdr-itm-enabled -- steam -pipewire-dmabuf -gamepadui -steamos > /dev/null 2>&1";
       command = "${pkgs.gamescope}/bin/gamescope -W 1920 -H 1080 -f -e --xwayland-count 2 --hdr-enabled --hdr-itm-enabled -- steam -pipewire-dmabuf -gamepadui -steamdeck -steamos3 > /dev/null 2>&1";
       user = "USERNAME_HERE";
       user = "USERNAME_HERE";
     };
     };
Line 131: Line 123:


<translate>
<translate>
<!--T:15-->
=== Gamescope HDR ===
=== steam-tui ===
In order for HDR to work within gamescope, you need to separately install the <code>gamescope-wsi</code> package alongside enabling the <code>gamescope</code> program.<syntaxhighlight lang="nix">
programs.gamescope = {
  enable = true;
  capSysNice = false;
};
environment.systemPackages = with pkgs; [
  gamescope-wsi # HDR won't work without this
];
</syntaxhighlight>Additionally, it may be necessary to force HDR in gamescope with the argument <code>--hdr-debug-force-output</code> when configuring your game's launch options in steam (see the example below).<syntaxhighlight lang="bash">
gamescope -W 3840 -H 2160 -r 120 -f --adaptive-sync --hdr-enabled --hdr-debug-force-output --mangoapp -- %command%
</syntaxhighlight>
 
=== steam-tui === <!--T:15-->
</translate>
</translate>
<translate>
<translate>
Line 157: Line 161:


<translate>
<translate>
<!--T:19-->
=== FHS environment only === <!--T:19-->
=== FHS environment only ===
</translate>
</translate>
<translate>
<translate>
Line 184: Line 187:
</syntaxhighlight>
</syntaxhighlight>
<translate>
<translate>
<!--T:22-->
=== Proton === <!--T:22-->
=== Proton ===
</translate>
</translate>
<translate>
<translate>
Line 214: Line 216:
</syntaxhighlight>
</syntaxhighlight>
<translate>
<translate>
<!--T:27-->
=== Overriding the Steam package === <!--T:27-->
=== Overriding the Steam package ===
</translate>
</translate>
<translate>
<translate>
Line 257: Line 258:


<translate>
<translate>
<!--T:31-->
=== Fix missing icons for games in GNOME dock and activities overview === <!--T:56-->
== Troubleshooting ==
</translate>
<translate>
<!--T:57-->
GNOME uses the window class to determine the icon associated with a window. Steam currently doesn't set the required key for this in its .desktop files<ref>https://github.com/ValveSoftware/steam-for-linux/issues/12207</ref>, but you can fix this manually by editing the <code>StartupWMClass</code> key for each game's .desktop file, found under <code>~/.local/share/applications/</code>.
 
<!--T:58-->
For games running through Proton, the value should be <code>steam_app_<game_id></code> (where <code><game_id></code> matches the value after steam://rungameid/ on the <code>Exec</code> line).
 
<!--T:59-->
For games running natively, the value should match the game's main executable.
 
<!--T:60-->
For example, the modified .desktop file for Valheim looks like this:
</translate>
 
<syntaxhighlight lang="desktop">
[Desktop Entry]
Name=Valheim
Comment=Play this game on Steam
Exec=steam steam://rungameid/892970
Icon=steam_icon_892970
Terminal=false
Type=Application
Categories=Game;
StartupWMClass=valheim.x86_64
</syntaxhighlight>
<translate>
== Troubleshooting == <!--T:31-->
</translate>
</translate>


Line 267: Line 295:


<translate>
<translate>
<!--T:33-->
=== Steam fails to start. What do I do? === <!--T:33-->
=== Steam fails to start. What do I do? ===
</translate>
</translate>
<translate>
<translate>
Line 276: Line 303:


<translate>
<translate>
<!--T:35-->
=== Steam is not updated === <!--T:35-->
=== Steam is not updated ===
</translate>
</translate>
<translate>
<translate>
Line 286: Line 312:


<translate>
<translate>
<!--T:37-->
=== Game fails to start === <!--T:37-->
=== Game fails to start ===
</translate>
</translate>
<translate>
<translate>
Line 305: Line 330:


<translate>
<translate>
<!--T:40-->
==== Changing the driver on AMD GPUs <!-- this is not recommended due radv drivers performing better and generally more stable than amdvlk. My suggestion remove this section. source: https://forums.guru3d.com/threads/the-mesa-radv-amdvlk-thread.449774/ -->==== <!--T:40-->
==== Changing the driver on AMD GPUs <!-- this is not recommended due radv drivers performing better and generally more stable than amdvlk. My suggestion remove this section. source: https://forums.guru3d.com/threads/the-mesa-radv-amdvlk-thread.449774/ -->====
</translate>
</translate>
{{note|This is not recommended because radv drivers tend to perform better and are generally more stable than amdvlk.}}
{{note|This is not recommended because radv drivers tend to perform better and are generally more stable than amdvlk.}}
Line 332: Line 356:
</translate>
</translate>
<translate>
<translate>
<!--T:44-->
=== SteamVR === <!--T:44-->
=== SteamVR ===
</translate>
</translate>
<translate>
<translate>
Line 341: Line 364:
</translate>
</translate>
<translate>
<translate>
<!--T:46-->
=== Gamescope fails to launch when used within Steam === <!--T:46-->
=== Gamescope fails to launch when used within Steam ===
</translate>
</translate>
<translate>
<translate>
Line 366: Line 388:
</syntaxhighlight>
</syntaxhighlight>
<translate>
<translate>
<!--T:48-->
=== Udev rules for additional Gamepads === <!--T:48-->
=== Udev rules for additional Gamepads ===
</translate>
</translate>
<translate>
<translate>
Line 387: Line 408:
</translate>
</translate>
<translate>
<translate>
<!--T:52-->
=== Known issues === <!--T:52-->
=== Known issues ===
</translate>
</translate>
<translate>
<translate>
Line 394: Line 414:
"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 <code>steam-run bash</code>.
"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 <code>steam-run bash</code>.


<!--T:55-->
Resetting your password through the [[Steam]] app may fail at the CAPTCHA step repeatedly, with [[Steam]] itself reporting that the CAPTCHA was not correct, even though the CAPTCHA UI shows success. Resetting password through the [[Steam]] website should work around that.
Resetting your password through the [[Steam]] app may fail at the CAPTCHA step repeatedly, with [[Steam]] itself reporting that the CAPTCHA was not correct, even though the CAPTCHA UI shows success. Resetting password through the [[Steam]] website should work around that.
</translate>
</translate>
<translate>
<translate>
<!--T:54-->
== References == <!--T:54-->
== References ==
</translate>
</translate>


[[Category:Applications]]
[[Category:Applications]]
[[Category:Gaming]]
[[Category:Gaming]]