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.
126 lines
4 KiB
Nix
126 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" ];
|
|
};
|
|
}
|