summary refs log tree commit diff
path: root/pkgs/games
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games')
-rw-r--r--pkgs/games/anki/default.nix4
-rw-r--r--pkgs/games/steam/chrootenv.nix80
-rw-r--r--pkgs/games/steam/default.nix7
3 files changed, 60 insertions, 31 deletions
diff --git a/pkgs/games/anki/default.nix b/pkgs/games/anki/default.nix
index f4fff289fec..a298b379c0f 100644
--- a/pkgs/games/anki/default.nix
+++ b/pkgs/games/anki/default.nix
@@ -7,7 +7,7 @@
 }:
 
 let
-    version = "2.0.33";
+    version = "2.0.35";
 in
 stdenv.mkDerivation rec {
     name = "anki-${version}";
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
         "http://ankisrs.net/download/mirror/${name}.tgz"
         "http://ankisrs.net/download/mirror/archive/${name}.tgz"
       ];
-      sha256 = "1d5rf5gcw98m38wam6wh3hyh7qd78ws7zipm67xg744flqsjrzmr";
+      sha256 = "1d7k38xzw1nbg83d1aqxf2f76fv3hn2fry99k3vf4lgmhndj52mv";
     };
 
     pythonPath = [ pyqt4 pysqlite sqlalchemy pyaudio beautifulsoup httplib2 ]
diff --git a/pkgs/games/steam/chrootenv.nix b/pkgs/games/steam/chrootenv.nix
index 8bb73fc5cef..4bb81d30027 100644
--- a/pkgs/games/steam/chrootenv.nix
+++ b/pkgs/games/steam/chrootenv.nix
@@ -1,4 +1,5 @@
-{ lib, buildFHSUserEnv, steam
+{ stdenv, lib, writeScript, buildFHSUserEnv, steam
+, steam-runtime, steam-runtime-i686 ? null
 , withJava ? false
 , withPrimus ? false
 , nativeOnly ? false
@@ -6,10 +7,11 @@
 , newStdcpp ? false
 }:
 
-buildFHSUserEnv {
-  name = "steam";
+let
+  self = {
+    name = "steam";
 
-  targetPkgs = pkgs: with pkgs; [
+    targetPkgs = pkgs: with pkgs; [
       steamPackages.steam
       steamPackages.steam-fonts
       # License agreement
@@ -22,15 +24,13 @@ buildFHSUserEnv {
       which
       # Needed by gdialog, including in the steam-runtime
       perl
-    ]
-    ++ lib.optional withJava jdk
-    ++ lib.optional withPrimus (primus.override {
-      stdenv = overrideInStdenv stdenv [ useOldCXXAbi ];
-      stdenv_i686 = overrideInStdenv pkgsi686Linux.stdenv [ useOldCXXAbi ];
-    })
-    ;
+    ] ++ lib.optional withJava jdk
+      ++ lib.optional withPrimus (primus.override {
+           stdenv = overrideInStdenv stdenv [ useOldCXXAbi ];
+           stdenv_i686 = overrideInStdenv pkgsi686Linux.stdenv [ useOldCXXAbi ];
+         });
 
-  multiPkgs = pkgs: with pkgs; [
+    multiPkgs = pkgs: with pkgs; [
       # These are required by steam with proper errors
       xlibs.libXcomposite
       xlibs.libXtst
@@ -49,23 +49,47 @@ buildFHSUserEnv {
       })
     ];
 
-  extraBuildCommands = ''
-    mkdir -p steamrt
+    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}
+      ''}
+    '';
 
-    ln -s ../lib64/steam-runtime steamrt/amd64
-    ln -s ../lib32/steam-runtime steamrt/i386
-  '';
+    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
+    '';
 
-  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
-  '';
+    profile = ''
+      export STEAM_RUNTIME=/steamrt
+    '';
 
-  profile = ''
-    export STEAM_RUNTIME=/steamrt
-  '';
+    runScript = "steam";
 
-  runScript = "steam";
-}
+    passthru.run = buildFHSUserEnv (self // {
+      name = "steam-run";
+
+      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 = {};
+    });
+  };
+
+in buildFHSUserEnv self
diff --git a/pkgs/games/steam/default.nix b/pkgs/games/steam/default.nix
index 64f8cfe2c28..ae3fe561272 100644
--- a/pkgs/games/steam/default.nix
+++ b/pkgs/games/steam/default.nix
@@ -7,8 +7,13 @@ let
     steam-runtime = callPackage ./runtime.nix { };
     steam-runtime-wrapped = callPackage ./runtime-wrapped.nix { };
     steam = callPackage ./steam.nix { };
-    steam-chrootenv = callPackage ./chrootenv.nix { };
     steam-fonts = callPackage ./fonts.nix { };
+    steam-chrootenv = callPackage ./chrootenv.nix {
+      steam-runtime-i686 =
+        if pkgs.system == "x86_64-linux"
+        then pkgs.pkgsi686Linux.steamPackages.steam-runtime
+        else null;
+    };
   };
 
 in self