summaryrefslogtreecommitdiffstats
path: root/pkgs/games/openra_2019/common.nix
blob: 2dccec5f772b80bed065da1b4945b52ff7dc8275 (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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/*
  The reusable code, and package attributes, between OpenRA engine packages (engine.nix)
   and out-of-tree mod packages (mod.nix).
*/
{
  lib,
  makeSetupHook,
  curl,
  unzip,
  dos2unix,
  pkg-config,
  makeWrapper,
  lua,
  mono,
  python3,
  libGL,
  freetype,
  openal,
  SDL2,
  # It is not necessary to run the game, but it is nicer to be given an error dialog in the case of failure,
  # rather than having to look to the logs why it is not starting.
  zenity,
}:

let
  inherit (lib)
    licenses
    maintainers
    makeBinPath
    makeLibraryPath
    optional
    platforms
    ;

  path = makeBinPath (
    [
      mono
      python3
    ]
    ++ optional (zenity != null) zenity
  );
  rpath = makeLibraryPath [
    lua
    freetype
    openal
    SDL2
  ];
  mkdirp = makeSetupHook {
    name = "openra-mkdirp-hook";
    meta.license = lib.licenses.mit;
  } ./mkdirp.sh;

in
{
  patchEngine = dir: version: ''
    sed -i \
      -e 's/^VERSION.*/VERSION = ${version}/g' \
      -e '/fetch-geoip-db/d' \
      -e '/GeoLite2-Country.mmdb.gz/d' \
      ${dir}/Makefile

    sed -i 's|locations=.*|locations=${lua}/lib|' ${dir}/thirdparty/configure-native-deps.sh
  '';

  wrapLaunchGame = openraSuffix: binaryName: ''
    # Setting TERM=xterm fixes an issue with terminfo in mono: System.Exception: Magic number is wrong: 542
    # https://github.com/mono/mono/issues/6752#issuecomment-365212655
    wrapProgram $out/lib/openra${openraSuffix}/launch-game.sh \
      --prefix PATH : "${path}" \
      --prefix LD_LIBRARY_PATH : "${rpath}" \
      --set TERM xterm

    makeWrapper $out/lib/openra${openraSuffix}/launch-game.sh $(mkdirp $out/bin)/${binaryName} \
      --chdir "$out/lib/openra${openraSuffix}"
  '';

  packageAttrs = {
    buildInputs = [ libGL ];

    # TODO: Test if this is correct.
    nativeBuildInputs = [
      curl
      unzip
      dos2unix
      pkg-config
      makeWrapper
      mkdirp
      mono
      python3
    ];

    makeFlags = [ "prefix=$(out)" ];

    doCheck = true;

    dontStrip = true;

    meta = {
      maintainers = with maintainers; [
        fusion809
        msteen
      ];
      license = licenses.gpl3;
      platforms = platforms.linux;
    };
  };
}