diff options
author | Nikolay Amiantov <ab@fmap.me> | 2016-04-03 04:19:00 +0300 |
---|---|---|
committer | Nikolay Amiantov <ab@fmap.me> | 2016-04-03 16:10:14 +0300 |
commit | 192e0c714164a2e537ba3566306c24d9ff888ace (patch) | |
tree | 13cfe72e17e5b1fa07b5a584bf8a706ae4ae89c2 /pkgs/games/steam | |
parent | 375c410d071bd5773519ef8d6283191b07bb98b1 (diff) | |
download | nixpkgs-192e0c714164a2e537ba3566306c24d9ff888ace.tar nixpkgs-192e0c714164a2e537ba3566306c24d9ff888ace.tar.gz nixpkgs-192e0c714164a2e537ba3566306c24d9ff888ace.tar.bz2 nixpkgs-192e0c714164a2e537ba3566306c24d9ff888ace.tar.lz nixpkgs-192e0c714164a2e537ba3566306c24d9ff888ace.tar.xz nixpkgs-192e0c714164a2e537ba3566306c24d9ff888ace.tar.zst nixpkgs-192e0c714164a2e537ba3566306c24d9ff888ace.zip |
steam-run: add derivation
Diffstat (limited to 'pkgs/games/steam')
-rw-r--r-- | pkgs/games/steam/chrootenv.nix | 80 | ||||
-rw-r--r-- | pkgs/games/steam/default.nix | 7 |
2 files changed, 58 insertions, 29 deletions
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 |