aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/games/cataclysm-dda/wrapper.nix
blob: a73c320f9c67868984ece697fa1482a2aaad00c5 (plain)
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
{ lib, symlinkJoin, makeWrapper }:

unwrapped:

pkgsSpec:

let
  mods = if lib.isFunction pkgsSpec
         then pkgsSpec unwrapped.pkgs
         else pkgsSpec;
in

if builtins.length mods == 0
then unwrapped
else symlinkJoin {
  name = unwrapped.name + "-with-mods";

  paths = [ unwrapped ] ++ mods;

  nativeBuildInputs = [ makeWrapper ];

  postBuild = ''
    if [ -x $out/bin/cataclysm ]; then
        wrapProgram $out/bin/cataclysm \
            --add-flags "--datadir $out/share/cataclysm-dda/"
    fi
    if [ -x $out/bin/cataclysm-tiles ]; then
        wrapProgram $out/bin/cataclysm-tiles \
            --add-flags "--datadir $out/share/cataclysm-dda/"
    fi

    # Launch the wrapped program
    replaceProgram() {
        cp "$1" "''${1}.bk"
        unlink "$1"
        mv "''${1}.bk" "$1"
        sed -i "$1" -e "s,/nix/store/.\+\(/bin/cataclysm-tiles\),$out\1,"
    }
    for script in "$out/share/applications/cataclysm-dda.desktop" \
                  "$out/Applications/Cataclysm.app/Contents/MacOS/Cataclysm.sh"
    do
        if [ -e "$script" ]; then
            replaceProgram "$script"
        fi
    done
  '';
}