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" ];
};
}
|