nixpkgs/pkgs/games/steam/default.nix
Carles Pagès 4d853ae94f steam: revert adding amd64 version.
It turns out that the .deb only contains the changelog and some other docs.
Revert back to using the i686 version, but keep the double url for the future.
2013-08-10 06:08:18 +03:00

105 lines
4.2 KiB
Nix

{ stdenv, fetchurl, dpkg, makeWrapper, xz, libX11, gcc, glibc215
, libselinux, libXrandr, pango, freetype, fontconfig, glib, gtk
, gdk_pixbuf, cairo, libXi, alsaLib, libXrender, nss, nspr, zlib
, dbus, libpng12, libXfixes, cups, libgcrypt, openal, pulseaudio
, libxcb, libXau, libXdmcp
, SDL # World of Goo
, libvorbis # Osmos
, curl, mesa # Superbrothers: S&S EP
, patchelf }:
assert stdenv.system == "i686-linux";
let version = "1.0.0.28"; in
stdenv.mkDerivation rec {
name = "steam-${version}";
src =
if stdenv.system == "i686-linux" then
fetchurl {
url = "http://repo.steampowered.com/steam/archive/precise/steam_${version}_i386.deb";
sha256 = "0c0n1v9rnn6jj2wrvbmi77j9v93f3ndw039z9db6092yqls1amqk";
}
else if stdenv.system == "x86_64-linux" then
fetchurl {
url = "http://repo.steampowered.com/steam/archive/precise/steam64_${version}_amd64.deb";
sha256 = "1dr2b9s036w8r46az1f9cjddrjaf8a9k564g65j288y6w9pcdb2w";
}
else throw "Steam not supported on this platform.";
buildInputs = [ dpkg makeWrapper ];
phases = "installPhase";
installPhase = ''
mkdir -p $out
dpkg-deb -x $src $out
mv $out/usr/* $out/
rmdir $out/usr
substituteInPlace "$out/bin/steam" --replace "/bin/bash" "/bin/sh"
substituteInPlace "$out/bin/steam" --replace "/usr/" "$out/"
sed -i 's,STEAMPACKAGE=.*,STEAMPACKAGE=steam,' $out/bin/steam
sed -i '/STEAMSCRIPT/d' $out/bin/steam
mv $out/bin/steam $out/bin/.steam-wrapped
cat > $out/bin/steam << EOF
#!${stdenv.shell}
export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${libX11}/lib:${gcc.gcc}/lib:${glibc215}/lib:${libselinux}/lib:${libXrandr}/lib:${pango}/lib:${freetype}/lib:${fontconfig}/lib:${glib}/lib:${gtk}/lib:${gdk_pixbuf}/lib:${cairo}/lib:${libXi}/lib:${alsaLib}/lib:${libXrender}/lib:${nss}/lib:${nspr}/lib:${zlib}/lib:${dbus}/lib:${libpng12}/lib:${libXfixes}/lib:${cups}/lib:${libgcrypt}/lib:${openal}/lib:${pulseaudio}/lib:${libxcb}/lib:${libXau}/lib:${libXdmcp}/lib:${SDL}/lib:${libvorbis}/lib:${curl}/lib
STEAMBOOTSTRAP=~/.steam/steam/steam.sh
if [ -f \$STEAMBOOTSTRAP ]; then
PLATFORM32=ubuntu12_32
STEAMCONFIG=~/.steam
STEAMROOT=~/.local/share/Steam
STEAMDATA="\$STEAMROOT"
PIDFILE="\$STEAMCONFIG/steam.pid"
STEAMBIN32LINK="\$STEAMCONFIG/bin32"
STEAMBIN64LINK="\$STEAMCONFIG/bin64"
STEAMSDK32LINK="\$STEAMCONFIG/sdk32"
STEAMSDK64LINK="\$STEAMCONFIG/sdk64"
STEAMROOTLINK="\$STEAMCONFIG/root"
STEAMDATALINK="\$STEAMCONFIG/steam"
STEAMSTARTING="\$STEAMCONFIG/starting"
# Create symbolic links for the Steam API
if [ ! -e "\$STEAMCONFIG" ]; then
mkdir "\$STEAMCONFIG"
fi
if [ "\$STEAMROOT" != "\$STEAMROOTLINK" -a "\$STEAMROOT" != "\$STEAMDATALINK" ]; then
rm -f "\$STEAMBIN32LINK" && ln -s "\$STEAMROOT/\$PLATFORM32" "\$STEAMBIN32LINK"
rm -f "\$STEAMBIN64LINK" && ln -s "\$STEAMROOT/\$PLATFORM64" "\$STEAMBIN64LINK"
rm -f "\$STEAMSDK32LINK" && ln -s "\$STEAMROOT/linux32" "\$STEAMSDK32LINK"
rm -f "\$STEAMSDK64LINK" && ln -s "\$STEAMROOT/linux64" "\$STEAMSDK64LINK"
rm -f "\$STEAMROOTLINK" && ln -s "\$STEAMROOT" "\$STEAMROOTLINK"
if [ "\$STEAMDATALINK" ]; then
rm -f "\$STEAMDATALINK" && ln -s "\$STEAMDATA" "\$STEAMDATALINK"
fi
fi
# Temporary bandaid until everyone has the new libsteam_api.so
rm -f ~/.steampath && ln -s "\$STEAMCONFIG/bin32/steam" ~/.steampath
rm -f ~/.steampid && ln -s "\$PIDFILE" ~/.steampid
rm -f ~/.steam/bin && ln -s "\$STEAMBIN32LINK" ~/.steam/bin
export LD_LIBRARY_PATH="\$STEAMBIN32LINK:\$LD_LIBRARY_PATH:${mesa}/lib"
export SDL_VIDEO_X11_DGAMOUSE=0
cd "\$STEAMROOT"
LDSO="\$STEAMBIN32LINK/ld.so"
cp ${glibc215}/lib/ld-linux.so.2 "\$LDSO"
chmod u+w "\$LDSO"
echo \$\$ > "\$PIDFILE" # pid of the shell will become pid of steam
exec "\$LDSO" "\$STEAMBIN32LINK/steam"
else
export PATH=${xz}/bin:\$PATH
exec $out/bin/.steam-wrapped
fi
EOF
chmod +x $out/bin/steam
'';
meta = {
description = "A digital distribution platform";
homepage = http://store.steampowered.com/;
license = "unfree";
};
}