summary refs log tree commit diff
path: root/pkgs/games/dwarf-fortress/dwarf-therapist/wrapper.nix
blob: cbc8d31e6750ff4096dfc4f1dede1b6af8b80d7a (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
{ symlinkJoin, lib, dwarf-therapist-original, dwarf-fortress-original, makeWrapper }:

let
  df = dwarf-fortress-original;
  dt = dwarf-therapist-original;
  inifile = "linux/v0${df.baseVersion}.${df.patchVersion}.ini";
  dfHashFile = "${df}/hash.md5";

in symlinkJoin {
  name = "dwarf-therapist-${dt.version}";

  paths = [ dt ];

  buildInputs = [ makeWrapper ];

  postBuild = ''
    # DwarfTherapist assumes it's run in $out/share/dwarftherapist and
    # therefore uses many relative paths.
    wrapProgram $out/bin/DwarfTherapist \
      --run "cd $out/share/dwarftherapist"

    rm -rf $out/share/dwarftherapist/memory_layouts/linux
    mkdir -p $out/share/dwarftherapist/memory_layouts/linux
    origmd5=$(cat "${dfHashFile}.orig" | cut -c1-8)
    patchedmd5=$(cat "${dfHashFile}" | cut -c1-8)
    substitute \
      ${dt.layouts}/${inifile} \
      $out/share/dwarftherapist/memory_layouts/${inifile} \
      --replace "$origmd5" "$patchedmd5"
  '';
}