diff --git a/pkgs/games/steam/chrootenv.nix b/pkgs/games/steam/chrootenv.nix index 7a4fd611b1b4..ba163ebc3d29 100644 --- a/pkgs/games/steam/chrootenv.nix +++ b/pkgs/games/steam/chrootenv.nix @@ -8,90 +8,93 @@ }: let - self = { - name = "steam"; + commonTargetPkgs = pkgs: with pkgs; [ + steamPackages.steam-fonts + # Errors in output without those + pciutils + python2 + # Games' dependencies + xlibs.xrandr + which + # Needed by gdialog, including in the steam-runtime + perl + # Open URLs + xdg_utils + ]; - targetPkgs = pkgs: with pkgs; [ - steamPackages.steam - steamPackages.steam-fonts - # License agreement - gnome3.zenity - # Errors in output without those - pciutils - python2 - # Games' dependencies - xlibs.xrandr - which - # Needed by gdialog, including in the steam-runtime - perl - # Open URLs - xdg_utils - ] ++ lib.optional withJava jdk - ++ lib.optional withPrimus (primus.override { - stdenv = overrideInStdenv stdenv [ useOldCXXAbi ]; - stdenv_i686 = overrideInStdenv pkgsi686Linux.stdenv [ useOldCXXAbi ]; - }); +in buildFHSUserEnv rec { + name = "steam"; - multiPkgs = pkgs: with pkgs; [ - # These are required by steam with proper errors - xlibs.libXcomposite - xlibs.libXtst - xlibs.libXrandr - xlibs.libXext - xlibs.libX11 - xlibs.libXfixes + targetPkgs = pkgs: with pkgs; [ + steamPackages.steam + # License agreement + gnome3.zenity + ] ++ commonTargetPkgs pkgs + ++ lib.optional withJava jdk + ++ lib.optional withPrimus (primus.override { + stdenv = overrideInStdenv stdenv [ useOldCXXAbi ]; + stdenv_i686 = overrideInStdenv pkgsi686Linux.stdenv [ useOldCXXAbi ]; + }); - # Not formally in runtime but needed by some games - gst_all_1.gstreamer - gst_all_1.gst-plugins-ugly - libdrm + multiPkgs = pkgs: with pkgs; [ + # These are required by steam with proper errors + xlibs.libXcomposite + xlibs.libXtst + xlibs.libXrandr + xlibs.libXext + xlibs.libX11 + xlibs.libXfixes - (steamPackages.steam-runtime-wrapped.override { - inherit nativeOnly runtimeOnly newStdcpp; - }) - ]; + # Not formally in runtime but needed by some games + gst_all_1.gstreamer + gst_all_1.gst-plugins-ugly + libdrm - extraBuildCommands = '' - mkdir -p steamrt - ln -s ../lib/steam-runtime steamrt/${steam-runtime.arch} - ${lib.optionalString (steam-runtime-i686 != null) '' - ln -s ../lib32/steam-runtime steamrt/${steam-runtime-i686.arch} - ''} - ''; + (steamPackages.steam-runtime-wrapped.override { + inherit nativeOnly runtimeOnly newStdcpp; + }) + ]; - extraInstallCommands = '' - mkdir -p $out/share/applications - ln -s ${steam}/share/icons $out/share - ln -s ${steam}/share/pixmaps $out/share - sed "s,/usr/bin/steam,$out/bin/steam,g" ${steam}/share/applications/steam.desktop > $out/share/applications/steam.desktop - ''; + extraBuildCommands = '' + mkdir -p steamrt + ln -s ../lib/steam-runtime steamrt/${steam-runtime.arch} + ${lib.optionalString (steam-runtime-i686 != null) '' + ln -s ../lib32/steam-runtime steamrt/${steam-runtime-i686.arch} + ''} + ''; - profile = '' - export STEAM_RUNTIME=/steamrt - ''; + extraInstallCommands = '' + mkdir -p $out/share/applications + ln -s ${steam}/share/icons $out/share + ln -s ${steam}/share/pixmaps $out/share + sed "s,/usr/bin/steam,$out/bin/steam,g" ${steam}/share/applications/steam.desktop > $out/share/applications/steam.desktop + ''; - runScript = "steam"; + profile = '' + export STEAM_RUNTIME=/steamrt + ''; - passthru.run = buildFHSUserEnv (self // { - name = "steam-run"; + runScript = "steam"; - runScript = - let ldPath = map (x: "/steamrt/${steam-runtime.arch}/" + x) steam-runtime.libs - ++ lib.optionals (steam-runtime-i686 != null) (map (x: "/steamrt/${steam-runtime-i686.arch}/" + x) steam-runtime-i686.libs); - in writeScript "steam-run" '' - #!${stdenv.shell} - run="$1" - if [ "$run" = "" ]; then - echo "Usage: steam-run command-to-run args..." >&2 - exit 1 - fi - shift - export LD_LIBRARY_PATH=${lib.concatStringsSep ":" ldPath}:$LD_LIBRARY_PATH - exec "$run" "$@" - ''; + passthru.run = buildFHSUserEnv { + name = "steam-run"; - passthru = {}; - }); + targetPkgs = commonTargetPkgs; + inherit multiPkgs extraBuildCommands; + + runScript = + let ldPath = map (x: "/steamrt/${steam-runtime.arch}/" + x) steam-runtime.libs + ++ lib.optionals (steam-runtime-i686 != null) (map (x: "/steamrt/${steam-runtime-i686.arch}/" + x) steam-runtime-i686.libs); + in writeScript "steam-run" '' + #!${stdenv.shell} + run="$1" + if [ "$run" = "" ]; then + echo "Usage: steam-run command-to-run args..." >&2 + exit 1 + fi + shift + export LD_LIBRARY_PATH=${lib.concatStringsSep ":" ldPath}:$LD_LIBRARY_PATH + exec "$run" "$@" + ''; }; - -in buildFHSUserEnv self +}