1{
2 stdenvNoCC,
3 lib,
4 type,
5}:
6
7assert lib.elem type [
8 "mod"
9 "soundpack"
10 "tileset"
11];
12
13{
14 modName,
15 version,
16 src,
17 ...
18}@args:
19
20stdenvNoCC.mkDerivation (
21 args
22 // rec {
23 pname = args.pname or "cataclysm-dda-${type}-${modName}";
24
25 modRoot = args.modRoot or ".";
26
27 configurePhase =
28 args.configurePhase or ''
29 runHook preConfigure
30 runHook postConfigure
31 '';
32
33 buildPhase =
34 args.buildPhase or ''
35 runHook preBuild
36 runHook postBuild
37 '';
38
39 checkPhase =
40 args.checkPhase or ''
41 runHook preCheck
42 runHook postCheck
43 '';
44
45 installPhase =
46 let
47 baseDir =
48 {
49 mod = "mods";
50 soundpack = "sound";
51 tileset = "gfx";
52 }
53 .${type};
54 in
55 args.installPhase or ''
56 runHook preInstall
57 destdir="$out/share/cataclysm-dda/${baseDir}"
58 mkdir -p "$destdir"
59 cp -R "${modRoot}" "$destdir/${modName}"
60 runHook postInstall
61 '';
62
63 passthru = {
64 forTiles = true;
65 forCurses = type == "mod";
66 };
67 }
68)