summary refs log tree commit diff
path: root/pkgs/games/steam/chrootenv.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games/steam/chrootenv.nix')
-rw-r--r--pkgs/games/steam/chrootenv.nix114
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" "$@"
     '';
   };
 }