summary refs log tree commit diff
path: root/pkgs/games/scummvm/games.nix
blob: 0165a797c3a6e20eb299bd097b0bfd0498f72aeb (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
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
{ stdenv, lib, fetchurl, makeDesktopItem, unzip, writeText
, scummvm, runtimeShell }:

let
  desktopItem = name: short: long: description: makeDesktopItem {
    categories  = "Game;AdventureGame;";
    comment     = description;
    desktopName = long;
    exec        = "@out@/bin/${short}";
    genericName = description;
    icon        = "scummvm";
    name        = name;
  };

  run = name: short: code: writeText "${short}.sh" ''
    #!${runtimeShell} -eu

    exec ${scummvm}/bin/scummvm \
      --path=@out@/share/${name} \
      --fullscreen \
      ${code}
  '';

  generic = { plong, pshort, pcode, description, version, files, docs ? [ "readme.txt" ], ... } @attrs:
    let
      attrs' = builtins.removeAttrs attrs [ "plong" "pshort" "pcode" "description" "docs" "files" "version" ];
      pname = lib.replaceStrings [ " " ":" ] [ "-" "" ] (lib.toLower plong);
    in stdenv.mkDerivation ({
      name = "${pname}-${version}";

      nativeBuildInputs = [ unzip ];

      dontBuild = true;
      dontFixup = true;

      installPhase = ''
        runHook preInstall

        mkdir -p $out/bin $out/share/{applications,${pname},doc/${pname}}

        ${lib.concatStringsSep "\n" (map (f: "mv ${f} $out/share/doc/${pname}") docs)}
        ${lib.concatStringsSep "\n" (map (f: "mv ${f} $out/share/${pname}") files)}

        substitute ${run pname pshort pcode} $out/bin/${pshort} \
          --subst-var out
        substitute ${desktopItem pname pshort plong description}/share/applications/${pname}.desktop $out/share/applications/${pname}.desktop \
          --subst-var out

        chmod 0755 $out/bin/${pshort}

        runHook postInstall
      '';

      meta = with stdenv.lib; {
        homepage = "https://www.scummvm.org";
        license = licenses.free; # refer to the readme for exact wording
        maintainers = with maintainers; [ peterhoeg ];
        inherit description;
        inherit (scummvm.meta) platforms;
      };
    } // attrs');

in {
  beneath-a-steel-sky = generic rec {
    plong = "Beneath a Steel Sky";
    pshort = "bass";
    pcode = "sky";
    description = "2D point-and-click science fiction thriller set in a bleak vision of the future";
    version = "1.2";
    src = fetchurl {
      url = "mirror://sourceforge/scummvm/${pshort}-cd-${version}.zip";
      sha256 = "14s5jz67kavm8l15gfm5xb7pbpn8azrv460mlxzzvdpa02a9n82k";
    };
    files = [ "sky.*" ];
  };

  broken-sword-25 = generic rec {
    plong = "Broken Sword 2.5";
    pshort = "sword25";
    pcode = "sword25";
    description = "A fan game of the Broken Sword series";
    version = "1.0";
    src = fetchurl {
      url = "mirror://sourceforge/scummvm/${pshort}-v${version}.zip";
      sha256 = "0ivj1vflfpih5bs5a902mab88s4d77fwm3ya3fk7pammzc8gjqzz";
    };
    sourceRoot = ".";
    docs = [ "README" "license-original.txt" ];
    files = [ "data.b25c" ];
  };

  drascula-the-vampire-strikes-back = generic rec {
    plong = "Drascula: The Vampire Strikes Back";
    pshort = "drascula";
    pcode = "drascula";
    description = "Spanish 2D classic point & click style adventure with tons of humor and an easy interface";
    version = "1.0";
    # srcs = {
      src = fetchurl {
        url = "mirror://sourceforge/scummvm/${pshort}-${version}.zip";
        sha256 = "1pj29rpb754sn6a56f8brfv6f2m1p5qgaqik7d68pfi2bb5zccdp";
      };
      # audio = fetchurl {
        # url = "mirror://sourceforge/scummvm/${pshort}-audio-flac-2.0.zip";
        # sha256 = "1zmqhrby8f5sj1qy6xjdgkvk9wyhr3nw8ljrrl58fmxb83x1rryw";
      # };
    # };
    sourceRoot = ".";
    docs = [ "readme.txt" "drascula.doc" ];
    files = [ "Packet.001" ];
  };

  dreamweb = generic rec {
    plong = "Dreamweb";
    pshort = "dreamweb";
    pcode = "dreamweb";
    description = "2D point-and-click cyberpunk top-down adventure game";
    version = "1.1";
    src = fetchurl {
      url = "mirror://sourceforge/scummvm/${pshort}-cd-uk-${version}.zip";
      sha256 = "0hh1p3rd7s0ckvri14lc6wdry9vv0vn4h4744v2n4zg63j8i6vsa";
    };
    sourceRoot = ".";
    docs = [ "license.txt" ];
    files = [ "DREAMWEB.*" "SPEECH" "track01.flac" ];
  };

  flight-of-the-amazon-queen = generic rec {
    plong = "Flight of the Amazon Queen";
    pshort = "fotaq";
    pcode = "queen";
    description = "2D point-and-click adventure game set in the 1940s";
    version = "1.1";
    src = fetchurl {
      url = "mirror://sourceforge/scummvm/FOTAQ_Talkie-${version}.zip";
      sha256 = "1a6q71q1dl9vvw2qqsxk5h1sv0gaqy6236zr5905w2is01gdsp52";
    };
    sourceRoot = ".";
    files = [ "*.1c" ];
  };

  lure-of-the-temptress = generic rec {
    plong = "Lure of the Temptress";
    pshort = "lott";
    pcode = "lure";
    description = "2D point-and-click adventure game with a fantasy theme";
    version = "1.1";
    src = fetchurl {
      url = "mirror://sourceforge/scummvm/lure-${version}.zip";
      sha256 = "0201i70qcs1m797kvxjx3ygkhg6kcl5yf49sihba2ga8l52q45zk";
    };
    docs = [ "README" "*.txt" "*.pdf" "*.PDF" ];
    files = [ "*.vga" ];
  };
}