forked from mirrors/nixpkgs
steam-run: refactor, remove unneeded files and dependencies
This commit is contained in:
parent
1ab408e1da
commit
ff0995707d
|
@ -8,90 +8,93 @@
|
|||
}:
|
||||
|
||||
let
|
||||
self = {
|
||||
name = "steam";
|
||||
commonTargetPkgs = pkgs: with pkgs; [
|
||||
steamPackages.steam-fonts
|
||||
# Errors in output without those
|
||||
pciutils
|
||||
python2
|
||||
# Games' dependencies
|
||||
xlibs.xrandr
|
||||
which
|
||||
# Needed by gdialog, including in the steam-runtime
|
||||
perl
|
||||
# Open URLs
|
||||
xdg_utils
|
||||
];
|
||||
|
||||
targetPkgs = pkgs: with pkgs; [
|
||||
steamPackages.steam
|
||||
steamPackages.steam-fonts
|
||||
# License agreement
|
||||
gnome3.zenity
|
||||
# Errors in output without those
|
||||
pciutils
|
||||
python2
|
||||
# Games' dependencies
|
||||
xlibs.xrandr
|
||||
which
|
||||
# Needed by gdialog, including in the steam-runtime
|
||||
perl
|
||||
# Open URLs
|
||||
xdg_utils
|
||||
] ++ lib.optional withJava jdk
|
||||
++ lib.optional withPrimus (primus.override {
|
||||
stdenv = overrideInStdenv stdenv [ useOldCXXAbi ];
|
||||
stdenv_i686 = overrideInStdenv pkgsi686Linux.stdenv [ useOldCXXAbi ];
|
||||
});
|
||||
in buildFHSUserEnv rec {
|
||||
name = "steam";
|
||||
|
||||
multiPkgs = pkgs: with pkgs; [
|
||||
# These are required by steam with proper errors
|
||||
xlibs.libXcomposite
|
||||
xlibs.libXtst
|
||||
xlibs.libXrandr
|
||||
xlibs.libXext
|
||||
xlibs.libX11
|
||||
xlibs.libXfixes
|
||||
targetPkgs = pkgs: with pkgs; [
|
||||
steamPackages.steam
|
||||
# License agreement
|
||||
gnome3.zenity
|
||||
] ++ commonTargetPkgs pkgs
|
||||
++ lib.optional withJava jdk
|
||||
++ lib.optional withPrimus (primus.override {
|
||||
stdenv = overrideInStdenv stdenv [ useOldCXXAbi ];
|
||||
stdenv_i686 = overrideInStdenv pkgsi686Linux.stdenv [ useOldCXXAbi ];
|
||||
});
|
||||
|
||||
# Not formally in runtime but needed by some games
|
||||
gst_all_1.gstreamer
|
||||
gst_all_1.gst-plugins-ugly
|
||||
libdrm
|
||||
multiPkgs = pkgs: with pkgs; [
|
||||
# These are required by steam with proper errors
|
||||
xlibs.libXcomposite
|
||||
xlibs.libXtst
|
||||
xlibs.libXrandr
|
||||
xlibs.libXext
|
||||
xlibs.libX11
|
||||
xlibs.libXfixes
|
||||
|
||||
(steamPackages.steam-runtime-wrapped.override {
|
||||
inherit nativeOnly runtimeOnly newStdcpp;
|
||||
})
|
||||
];
|
||||
# Not formally in runtime but needed by some games
|
||||
gst_all_1.gstreamer
|
||||
gst_all_1.gst-plugins-ugly
|
||||
libdrm
|
||||
|
||||
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}
|
||||
''}
|
||||
'';
|
||||
(steamPackages.steam-runtime-wrapped.override {
|
||||
inherit nativeOnly runtimeOnly newStdcpp;
|
||||
})
|
||||
];
|
||||
|
||||
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
|
||||
'';
|
||||
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}
|
||||
''}
|
||||
'';
|
||||
|
||||
profile = ''
|
||||
export STEAM_RUNTIME=/steamrt
|
||||
'';
|
||||
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
|
||||
'';
|
||||
|
||||
runScript = "steam";
|
||||
profile = ''
|
||||
export STEAM_RUNTIME=/steamrt
|
||||
'';
|
||||
|
||||
passthru.run = buildFHSUserEnv (self // {
|
||||
name = "steam-run";
|
||||
runScript = "steam";
|
||||
|
||||
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.run = buildFHSUserEnv {
|
||||
name = "steam-run";
|
||||
|
||||
passthru = {};
|
||||
});
|
||||
targetPkgs = commonTargetPkgs;
|
||||
inherit multiPkgs extraBuildCommands;
|
||||
|
||||
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" "$@"
|
||||
'';
|
||||
};
|
||||
|
||||
in buildFHSUserEnv self
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue