Steam: Difference between revisions
imported>Dmarcoux m Fix code in "Adding missing dependencies" |
imported>SuperSamus Initial cleanup (steam-native doesn't exist anymore, some redundant information removed) |
||
Line 3: | Line 3: | ||
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. | 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 == | |||
== | |||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
Line 23: | Line 19: | ||
]; | ]; | ||
} | } | ||
</syntaxHighlight> | </syntaxHighlight> | ||
Line 45: | Line 29: | ||
After that, steam-tui should start fine. | After that, steam-tui should start fine. | ||
=== FHS environment only | === 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 | 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 <syntaxhighlight lang="nix" inline>steam-run</syntaxhighlight>. | |||
Example snippet of <code>configuration.nix</code>: | Example snippet of <code>configuration.nix</code>: | ||
<syntaxHighlight lang=nix> | <syntaxHighlight lang=nix> | ||
environment.systemPackages = with pkgs; [ | environment.systemPackages = with pkgs; [ | ||
steam-run | steam-run | ||
]; | ]; | ||
</syntaxHighlight> | </syntaxHighlight> | ||
Another option, in case you need more flexibility, is to directly reference the part of steam metapackage. | |||
Another option, in case you need more flexibility, is to directly reference the part of steam metapackage | |||
Example snippet of <code>configuration.nix</code>: | Example snippet of <code>configuration.nix</code>: | ||
<syntaxHighlight lang=nix> | <syntaxHighlight lang=nix> | ||
environment.systemPackages = with pkgs; [ | environment.systemPackages = with pkgs; [ | ||
(steam.override { | (steam.override { /* Your overrides here */ }).run | ||
]; | ]; | ||
</syntaxHighlight> | </syntaxHighlight> | ||
Install the game by setting the executable attribute on the installer and then running it via <code>steam-run ./ | Install the game by setting the executable attribute on the installer and then running it via <code>steam-run ./your_installer.sh</code>. After installation, edit the "~/.local/share/applications/your_game.desktop" and replace the exec line from <code>Exec="/home/user/game/start.sh" ""</code> with <code>Exec="steam-run" "/home/user/game/start.sh"</code>. | ||
== Adding missing dependencies == | == Adding missing dependencies == | ||
<syntaxHighlight lang=nix> | <syntaxHighlight lang=nix> | ||
nixpkgs.config.packageOverrides = pkgs: { | nixpkgs.config.packageOverrides = pkgs: { | ||
Line 89: | Line 72: | ||
withPrimus = true; | withPrimus = true; | ||
extraPkgs = pkgs: [ bumblebee glxinfo ]; | extraPkgs = pkgs: [ bumblebee glxinfo ]; | ||
}).run | }).run | ||
]; | ]; | ||
Line 103: | Line 85: | ||
You can test java availability by invoking chrooted bash instance: <code>steam-run bash</code> and then typing: <code>java -version</code>. Can be combined with extra packages above. | You can test java availability by invoking chrooted bash instance: <code>steam-run bash</code> and then typing: <code>java -version</code>. Can be combined with extra packages above. | ||
== Troubleshooting == | == Troubleshooting == | ||
Line 124: | Line 99: | ||
* Using the LD_LIBRARY_PATH from the nix/store steam script, with some additions, launch the game binary | * Using the LD_LIBRARY_PATH from the nix/store steam script, with some additions, launch the game binary | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
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 | 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) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Known issues === | === 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- | "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>. | ||
== | == Steam hardware == | ||
If you are using a Steam Controller or a Valve Index, you will want to add <code>hardware.steam-hardware.enable = true;</code> to your configuration. | |||
Note that this is already enabled with <code>programs.steam.enable = true;</code>. | |||
[[Category:Applications]] | [[Category:Applications]] |
Revision as of 22:55, 17 April 2022
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
programs.steam.enable = true;
{
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 f2a 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.
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)
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 (current release)
In this version of NixOS, you should be able to play most games with Proton.