diff options
Diffstat (limited to 'pkgs/games/steam/chrootenv.nix')
-rw-r--r-- | pkgs/games/steam/chrootenv.nix | 114 |
1 files changed, 100 insertions, 14 deletions
diff --git a/pkgs/games/steam/chrootenv.nix b/pkgs/games/steam/chrootenv.nix index 88cde733176..ce6e86c50b8 100644 --- a/pkgs/games/steam/chrootenv.nix +++ b/pkgs/games/steam/chrootenv.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, writeScript, buildFHSUserEnv, steam +{ stdenv, lib, writeScript, buildFHSUserEnv, steam, glxinfo-i686 , steam-runtime-wrapped, steam-runtime-wrapped-i686 ? null , withJava ? false , withPrimus ? false @@ -58,9 +58,6 @@ in buildFHSUserEnv rec { xorg.libX11 xorg.libXfixes - # Needed to properly check for libGL.so.1 in steam-wrapper.sh - pkgsi686Linux.glxinfo - # Not formally in runtime but needed by some games gst_all_1.gstreamer gst_all_1.gst-plugins-ugly @@ -68,19 +65,104 @@ in buildFHSUserEnv rec { mono xorg.xkeyboardconfig xorg.libpciaccess - + ] ++ (if (!nativeOnly) then [ (steamPackages.steam-runtime-wrapped.override { - inherit nativeOnly runtimeOnly; + inherit runtimeOnly; }) - ]; - - extraBuildCommands = '' + ] else [ + # Required + glib + gtk2 + bzip2 + zlib + gdk_pixbuf + + # Without these it silently fails + xorg.libXinerama + xorg.libXdamage + xorg.libXcursor + xorg.libXrender + xorg.libXScrnSaver + xorg.libXxf86vm + xorg.libXi + xorg.libSM + xorg.libICE + gnome2.GConf + freetype + (curl.override { gnutlsSupport = true; sslSupport = false; }) + nspr + nss + fontconfig + cairo + pango + expat + dbus + cups + libcap + SDL2 + libusb1 + dbus-glib + libav + atk + # Only libraries are needed from those two + libudev0-shim + networkmanager098 + + # Verified games requirements + xorg.libXmu + xorg.libxcb + libGLU + libuuid + libogg + libvorbis + SDL + SDL2_image + glew110 + openssl + libidn + tbb + + # Other things from runtime + flac + freeglut + libjpeg + libpng12 + libsamplerate + libmikmod + libtheora + libtiff + pixman + speex + SDL_image + SDL_ttf + SDL_mixer + SDL2_ttf + SDL2_mixer + gstreamer + gst-plugins-base + libGLU + libappindicator-gtk2 + libcaca + libcanberra + libgcrypt + libvpx + librsvg + xorg.libXft + libvdpau + ] ++ steamPackages.steam-runtime-wrapped.overridePkgs); + + extraBuildCommands = if (!nativeOnly) then '' mkdir -p steamrt ln -s ../lib/steam-runtime steamrt/${steam-runtime-wrapped.arch} ${lib.optionalString (steam-runtime-wrapped-i686 != null) '' ln -s ../lib32/steam-runtime steamrt/${steam-runtime-wrapped-i686.arch} ''} ln -s ${runSh} steamrt/run.sh + '' else '' + ln -s /usr/lib/libbz2.so usr/lib/libbz2.so.1.0 + ${lib.optionalString (steam-runtime-wrapped-i686 != null) '' + ln -s /usr/lib32/libbz2.so usr/lib32/libbz2.so.1.0 + ''} ''; extraInstallCommands = '' @@ -91,13 +173,13 @@ in buildFHSUserEnv rec { ''; profile = '' - export STEAM_RUNTIME=/steamrt + export STEAM_RUNTIME=${if nativeOnly then "0" else "/steamrt"} ''; runScript = writeScript "steam-wrapper.sh" '' #!${stdenv.shell} if [ -f /host/etc/NIXOS ]; then # Check only useful on NixOS - glxinfo >/dev/null 2>&1 + ${glxinfo-i686}/bin/glxinfo >/dev/null 2>&1 # If there was an error running glxinfo, we know something is wrong with the configuration if [ $? -ne 0 ]; then cat <<EOF > /dev/stderr @@ -112,9 +194,13 @@ in buildFHSUserEnv rec { EOF fi fi - steam + exec steam "$@" ''; + meta = steam.meta // { + broken = nativeOnly; + }; + passthru.run = buildFHSUserEnv { name = "steam-run"; @@ -129,8 +215,8 @@ in buildFHSUserEnv rec { exit 1 fi shift - export LD_LIBRARY_PATH=${lib.concatStringsSep ":" ldPath}:$LD_LIBRARY_PATH - exec "$run" "$@" + ${lib.optionalString (!nativeOnly) "export LD_LIBRARY_PATH=${lib.concatStringsSep ":" ldPath}:$LD_LIBRARY_PATH"} + exec -- "$run" "$@" ''; }; } |