python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / games / quake2 / yquake2 / default.nix
blob2e9c09bc62e35e09caed29a7a67b6bb38674a71d
1 { stdenv, lib, fetchFromGitHub, buildEnv, makeWrapper
2 , SDL2, libGL, curl
3 , openalSupport ? true, openal
4 , Cocoa, OpenAL
5 }:
7 let
8   mkFlag = b: if b then "yes" else "no";
10   games = import ./games.nix { inherit stdenv lib fetchFromGitHub; };
12   wrapper = import ./wrapper.nix { inherit stdenv lib buildEnv makeWrapper yquake2; };
14   yquake2 = stdenv.mkDerivation rec {
15     pname = "yquake2";
16     version = "8.10";
18     src = fetchFromGitHub {
19       owner = "yquake2";
20       repo = "yquake2";
21       rev = "QUAKE2_${builtins.replaceStrings ["."] ["_"] version}";
22       sha256 = "sha256-/BbMR/ZPjHbKzQ+I1+Vgh3/zenLjW3TnmrKhKPR6Gdk=";
23     };
25     postPatch = ''
26       substituteInPlace src/client/curl/qcurl.c \
27         --replace "\"libcurl.so.3\", \"libcurl.so.4\"" "\"${curl.out}/lib/libcurl.so\", \"libcurl.so.3\", \"libcurl.so.4\""
28     '' + lib.optionalString (openalSupport && !stdenv.isDarwin) ''
29       substituteInPlace Makefile \
30         --replace "\"libopenal.so.1\"" "\"${openal}/lib/libopenal.so.1\""
31     '';
33     buildInputs = [ SDL2 libGL curl ]
34       ++ lib.optionals stdenv.isDarwin [ Cocoa OpenAL ]
35       ++ lib.optional openalSupport openal;
37     makeFlags = [
38       "WITH_OPENAL=${mkFlag openalSupport}"
39       "WITH_SYSTEMWIDE=yes"
40       "WITH_SYSTEMDIR=$\{out}/share/games/quake2"
41     ];
43     enableParallelBuilding = true;
45     installPhase = ''
46       # Yamagi Quake II expects all binaries (executables and libs) to be in the
47       # same directory.
48       mkdir -p $out/bin $out/lib/yquake2 $out/share/games/quake2/baseq2
49       cp -r release/* $out/lib/yquake2
50       ln -s $out/lib/yquake2/quake2 $out/bin/yquake2
51       ln -s $out/lib/yquake2/q2ded $out/bin/yq2ded
52       cp $src/stuff/yq2.cfg $out/share/games/quake2/baseq2
53     '';
55     meta = with lib; {
56       description = "Yamagi Quake II client";
57       homepage = "https://www.yamagi.org/quake2/";
58       license = licenses.gpl2;
59       platforms = platforms.unix;
60       maintainers = with maintainers; [ tadfisher ];
61     };
62   };
64 in {
65   inherit yquake2;
67   yquake2-ctf = wrapper {
68     games = [ games.ctf ];
69     name = "yquake2-ctf";
70     inherit (games.ctf) description;
71   };
73   yquake2-ground-zero = wrapper {
74     games = [ games.ground-zero ];
75     name = "yquake2-ground-zero";
76     inherit (games.ground-zero) description;
77   };
79   yquake2-the-reckoning = wrapper {
80     games = [ games.the-reckoning ];
81     name = "yquake2-the-reckoning";
82     inherit (games.the-reckoning) description;
83   };
85   yquake2-all-games = wrapper {
86     games = lib.attrValues games;
87     name = "yquake2-all-games";
88     description = "Yamagi Quake II with all add-on games";
89   };