diff options
Diffstat (limited to 'pkgs/games/humblebundle')
-rw-r--r-- | pkgs/games/humblebundle/bastion.nix | 62 | ||||
-rw-r--r-- | pkgs/games/humblebundle/cavestoryplus.nix | 39 | ||||
-rw-r--r-- | pkgs/games/humblebundle/default.nix | 50 | ||||
-rw-r--r-- | pkgs/games/humblebundle/fetch-humble-bundle/default.nix | 87 | ||||
-rw-r--r-- | pkgs/games/humblebundle/fez.nix | 35 | ||||
-rw-r--r-- | pkgs/games/humblebundle/ftl.nix | 38 | ||||
-rw-r--r-- | pkgs/games/humblebundle/guacamelee.nix | 61 | ||||
-rw-r--r-- | pkgs/games/humblebundle/hammerwatch.nix | 40 | ||||
-rw-r--r-- | pkgs/games/humblebundle/jamestown.nix | 55 | ||||
-rw-r--r-- | pkgs/games/humblebundle/liads.nix | 43 | ||||
-rw-r--r-- | pkgs/games/humblebundle/megabytepunch.nix | 18 | ||||
-rw-r--r-- | pkgs/games/humblebundle/rocketbirds.nix | 11 | ||||
-rw-r--r-- | pkgs/games/humblebundle/spaz.nix | 39 | ||||
-rw-r--r-- | pkgs/games/humblebundle/swordsandsoldiers.nix | 43 | ||||
-rw-r--r-- | pkgs/games/humblebundle/unepic.nix | 44 |
15 files changed, 665 insertions, 0 deletions
diff --git a/pkgs/games/humblebundle/bastion.nix b/pkgs/games/humblebundle/bastion.nix new file mode 100644 index 00000000..b4acda6b --- /dev/null +++ b/pkgs/games/humblebundle/bastion.nix @@ -0,0 +1,62 @@ +{ stdenv, fetchHumbleBundle, lzma, xorg, libpulseaudio}: + +let + arch = { + "i686-linux" = "x86"; + "x86_64-linux" = "x86_64"; + }.${stdenv.system}; +in stdenv.mkDerivation rec { + name = "bastion-1.4"; + + src = fetchHumbleBundle { + name = "Bastion-HIB-2012-06-20.sh"; + machineName = "bastion_linux"; + downloadName = ".sh"; + md5 = "aa6ccaead3b4b8a5fbd156f4019e8c8b"; + }; + + dontStrip = true; + phases = ["installPhase"]; + + installPhase = let + rpath = stdenv.lib.makeLibraryPath [ + "$dest" + xorg.libX11 + xorg.libXi + stdenv.cc.cc + libpulseaudio + ]; + in '' + dest="$out/opt/games/bastion" + libdir="$dest/lib" #${stdenv.lib.optionalString (arch=="x86_64") "64"}" + + # Unpack binaries and data into $dest + mkdir -p "$dest" + sh "$src" --tar xf ./instarchive_all -O | ${lzma}/bin/lzcat | tar x -C "$dest" + sh "$src" --tar xf ./instarchive_linux_${arch} -O | ${lzma}/bin/lzcat | tar x -C "$dest" + + # Ensure that $dest is a valid library path. + mv $dest/lib64 $libdir || true + + # Patch heavily :-) + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${rpath}" "$dest/Bastion.bin.${arch}" + patchelf --set-rpath "${rpath}" "$libdir/libmono-2.0.so.1" + patchelf --set-rpath "${rpath}" "$libdir/libfmodex.so" + patchelf --set-rpath "${rpath}" "$libdir/libSDL-1.2.so.0" + + # Fixup permissions, just to be sure. + find "$dest" -type f -exec chmod 644 "{}" + + chmod 755 "$dest/Bastion.bin.${arch}" + + # Taken from ArchLinux; might be useful to actually implement + #install -Dm644 "''${pkgname}".desktop "''${pkgdir}"/usr/share/applications/"''${pkgname}".desktop + #install -Dm755 "mesa''${pkgname}" "''${pkgdir}"/usr/bin/"''${pkgname}"mesa + #install -Dm644 "''${pkgdir}"/opt/games/Bastion/Bastion.png "''${pkgdir}"/usr/share/icons/"''${pkgname}".png + + # XXX: Make wrapper instead of symlink ? See ArchLinux's bastionmesa above. + mkdir -p "$out/bin" + ln -s "$dest/Bastion.bin.${arch}" "$out/bin/bastion" + ''; +} diff --git a/pkgs/games/humblebundle/cavestoryplus.nix b/pkgs/games/humblebundle/cavestoryplus.nix new file mode 100644 index 00000000..d4c744d4 --- /dev/null +++ b/pkgs/games/humblebundle/cavestoryplus.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchHumbleBundle, makeWrapper, SDL, mesa }: + +stdenv.mkDerivation rec { + name = "cave-story-plus-${version}"; + version = "r100"; + + src = fetchHumbleBundle { + machineName = "cavestoryplus_linux"; + downloadName = ".tar.bz2"; + suffix = "tar.bz2"; + md5 = "b7ecd65644b8607bc177d7ce670f2185"; + }; + + buildInputs = [ makeWrapper ]; + + patchPhase = let + rpath = stdenv.lib.makeLibraryPath [ + SDL "$out" stdenv.cc.cc mesa + ]; + in '' + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${rpath}" CaveStory+_64 + ''; + + installPhase = '' + install -vD CaveStory+_64 "$out/libexec/cave-story-plus/cave-story-plus" + mkdir -p "$out/bin" + makeWrapper \ + "$out/libexec/cave-story-plus/cave-story-plus" \ + "$out/bin/cave-story-plus" \ + --run "cd '$out/share/cave-story-plus'" + + mkdir -p "$out/share/cave-story-plus" + cp -vrt "$out/share/cave-story-plus" data + ''; + + dontStrip = true; +} diff --git a/pkgs/games/humblebundle/default.nix b/pkgs/games/humblebundle/default.nix new file mode 100644 index 00000000..237a5dc6 --- /dev/null +++ b/pkgs/games/humblebundle/default.nix @@ -0,0 +1,50 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.humblebundle; + + self = rec { + callPackage = pkgs.lib.callPackageWith (pkgs // self); + callPackage_i686 = pkgs.lib.callPackageWith (pkgs.pkgsi686Linux // self); + + fetchHumbleBundle = callPackage ./fetch-humble-bundle { + inherit (config.humblebundle) email password; + }; + + bastion = callPackage ./bastion.nix {}; + cavestoryplus = callPackage ./cavestoryplus.nix {}; + fez = callPackage ./fez.nix {}; + ftl = callPackage ./ftl.nix {}; + guacamelee = callPackage_i686 ./guacamelee.nix {}; + hammerwatch = callPackage ./hammerwatch.nix {}; + jamestown = callPackage ./jamestown.nix {}; + liads = callPackage ./liads.nix {}; + megabytepunch = callPackage ./megabytepunch.nix {}; + rocketbirds = callPackage ./rocketbirds.nix {}; + spaz = callPackage ./spaz.nix {}; + swordsandsoldiers = callPackage ./swordsandsoldiers.nix {}; + unepic = callPackage ./unepic.nix {}; + }; +in with lib; { + options.humblebundle = { + email = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + Email address for your HumbleBundle account. + ''; + }; + + password = mkOption { + type = types.nullOr types.str; + default = null; + description = '' + Password for your HumbleBundle account. + ''; + }; + }; + + config.packages = { + humblebundle = mkIf (cfg.email != null && cfg.password != null) self; + }; +} diff --git a/pkgs/games/humblebundle/fetch-humble-bundle/default.nix b/pkgs/games/humblebundle/fetch-humble-bundle/default.nix new file mode 100644 index 00000000..fbabaa8c --- /dev/null +++ b/pkgs/games/humblebundle/fetch-humble-bundle/default.nix @@ -0,0 +1,87 @@ +{ stdenv, curl, cacert, writeText, fetchFromGitHub, fetchpatch +, python, buildPythonPackage, pythonPackages + +, email, password +}: + +{ name ? null, machineName, downloadName ? "Download", suffix ? "humblebundle", md5 }: let + cafile = "${cacert}/etc/ssl/certs/ca-bundle.crt"; + + humbleAPI = buildPythonPackage rec { + name = "humblebundle-${version}"; + version = "0.1.1"; + + src = fetchFromGitHub { + owner = "saik0"; + repo = "humblebundle-python"; + rev = version; + sha256 = "1kcg42nh7sbjabim1pbqx14468pypznjy7fx2bv7dicy0sqd9b8j"; + }; + + propagatedBuildInputs = with pythonPackages; [ requests2 ]; + }; + + pyStr = str: "'${stdenv.lib.escape ["'" "\\"] str}'"; + + getDownloadURL = writeText "gethburl.py" '' + import sys, humblebundle + + def get_products(client): + gamekeys = client.get_gamekeys() + for gamekey in gamekeys: + order = hb.get_order(gamekey) + if order.subproducts is None: + continue + for subproduct in order.subproducts: + prodname = subproduct.human_name.encode('ascii', 'replace') + downloads = [(download.machine_name, download.download_struct) + for download in subproduct.downloads] + yield (prodname, downloads) + + def find_download(downloads): + for machine_name, dstruct in sum(downloads.values(), []): + if machine_name == ${pyStr machineName}: + for ds in dstruct: + if ds.name == ${pyStr downloadName}: + return ds + print >>sys.stderr, \ + ${pyStr "Unable to find ${downloadName} for ${machineName}!"} + print >>sys.stderr, 'Available download types:' + for ds in dstruct: + print >>sys.stderr, " " + ds.name + raise SystemExit(1) + + hb = humblebundle.HumbleApi() + hb.login(${pyStr email}, ${pyStr password}) + products = dict(get_products(hb)) + dstruct = find_download(products) + + if dstruct is None: + print >>sys.stderr, ${pyStr "Cannot find download for ${machineName}!"} + print >>sys.stderr, 'Available machine names:' + for name, dstructs in sorted(products.items(), key=lambda x: x[0]): + print >>sys.stderr, " * " + name + print >>sys.stderr, " " + ', '.join(map(lambda x: x[0], dstructs)) + raise SystemExit(1) + elif dstruct.md5 != ${pyStr md5}: + print >>sys.stderr, \ + ${pyStr "MD5 for ${machineName} is not ${md5} but "} \ + + dstruct.md5 + '.' + raise SystemExit(1) + else: + print dstruct.url.web + ''; +in stdenv.mkDerivation { + name = if name != null then name else "${machineName}.${suffix}"; + outputHashAlgo = "md5"; + outputHash = md5; + + buildInputs = [ python humbleAPI ]; + + buildCommand = '' + url="$(python "${getDownloadURL}")" + header "downloading $name from $url" + ${curl}/bin/curl --cacert "${cafile}" --fail --output "$out" "$url" + stopNest + ''; +} diff --git a/pkgs/games/humblebundle/fez.nix b/pkgs/games/humblebundle/fez.nix new file mode 100644 index 00000000..5f23b97c --- /dev/null +++ b/pkgs/games/humblebundle/fez.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchHumbleBundle, unzip, mono, openal, SDL2 }: + +let + version = "1.0.2"; + usVersion = stdenv.lib.replaceChars ["."] ["_"] version; +in stdenv.mkDerivation rec { + name = "fez-${version}"; + version = "09152013"; + + src = fetchHumbleBundle { + name = "${name}-bin"; + md5 = "4ac954101835311f3528f5369e1fecb7"; + }; + + unpackPhase = '' + ${unzip}/bin/unzip -qq "$src" 'data/*' || true + sourceRoot=data + ''; + + dontStrip = true; + + buildPhase = '' + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${stdenv.lib.makeLibraryPath [ mono openal SDL2 ]}" \ + FEZ.bin.x86_64 + ''; + + installPhase = '' + ensureDir "$out/bin" "$out/libexec/fez/mono/2.0" + install -vD FEZ.bin.x86_64 "$out/libexec/fez/fez" + install -vt "$out/libexec/fez/mono/2.0" *.dll + ln -s "$out/libexec/fez/fez" "$out/bin/fez" + ''; +} diff --git a/pkgs/games/humblebundle/ftl.nix b/pkgs/games/humblebundle/ftl.nix new file mode 100644 index 00000000..7423951a --- /dev/null +++ b/pkgs/games/humblebundle/ftl.nix @@ -0,0 +1,38 @@ +{ stdenv, fetchHumbleBundle, makeWrapper, SDL, mesa, libdevil, freetype }: + +stdenv.mkDerivation rec { + name = "ftl-${version}"; + version = "1.5.13"; + + src = fetchHumbleBundle { + machineName = "ftlfasterthanlight_soundtrack_linux"; + downloadName = ".tar.gz"; + suffix = "tar.gz"; + md5 = "791e0bc8de73fcdcd5f461a4548ea2d8"; + }; + + buildInputs = [ makeWrapper ]; + + patchPhase = let + rpath = stdenv.lib.makeLibraryPath [ + SDL "$out" stdenv.cc.cc mesa libdevil freetype + ]; + in '' + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${rpath}" data/amd64/bin/FTL + ''; + + installPhase = '' + install -vD "data/amd64/bin/FTL" "$out/libexec/ftl/FTL" + install -vD "data/amd64/lib/libbass.so" "$out/lib/libbass.so" + install -vD "data/amd64/lib/libbassmix.so" "$out/lib/libbassmix.so" + + mkdir -p "$out/bin" "$out/share/ftl" + cp -vrt "$out/share/ftl" data/resources + makeWrapper "$out/libexec/ftl/FTL" "$out/bin/ftl" \ + --run "cd '$out/share/ftl'" + ''; + + dontStrip = true; +} diff --git a/pkgs/games/humblebundle/guacamelee.nix b/pkgs/games/humblebundle/guacamelee.nix new file mode 100644 index 00000000..537ec945 --- /dev/null +++ b/pkgs/games/humblebundle/guacamelee.nix @@ -0,0 +1,61 @@ +{ stdenv, fetchHumbleBundle, unzip, SDL2, mesa, writeText, makeWrapper }: + +stdenv.mkDerivation rec { + name = "guacamelee-${version}"; + version = "1393037377"; + + src = fetchHumbleBundle { + machineName = "guacamelee_goldedition_linux"; + suffix = "sh"; + md5 = "b06af932c1aaefb8f157c977061388ef"; + }; + + unpackCmd = '' + ${unzip}/bin/unzip "$src" 'data/*' || : + ''; + + preloader = writeText "guacamelee-preloader.c" '' + #define _GNU_SOURCE + #include <dlfcn.h> + + int chdir(const char *path) { + int (*_chdir) (const char *) = dlsym(RTLD_NEXT, "chdir"); + return _chdir(DATA); + } + ''; + + buildInputs = [ makeWrapper ]; + + buildPhase = let + rpath = stdenv.lib.makeLibraryPath [ SDL2 stdenv.cc.cc mesa ]; + fmodRpath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc ]; + in '' + gcc -Werror -shared "$preloader" -o preloader.so -ldl \ + -DDATA=\"$out/share/guacamelee\" + + for i in libfmodevent-4.44.27.so libfmodex-4.44.27.so; do + patchelf --set-rpath "${fmodRpath}:$out/libexec/guacamelee" \ + "x86/lib32/$i" + done + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${rpath}:$out/libexec/guacamelee" x86/game-bin + ''; + + installPhase = '' + install -vD x86/game-bin "$out/libexec/guacamelee/guacamelee" + install -vD preloader.so "$out/libexec/guacamelee/preloader.so" + + makeWrapper "$out/libexec/guacamelee/guacamelee" "$out/bin/guacamelee" \ + --set LD_PRELOAD "$out/libexec/guacamelee/preloader.so" + + for i in libfmodevent-4.44.27.so libfmodex-4.44.27.so; do + install -vD "x86/lib32/$i" "$out/libexec/guacamelee/$i" + done + + mkdir -p "$out/share" + cp -vRd noarch "$out/share/guacamelee" + ''; + + dontStrip = true; +} diff --git a/pkgs/games/humblebundle/hammerwatch.nix b/pkgs/games/humblebundle/hammerwatch.nix new file mode 100644 index 00000000..8cf65211 --- /dev/null +++ b/pkgs/games/humblebundle/hammerwatch.nix @@ -0,0 +1,40 @@ +{ stdenv, fetchHumbleBundle, makeWrapper, unzip, mono, SDL2, mesa, openal +, pulseaudio +}: + +# FIXME: Dosn't support the XDG Base Directory Specification, +# so enforce it using LD_PRELOAD maybe? + +stdenv.mkDerivation rec { + name = "hammerwatch-${version}"; + version = "1.3"; + + src = fetchHumbleBundle { + machineName = "hammerwatch_linux"; + suffix = "zip"; + md5 = "7cd77e4395f394c3062322c96e418732"; + }; + + buildInputs = [ unzip makeWrapper ]; + + installPhase = let + rpath = stdenv.lib.makeLibraryPath [ SDL2 mesa openal pulseaudio ]; + monoNoLLVM = mono.override { withLLVM = false; }; + in '' + mkdir -p "$out/lib" + cp -rt "$out/lib" SDL2-CS.dll SDL2-CS.dll.config \ + TiltedEngine.dll Lidgren.Network.dll FarseerPhysicsOTK.dll \ + ICSharpCode.SharpZipLib.dll SteamworksManaged.dll NVorbis.dll + + libexec="$out/libexec/hammerwatch" + install -vD Hammerwatch.exe "$libexec/hammerwatch.exe" + cp -rt "$libexec" assets.bin editor levels + + makeWrapper "${monoNoLLVM}/bin/mono" "$out/bin/hammerwatch" \ + --add-flags "$libexec/hammerwatch.exe" \ + --set MONO_PATH "$out/lib" \ + --set LD_LIBRARY_PATH "${rpath}" + ''; + + dontStrip = true; +} diff --git a/pkgs/games/humblebundle/jamestown.nix b/pkgs/games/humblebundle/jamestown.nix new file mode 100644 index 00000000..15900bba --- /dev/null +++ b/pkgs/games/humblebundle/jamestown.nix @@ -0,0 +1,55 @@ +{ stdenv, fetchHumbleBundle, unzip, pkgsi686Linux, expect, makeWrapper +, SDL, openal +}: + +let + version = "1.0.2"; + usVersion = stdenv.lib.replaceChars ["."] ["_"] version; +in stdenv.mkDerivation rec { + name = "jamestown-${version}"; + + src = fetchHumbleBundle { + machineName = "jamestown_linux"; + downloadName = ".zip"; + suffix = "zip"; + md5 = "dcfb4348aba89f0f26bf5b4c7e05d936"; + }; + + buildInputs = [ makeWrapper ]; + + unpackPhase = '' + ${unzip}/bin/unzip -q "$src" + patchelf --set-interpreter "${pkgsi686Linux.glibc}"/lib/ld-linux.so.* \ + "JamestownInstaller_${usVersion}-bin" + ${expect}/bin/expect <<INSTALL + spawn "./JamestownInstaller_${usVersion}-bin" + expect "see more?" + send "n\r" + expect "Accept this license?" + send "y\r" + expect "Press enter to continue." + send "\r" + expect "Enter path" + send "$(pwd)/${name}\r" + expect eof + INSTALL + sourceRoot="$(pwd)/${name}" + ''; + + installPhase = let + rpath = stdenv.lib.makeLibraryPath [ SDL openal ]; + in '' + libexec="$out/libexec/jamestown" + install -vD Jamestown-amd64 "$libexec/jamestown" + + mkdir -p "$out/share" + mv Archives "$out/share/jamestown" + + makeWrapper "$(cat "$NIX_CC/nix-support/dynamic-linker")" \ + "$out/bin/jamestown" \ + --add-flags "$libexec/jamestown" \ + --set LD_LIBRARY_PATH "${rpath}" + + false # Both amd64 and i686 binaries are fucking BROKEN, wait for 1.0.3... + ''; +} diff --git a/pkgs/games/humblebundle/liads.nix b/pkgs/games/humblebundle/liads.nix new file mode 100644 index 00000000..a96af8e0 --- /dev/null +++ b/pkgs/games/humblebundle/liads.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchHumbleBundle, unzip, mesa, xorg, libpulseaudio }: + +stdenv.mkDerivation rec { + name = "liads-${version}"; + version = "20160121"; + + src = fetchHumbleBundle { + machineName = "loversinadangerousspacetime_linux"; + suffix = "zip"; + md5 = "0d81adb63ca9233165fb5de415fa5963"; + }; + + unpackCmd = '' + ${unzip}/bin/unzip -qq -d liads "$src" || : + ''; + + arch = if stdenv.system == "x86_64-linux" then "x86_64" else "x86"; + executable = "LoversInADangerousSpacetime.${arch}"; + + buildPhase = let + rpath = stdenv.lib.makeLibraryPath [ + stdenv.cc.cc mesa xorg.libX11 xorg.libXcursor xorg.libXrandr libpulseaudio + ]; + in '' + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${rpath}" "$executable" + ''; + + installPhase = '' + install -vD "$executable" "$out/libexec/liads/liads" + ln -s "$out/share/liads" "$out/libexec/liads/Data" + + mkdir -p "$out/bin" + ln -s "$out/libexec/liads/liads" "$out/bin/liads" + + mkdir -p "$out/share" + cp -vRd LoversInADangerousSpacetime_Data "$out/share/liads" + ''; + + dontStrip = true; + dontPatchELF = true; +} diff --git a/pkgs/games/humblebundle/megabytepunch.nix b/pkgs/games/humblebundle/megabytepunch.nix new file mode 100644 index 00000000..643e5835 --- /dev/null +++ b/pkgs/games/humblebundle/megabytepunch.nix @@ -0,0 +1,18 @@ +{ stdenv, fetchHumbleBundle }: + +stdenv.mkDerivation rec { + name = "megabytepunch-${version}"; + version = "1.12"; + + src = fetchHumbleBundle { + machineName = "megabytepunch_linux"; + suffix = "tar.gz"; + md5 = "13487ae35c99817ce5f19b45fa51158b"; + }; + + patchPhase = '' + patchelf \ + --set-interpreter "$(cat $NIX_GCC/nix-support/dynamic-linker)" \ + + ''; +} diff --git a/pkgs/games/humblebundle/rocketbirds.nix b/pkgs/games/humblebundle/rocketbirds.nix new file mode 100644 index 00000000..a57d1562 --- /dev/null +++ b/pkgs/games/humblebundle/rocketbirds.nix @@ -0,0 +1,11 @@ +{ stdenv, fetchHumbleBundle }: + +stdenv.mkDerivation rec { + name = "rocketbirds-${version}"; + version = "20130917"; + + src = fetchHumbleBundle { + name = "Rocketbirds${version}.sh"; + md5 = "7c5e6da4cd7fc7f2f51861f8b96a386f"; + }; +} diff --git a/pkgs/games/humblebundle/spaz.nix b/pkgs/games/humblebundle/spaz.nix new file mode 100644 index 00000000..5e40ea49 --- /dev/null +++ b/pkgs/games/humblebundle/spaz.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchHumbleBundle, unzip, pkgsi686Linux }: + +stdenv.mkDerivation rec { + name = "spaz-${version}"; + version = "09182012"; + + src = fetchHumbleBundle { + name = "spaz-linux-humblebundle-${version}-bin"; + md5 = "9b2f28009949f2dff9f3a737e46fabfd"; + }; + + buildInputs = [ pkgsi686Linux.makeWrapper ]; + + unpackCmd = '' + ${unzip}/bin/unzip -qq "$src" 'data/*' || true + ''; + + dontStrip = true; + + buildPhase = let + libs = pkgsi686Linux.stdenv.lib.makeLibraryPath [ + pkgsi686Linux.stdenv.cc.cc pkgsi686Linux.SDL + ]; + in '' + patchelf --set-interpreter "${pkgsi686Linux.glibc}"/lib/ld-linux.so.* \ + --set-rpath "${libs}" SPAZ + ''; + + installPhase = let + libs = pkgsi686Linux.stdenv.lib.makeLibraryPath [ + pkgsi686Linux.mesa pkgsi686Linux.openal pkgsi686Linux.alsaPlugins + ]; + in '' + install -vD SPAZ "$out/libexec/spaz/spaz" + cp -rt "$out/libexec/spaz" audio.so common game mods + makeWrapper "$out/libexec/spaz/spaz" "$out/bin/spaz" \ + --set LD_LIBRARY_PATH "${libs}" + ''; +} diff --git a/pkgs/games/humblebundle/swordsandsoldiers.nix b/pkgs/games/humblebundle/swordsandsoldiers.nix new file mode 100644 index 00000000..2fd4fc4b --- /dev/null +++ b/pkgs/games/humblebundle/swordsandsoldiers.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchHumbleBundle, makeWrapper +, SDL, mesa, zlib, openal, libvorbis, xorg, fontconfig, freetype, libogg +}: + +stdenv.mkDerivation rec { + name = "swordsandsoldiers-${version}"; + version = "20120325"; + + src = fetchHumbleBundle { + machineName = "swordsandsoldiers_android_and_pc_linux"; + downloadName = "x86_64.tar.gz"; + suffix = "tar.gz"; + md5 = "5f0c9789fa053cbf6bac021a338245bb"; + }; + + buildInputs = [ makeWrapper ]; + + patchPhase = let + rpath = stdenv.lib.makeLibraryPath [ + SDL mesa zlib openal libvorbis fontconfig freetype stdenv.cc.cc libogg + xorg.libX11 xorg.libXft xorg.libXinerama xorg.libXext xorg.libXpm + ]; + in '' + for i in SwordsAndSoldiers.bin SwordsAndSoldiersSetup.bin; do + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${rpath}" "$i" + done + ''; + + installPhase = '' + libexec="$out/libexec/swordsandsoldiers" + install -vD SwordsAndSoldiers.bin "$libexec/swordsandsoldiers" + install -vD SwordsAndSoldiersSetup.bin "$libexec/setup" + mv Data "$libexec/" + + mkdir -p "$out/bin" + ln -s "$libexec/swordsandsoldiers" "$out/bin/swordsandsoldiers" + ln -s "$libexec/setup" "$out/bin/swordsandsoldiers-setup" + ''; + + dontStrip = true; +} diff --git a/pkgs/games/humblebundle/unepic.nix b/pkgs/games/humblebundle/unepic.nix new file mode 100644 index 00000000..cc4099f5 --- /dev/null +++ b/pkgs/games/humblebundle/unepic.nix @@ -0,0 +1,44 @@ +{ stdenv, fetchHumbleBundle, unzip, makeWrapper, SDL2, SDL2_mixer, zlib }: + +let + version = "1.50.5"; + versionName = "15005"; + arch = { + "i686-linux" = "32"; + "x86_64-linux" = "64"; + }.${stdenv.system}; +in stdenv.mkDerivation rec { + name = "unepic-${version}"; + + src = fetchHumbleBundle { + name = "unepic-15005.run"; + machineName = "unepic_linux"; + downloadName = ".run"; + md5 = "940824c4de6e48522845f63423e87783"; + }; + + phases = [ "installPhase" ]; + + buildInputs = [ unzip makeWrapper ]; + + installPhase = let + rpath = stdenv.lib.makeLibraryPath [ SDL2 SDL2_mixer zlib stdenv.cc.cc ]; + in '' + dest="$out/opt/games/unepic" + exe="$dest/unepic${arch}" + + mkdir -p "$out/opt/games" + unzip "$src" "data/*" -d "$out/opt/games" || [ "$?" -eq 1 ] + mv "$out/opt/games/data" "$dest" + rm -r "$dest"/lib* + + # Patch $exe acccording to arch. + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${rpath}" "$exe" + + mkdir -p "$out/bin" + + makeWrapper "$exe" "$out/bin/unepic" --run "cd '$dest'" + ''; +} |