about summary refs log tree commit diff
path: root/pkgs/games/steam/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/games/steam/default.nix')
-rw-r--r--pkgs/games/steam/default.nix99
1 files changed, 99 insertions, 0 deletions
diff --git a/pkgs/games/steam/default.nix b/pkgs/games/steam/default.nix
new file mode 100644
index 0000000000000..1e8c0db904558
--- /dev/null
+++ b/pkgs/games/steam/default.nix
@@ -0,0 +1,99 @@
+{ stdenv, fetchurl, dpkg, makeWrapper, xz, libX11, gcc, glibc
+, 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, flashplayer, libSM, libICE, libXext
+, dbus_glib, libusb1, networkmanager
+, SDL # World of Goo
+, libvorbis # Osmos
+, curl, mesa # Superbrothers: S&S EP
+, patchelf }:
+
+assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
+
+let version = "1.0.0.39"; in
+
+stdenv.mkDerivation rec {
+  name = "steam-${version}";
+
+  src = fetchurl {
+    url = "http://repo.steampowered.com/steam/archive/precise/steam-launcher_${version}_all.deb";
+    sha256 = "1z1cnlr2qw2ndnqsfwjck9617m2p0f3p9q9409vczj909h2a9wyk";
+  };
+
+  buildInputs = [ dpkg makeWrapper ];
+
+  phases = "installPhase";
+
+  installPhase = ''
+    mkdir -p $out
+    dpkg-deb -x $src $out
+    cp -r $out/usr/* $out/
+    rm -rf $out/usr
+    substituteInPlace "$out/bin/steam" --replace "/usr/bin/env 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
+
+    export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${libX11}/lib:${gcc.gcc}/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:${libSM}/lib:${libICE}/lib:${dbus_glib}/lib:${networkmanager}/lib:${libXext}/lib:${libusb1}/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"
+      FLASHLINK="\$STEAMCONFIG/bin32/plugins"
+      rm -f "\$FLASHLINK" && ln -s "${flashplayer}/lib/mozilla/plugins" "\$FLASHLINK"
+      LDSO="\$STEAMBIN32LINK/ld.so"
+      cp ${glibc}/lib/ld-linux.so.2 "\$LDSO"
+      chmod u+w "\$LDSO"
+      echo \$\$ > "\$PIDFILE" # pid of the shell will become pid of steam
+      export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${glibc}/lib
+      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";
+  };
+}