steam: include steam-runtime within chroot
This commit is contained in:
parent
3bd78123f3
commit
2f52c62684
@ -1,4 +1,4 @@
|
|||||||
{ lib, buildFHSUserEnv
|
{ lib, buildFHSUserEnv, steam-runtime
|
||||||
, withRuntime ? false
|
, withRuntime ? false
|
||||||
, withJava ? false
|
, withJava ? false
|
||||||
, withPrimus ? false
|
, withPrimus ? false
|
||||||
@ -7,116 +7,144 @@
|
|||||||
buildFHSUserEnv {
|
buildFHSUserEnv {
|
||||||
name = "steam";
|
name = "steam";
|
||||||
|
|
||||||
targetPkgs = pkgs:
|
targetPkgs = pkgs: with pkgs; [
|
||||||
[ pkgs.steam-original
|
steam-original
|
||||||
# Errors in output without those
|
# Errors in output without those
|
||||||
pkgs.pciutils
|
pciutils
|
||||||
pkgs.python2
|
python2
|
||||||
# Games' dependencies
|
# Games' dependencies
|
||||||
pkgs.xlibs.xrandr
|
xlibs.xrandr
|
||||||
pkgs.which
|
which
|
||||||
|
# needed by gdialog, including in the steam-runtime
|
||||||
|
perl
|
||||||
]
|
]
|
||||||
++ lib.optional withJava pkgs.jdk
|
++ lib.optional withJava jdk
|
||||||
++ lib.optional withPrimus pkgs.primus
|
++ lib.optional withPrimus primus
|
||||||
;
|
;
|
||||||
|
|
||||||
multiPkgs = pkgs: [
|
multiPkgs = pkgs: with pkgs; [
|
||||||
# These are required by steam with proper errors
|
# These are required by steam with proper errors
|
||||||
pkgs.xlibs.libXcomposite
|
xlibs.libXcomposite
|
||||||
pkgs.xlibs.libXtst
|
xlibs.libXtst
|
||||||
pkgs.xlibs.libXrandr
|
xlibs.libXrandr
|
||||||
pkgs.xlibs.libXext
|
xlibs.libXext
|
||||||
pkgs.xlibs.libX11
|
xlibs.libX11
|
||||||
pkgs.xlibs.libXfixes
|
xlibs.libXfixes
|
||||||
|
|
||||||
pkgs.glib
|
glib
|
||||||
pkgs.gtk2
|
gtk2
|
||||||
pkgs.bzip2
|
bzip2
|
||||||
pkgs.zlib
|
zlib
|
||||||
pkgs.libpulseaudio
|
libpulseaudio
|
||||||
pkgs.gdk_pixbuf
|
gdk_pixbuf
|
||||||
|
|
||||||
# Not formally in runtime but needed by some games
|
# Not formally in runtime but needed by some games
|
||||||
pkgs.gst_all_1.gstreamer
|
gst_all_1.gstreamer
|
||||||
pkgs.gst_all_1.gst-plugins-ugly
|
gst_all_1.gst-plugins-ugly
|
||||||
] ++ lib.optionals withRuntime [
|
] ++ lib.optionals withRuntime [
|
||||||
# Without these it silently fails
|
# Without these it silently fails
|
||||||
pkgs.xlibs.libXinerama
|
xlibs.libXinerama
|
||||||
pkgs.xlibs.libXdamage
|
xlibs.libXdamage
|
||||||
pkgs.xlibs.libXcursor
|
xlibs.libXcursor
|
||||||
pkgs.xlibs.libXrender
|
xlibs.libXrender
|
||||||
pkgs.xlibs.libXScrnSaver
|
xlibs.libXScrnSaver
|
||||||
pkgs.xlibs.libXi
|
xlibs.libXi
|
||||||
pkgs.xlibs.libSM
|
xlibs.libSM
|
||||||
pkgs.xlibs.libICE
|
xlibs.libICE
|
||||||
pkgs.gnome2.GConf
|
gnome2.GConf
|
||||||
pkgs.freetype
|
freetype
|
||||||
pkgs.openalSoft
|
openalSoft
|
||||||
pkgs.curl
|
curl
|
||||||
pkgs.nspr
|
nspr
|
||||||
pkgs.nss
|
nss
|
||||||
pkgs.fontconfig
|
fontconfig
|
||||||
pkgs.cairo
|
cairo
|
||||||
pkgs.pango
|
pango
|
||||||
pkgs.alsaLib
|
alsaLib
|
||||||
pkgs.expat
|
expat
|
||||||
pkgs.dbus
|
dbus
|
||||||
pkgs.cups
|
cups
|
||||||
pkgs.libcap
|
libcap
|
||||||
pkgs.SDL2
|
SDL2
|
||||||
pkgs.libusb1
|
libusb1
|
||||||
pkgs.dbus_glib
|
dbus_glib
|
||||||
pkgs.libav
|
libav
|
||||||
pkgs.atk
|
atk
|
||||||
# Only libraries are needed from those two
|
# Only libraries are needed from those two
|
||||||
pkgs.udev182
|
udev182
|
||||||
pkgs.networkmanager098
|
networkmanager098
|
||||||
|
|
||||||
# Verified games requirements
|
# Verified games requirements
|
||||||
pkgs.xlibs.libXmu
|
xlibs.libXmu
|
||||||
pkgs.xlibs.libxcb
|
xlibs.libxcb
|
||||||
pkgs.xlibs.libpciaccess
|
xlibs.libpciaccess
|
||||||
pkgs.mesa_glu
|
mesa_glu
|
||||||
pkgs.libuuid
|
libuuid
|
||||||
pkgs.libogg
|
libogg
|
||||||
pkgs.libvorbis
|
libvorbis
|
||||||
pkgs.SDL
|
SDL
|
||||||
pkgs.SDL2_image
|
SDL2_image
|
||||||
pkgs.glew110
|
glew110
|
||||||
pkgs.openssl
|
openssl
|
||||||
pkgs.libidn
|
libidn
|
||||||
|
|
||||||
# Other things from runtime
|
# Other things from runtime
|
||||||
pkgs.xlibs.libXinerama
|
xlibs.libXinerama
|
||||||
pkgs.flac
|
flac
|
||||||
pkgs.freeglut
|
freeglut
|
||||||
pkgs.libjpeg
|
libjpeg
|
||||||
pkgs.libpng12
|
libpng12
|
||||||
pkgs.libsamplerate
|
libsamplerate
|
||||||
pkgs.libmikmod
|
libmikmod
|
||||||
pkgs.libtheora
|
libtheora
|
||||||
pkgs.pixman
|
pixman
|
||||||
pkgs.speex
|
speex
|
||||||
pkgs.SDL_image
|
SDL_image
|
||||||
pkgs.SDL_ttf
|
SDL_ttf
|
||||||
pkgs.SDL_mixer
|
SDL_mixer
|
||||||
pkgs.SDL2_net
|
SDL2_net
|
||||||
pkgs.SDL2_ttf
|
SDL2_ttf
|
||||||
pkgs.SDL2_mixer
|
SDL2_mixer
|
||||||
pkgs.gstreamer
|
gstreamer
|
||||||
pkgs.gst_plugins_base
|
gst_plugins_base
|
||||||
];
|
];
|
||||||
|
|
||||||
extraBuildCommands = ''
|
extraBuildCommands = ''
|
||||||
[ -d lib64 ] && mv lib64/steam lib
|
[ -d lib64 ] && mv lib64/steam lib
|
||||||
|
|
||||||
# FIXME: maybe we should replace this with proper libcurl-gnutls
|
# FIXME: maybe we should replace this with proper libcurl-gnutls
|
||||||
( cd lib; ln -s libcurl.so.4 libcurl-gnutls.so.4 )
|
ln -s libcurl.so.4 lib/libcurl-gnutls.so.4
|
||||||
[ -d lib64 ] && ( cd lib64; ln -s libcurl.so.4 libcurl-gnutls.so.4 )
|
[ -d lib64 ] && ln -s libcurl.so.4 lib64/libcurl-gnutls.so.4
|
||||||
|
'' + lib.optionals withRuntime ''
|
||||||
|
mkdir -p steamrt/usr
|
||||||
|
ln -s lib32 steamrt/lib
|
||||||
|
|
||||||
|
if [ -d lib64 ]; then
|
||||||
|
ln -s ${steam-runtime}/i386/usr/bin steamrt/bin
|
||||||
|
else
|
||||||
|
ln -s ${steam-runtime}/amd64/usr/bin steamrt/bin
|
||||||
|
fi
|
||||||
|
|
||||||
|
ln -s ${steam-runtime}/i386/etc steamrt/etc
|
||||||
|
ln -s ${steam-runtime}/i386/usr/include steamrt/usr/include
|
||||||
|
|
||||||
|
cp -rsf --no-preserve mode ${steam-runtime}/i386/usr/lib steamrt/lib32
|
||||||
|
cp -rsf ${steam-runtime}/i386/lib/* steamrt/lib32
|
||||||
|
|
||||||
|
cp -rsf --no-preserve mode ${steam-runtime}/amd64/usr/lib steamrt/lib64
|
||||||
|
cp -rsf ${steam-runtime}/amd64/lib/* steamrt/lib64
|
||||||
|
|
||||||
|
libs=$(ls -dm --quoting-style=escape steamrt/lib{32,64}/{,*/})
|
||||||
|
|
||||||
|
echo 'export STEAM_RUNTIME=0' > steamrt/profile
|
||||||
|
echo 'export PATH=$PATH:/steamrt/bin' >> steamrt/profile
|
||||||
|
echo -n 'export LD_LIBRARY_PATH=/' >> steamrt/profile
|
||||||
|
echo -n $libs | sed 's/\/, /:\//g' | sed 's/\/$//g' >> steamrt/profile
|
||||||
|
echo ':$LD_LIBRARY_PATH' >> steamrt/profile
|
||||||
'';
|
'';
|
||||||
|
|
||||||
profile = if withRuntime then ''
|
profile = if withRuntime then ''
|
||||||
export STEAM_RUNTIME=0
|
source /steamrt/profile
|
||||||
'' else ''
|
'' else ''
|
||||||
# Ugly workaround for https://github.com/ValveSoftware/steam-for-linux/issues/3504
|
# Ugly workaround for https://github.com/ValveSoftware/steam-for-linux/issues/3504
|
||||||
export LD_PRELOAD=/lib32/libpulse.so:/lib64/libpulse.so:/lib32/libasound.so:/lib64/libasound.so:$LD_PRELOAD
|
export LD_PRELOAD=/lib32/libpulse.so:/lib64/libpulse.so:/lib32/libasound.so:/lib64/libasound.so:$LD_PRELOAD
|
||||||
|
Loading…
x
Reference in New Issue
Block a user