Steam: Difference between revisions
Marked this version for translation |
m formatting and hyperlinking |
||
| (7 intermediate revisions by 5 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> | ||
| Line 17: | 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=" | <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 | 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> | ||
| Line 32: | Line 32: | ||
<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 | 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> | ||
{{file|/etc/nixos/configuration.nix|nix| | |||
<nowiki> | |||
programs.steam = { | programs.steam = { | ||
enable = true; | enable = true; | ||
}; | }; | ||
| Line 45: | 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 | ||
</ | </nowiki> | ||
}} | |||
<translate> | <translate> | ||
<!--T:8--> | <!--T:8--> | ||
| Line 51: | 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> | ||
}} | }} | ||
| Line 68: | Line 67: | ||
<translate> | <translate> | ||
<!--T:10--> | <!--T:10--> | ||
Basic Steam features can be enabled directly within the | Basic Steam features can be enabled directly within the {{nixos:option|programs.steam}} attribute set: | ||
</translate> | </translate> | ||
< | {{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; # | remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play | ||
dedicatedServer.openFirewall = true; # | 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; | |||
</nowiki> | |||
}} | |||
<translate> | <translate> | ||
<!--T:11--> | <!--T:11--> | ||
If you are using a Steam Controller or a Valve Index, | {{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> | ||
<translate> | <translate> | ||
== Tips and tricks == <!--T:12--> | == Tips and tricks == <!--T:12--> | ||
| Line 101: | 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 117: | 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 - | 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 125: | Line 123: | ||
<translate> | <translate> | ||
=== Gamescope HDR === | |||
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--> | === steam-tui === <!--T:15--> | ||
</translate> | </translate> | ||
| Line 246: | Line 257: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<translate> | |||
=== Fix missing icons for games in GNOME dock and activities overview === <!--T:56--> | |||
</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> | <translate> | ||
== Troubleshooting == <!--T:31--> | == Troubleshooting == <!--T:31--> | ||