diff options
Diffstat (limited to 'pkgs/games')
-rw-r--r-- | pkgs/games/anki/default.nix | 4 | ||||
-rw-r--r-- | pkgs/games/steam/chrootenv.nix | 80 | ||||
-rw-r--r-- | pkgs/games/steam/default.nix | 7 |
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 |