stdenv: fix documentation for stripAllFlags and stripDebugFlags (#352127)
[NixPkgs.git] / pkgs / games / quake2 / yquake2 / default.nix
blob08d3c3e40dbef785b36959a2eeae1f3da7816fb4
2   stdenv,
3   lib,
4   fetchFromGitHub,
5   buildEnv,
6   makeWrapper,
7   copyDesktopItems,
8   makeDesktopItem,
9   SDL2,
10   libGL,
11   curl,
12   openalSupport ? true,
13   openal,
14   Cocoa,
15   OpenAL,
18 let
19   mkFlag = b: if b then "yes" else "no";
21   games = import ./games.nix { inherit stdenv lib fetchFromGitHub; };
23   wrapper = import ./wrapper.nix {
24     inherit
25       stdenv
26       lib
27       buildEnv
28       makeWrapper
29       yquake2
30       copyDesktopItems
31       makeDesktopItem
32       ;
33   };
35   yquake2 = stdenv.mkDerivation rec {
36     pname = "yquake2";
37     version = "8.41";
39     src = fetchFromGitHub {
40       owner = "yquake2";
41       repo = "yquake2";
42       rev = "QUAKE2_${builtins.replaceStrings [ "." ] [ "_" ] version}";
43       sha256 = "sha256-8xvY8XYZJa/gAVcxR+ffpE8naUTbGyM8AyAdpG6nKtA=";
44     };
46     postPatch =
47       ''
48         substituteInPlace src/client/curl/qcurl.c \
49           --replace "\"libcurl.so.3\", \"libcurl.so.4\"" "\"${curl.out}/lib/libcurl.so\", \"libcurl.so.3\", \"libcurl.so.4\""
50       ''
51       + lib.optionalString (openalSupport && !stdenv.hostPlatform.isDarwin) ''
52         substituteInPlace Makefile \
53           --replace "\"libopenal.so.1\"" "\"${openal}/lib/libopenal.so.1\""
54       '';
56     buildInputs =
57       [
58         SDL2
59         libGL
60         curl
61       ]
62       ++ lib.optionals stdenv.hostPlatform.isDarwin [
63         Cocoa
64         OpenAL
65       ]
66       ++ lib.optional openalSupport openal;
68     makeFlags = [
69       "WITH_OPENAL=${mkFlag openalSupport}"
70       "WITH_SYSTEMWIDE=yes"
71       "WITH_SYSTEMDIR=$\{out}/share/games/quake2"
72     ];
74     nativeBuildInputs = [ copyDesktopItems ];
76     enableParallelBuilding = true;
78     installPhase = ''
79       runHook preInstall
80       # Yamagi Quake II expects all binaries (executables and libs) to be in the
81       # same directory.
82       mkdir -p $out/bin $out/lib/yquake2 $out/share/games/quake2/baseq2
83       cp -r release/* $out/lib/yquake2
84       ln -s $out/lib/yquake2/quake2 $out/bin/yquake2
85       ln -s $out/lib/yquake2/q2ded $out/bin/yq2ded
86       cp $src/stuff/yq2.cfg $out/share/games/quake2/baseq2
87       install -Dm644 stuff/icon/Quake2.png $out/share/pixmaps/yamagi-quake2.png;
88       runHook postInstall
89     '';
91     desktopItems = [
92       (makeDesktopItem {
93         name = "yquake2";
94         exec = "yquake2";
95         icon = "yamagi-quake2";
96         desktopName = "yquake2";
97         comment = "Yamagi Quake II client";
98         categories = [
99           "Game"
100           "Shooter"
101         ];
102       })
103     ];
105     meta = with lib; {
106       description = "Yamagi Quake II client";
107       homepage = "https://www.yamagi.org/quake2/";
108       license = licenses.gpl2Plus;
109       platforms = platforms.unix;
110       maintainers = with maintainers; [ tadfisher ];
111     };
112   };
116   inherit yquake2;
118   yquake2-ctf = wrapper {
119     games = [ games.ctf ];
120     name = "yquake2-ctf";
121     inherit (games.ctf) description;
122   };
124   yquake2-ground-zero = wrapper {
125     games = [ games.ground-zero ];
126     name = "yquake2-ground-zero";
127     inherit (games.ground-zero) description;
128   };
130   yquake2-the-reckoning = wrapper {
131     games = [ games.the-reckoning ];
132     name = "yquake2-the-reckoning";
133     inherit (games.the-reckoning) description;
134   };
136   yquake2-all-games = wrapper {
137     games = lib.attrValues games;
138     name = "yquake2-all-games";
139     description = "Yamagi Quake II with all add-on games";
140   };