summary refs log tree commit diff
path: root/pkgs/games/scummvm/games.nix
blob: a96250e7acb6d5bdd7c70f752a015e99a1dd16ab (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
{ 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.*" ];
  };

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

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