ieda: init at 0-unstable-2024-10-11 (#338769)
[NixPkgs.git] / pkgs / games / rott / default.nix
bloba91187730151d62ec7cd0f2902665ac107bb9276
2   stdenv,
3   lib,
4   fetchurl,
5   writeShellScript,
6   SDL,
7   SDL_mixer,
8   makeDesktopItem,
9   copyDesktopItems,
10   runtimeShell,
11   buildShareware ? false,
14 let
15   # Allow the game to be launched from a user's PATH and load the game data from the user's home directory.
16   launcher = writeShellScript "rott" ''
17     set -eEuo pipefail
18     dir=$HOME/.rott/data
19     test -e $dir || mkdir -p $dir
20     cd $dir
21     exec @out@/libexec/rott "$@"
22   '';
25 stdenv.mkDerivation rec {
26   pname = "rott";
27   version = "1.1.2";
29   src = fetchurl {
30     url = "https://icculus.org/rott/releases/${pname}-${version}.tar.gz";
31     sha256 = "1zr7v5dv2iqx40gzxbg8mhac7fxz3kqf28y6ysxv1xhjqgl1c98h";
32   };
34   nativeBuildInputs = [ copyDesktopItems ];
36   buildInputs = [
37     SDL
38     SDL_mixer
39   ];
41   sourceRoot = "rott-${version}/rott";
43   makeFlags = [
44     "SHAREWARE=${if buildShareware then "1" else "0"}"
45   ];
47   # when using SDL_compat instead of SDL1, SDL_mixer isn't correctly detected,
48   # but there is no harm just specifying it
49   env.NIX_CFLAGS_COMPILE = toString [
50     "-I${lib.getDev SDL_mixer}/include/SDL"
51   ];
53   installPhase = ''
54     runHook preInstall
56     install -Dm555 -t $out/libexec rott
57     install -Dm555 ${launcher} $out/bin/${launcher.name}
58     substituteInPlace $out/bin/rott --subst-var out
60     runHook postInstall
61   '';
63   desktopItems = [
64     (makeDesktopItem {
65       name = "rott";
66       exec = "rott";
67       desktopName = "Rise of the Triad: ${if buildShareware then "The HUNT Begins" else "Dark War"}";
68       categories = [ "Game" ];
69     })
70   ];
72   meta = with lib; {
73     description = "SDL port of Rise of the Triad";
74     mainProgram = "rott";
75     homepage = "https://icculus.org/rott/";
76     license = licenses.gpl2Plus;
77     maintainers = with maintainers; [ sander ];
78     platforms = platforms.all;
79   };