about summary refs log tree commit diff
path: root/pkgs/games/humblebundle/antichamber.nix
blob: 32e6ad2dbd428fbc194fc09d77267234d4fff36d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
{ stdenv, lib, fetchHumbleBundle, unzip
, xorg, libpulseaudio, libvorbis, libogg, libGL }:

stdenv.mkDerivation rec {
  name = "antichamber-1.1";

  src = fetchHumbleBundle {
    name = "antichamber_1.01_linux_1392664980.sh";
    machineName = "antichamber_linux";
    md5 = "37bca01c411d813c8729259b7db2dba0";
  };

  dontStrip = true;
  phases = ["installPhase"];

  installPhase = let
    rpath = lib.makeLibraryPath [
      "$dest/Binaries/Linux"
      xorg.libX11
      xorg.libXi
      stdenv.cc.cc.lib
      libpulseaudio
      libvorbis
      libogg
      libGL
    ];
   in ''
    dest="$out/share/antichamber"

    # Unpack binaries and data into $dest
    mkdir -p "$dest"
    ${unzip}/bin/unzip $src "data/*" -d $dest && [ $? -le 2 ]
    mv $dest/data/*/* $dest
    rm -r $dest/data

    # Patch heavily :-)
    patchelf \
      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
      --set-rpath "${rpath}" "$dest/Binaries/Linux/UDKGame-Linux"
    for exe in $dest/Binaries/Linux/lib/*.so{,.*} ; do
      patchelf --set-rpath "${rpath}" "$exe"
    done

    # Fixup permissions, just to be sure.
    find "$dest" -type f -exec chmod 644 "{}" +
    find "$dest/Binaries" -type f -exec chmod 755 "{}" +

    mkdir -p "$out/bin"
    cat > $out/bin/antichamber <<EOF
    #!${stdenv.shell}
    cd $dest/Binaries/Linux/
    exec ./UDKGame-Linux "$@"
    EOF
    chmod 755 $out/bin/antichamber
  '';
}