nixpkgs/pkgs/games/steam/chrootenv.nix

98 lines
2.6 KiB
Nix
Raw Normal View History

2016-04-03 01:19:00 +00:00
{ stdenv, lib, writeScript, buildFHSUserEnv, steam
, steam-runtime, steam-runtime-i686 ? null
, withJava ? false
, withPrimus ? false
, nativeOnly ? false
, runtimeOnly ? false
, newStdcpp ? false
}:
2016-04-03 01:19:00 +00:00
let
self = {
name = "steam";
2014-04-22 23:03:14 +00:00
2016-04-03 01:19:00 +00:00
targetPkgs = pkgs: with pkgs; [
steamPackages.steam
2015-10-15 12:17:28 +00:00
steamPackages.steam-fonts
2015-11-12 13:32:09 +00:00
# License agreement
gnome3.zenity
# Errors in output without those
pciutils
python2
# Games' dependencies
xlibs.xrandr
which
2015-10-15 11:52:43 +00:00
# Needed by gdialog, including in the steam-runtime
perl
2016-04-08 00:11:40 +00:00
# Open URLs
xdg_utils
2016-04-03 01:19:00 +00:00
] ++ lib.optional withJava jdk
++ lib.optional withPrimus (primus.override {
stdenv = overrideInStdenv stdenv [ useOldCXXAbi ];
stdenv_i686 = overrideInStdenv pkgsi686Linux.stdenv [ useOldCXXAbi ];
});
2014-04-22 23:03:14 +00:00
2016-04-03 01:19:00 +00:00
multiPkgs = pkgs: with pkgs; [
# These are required by steam with proper errors
xlibs.libXcomposite
xlibs.libXtst
xlibs.libXrandr
xlibs.libXext
xlibs.libX11
xlibs.libXfixes
# Not formally in runtime but needed by some games
gst_all_1.gstreamer
gst_all_1.gst-plugins-ugly
2015-09-08 17:40:58 +00:00
libdrm
2014-04-22 23:03:14 +00:00
(steamPackages.steam-runtime-wrapped.override {
inherit nativeOnly runtimeOnly newStdcpp;
})
2014-07-10 08:25:19 +00:00
];
2014-04-22 23:03:14 +00:00
2016-04-03 01:19:00 +00:00
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}
''}
'';
2016-04-03 01:19:00 +00:00
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
'';
2014-04-22 23:03:14 +00:00
2016-04-03 01:19:00 +00:00
profile = ''
export STEAM_RUNTIME=/steamrt
'';
2016-04-03 01:19:00 +00:00
runScript = "steam";
2015-02-05 15:16:02 +00:00
2016-04-03 01:19:00 +00:00
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