nixpkgs/pkgs/games/scummvm/games.nix
Jörg Thalheim dadc7eb329
treewide: use runtimeShell instead of stdenv.shell whenever possible
Whenever we create scripts that are installed to $out, we must use runtimeShell
in order to get the shell that can be executed on the machine we create the
package for. This is relevant for cross-compiling. The only use case for
stdenv.shell are scripts that are executed as part of the build system.
Usages in checkPhase are borderline however to decrease the likelyhood
of people copying the wrong examples, I decided to use runtimeShell as well.
2019-02-26 14:10:49 +00:00

125 lines
4 KiB
Nix

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