home-assistant-custom-components.homematicip_local: 1.73.0 -> 1.74.0 (#364289)
[NixPkgs.git] / pkgs / games / ddnet / default.nix
blob7ab1ef89e2e77d912d81af827f4470f979a36f9b
2   lib,
3   stdenv,
4   fetchFromGitHub,
5   cargo,
6   cmake,
7   ninja,
8   pkg-config,
9   rustPlatform,
10   rustc,
11   apple-sdk_11,
12   curl,
13   freetype,
14   libGLU,
15   libnotify,
16   libogg,
17   libX11,
18   opusfile,
19   pcre,
20   python3,
21   SDL2,
22   sqlite,
23   wavpack,
24   ffmpeg,
25   x264,
26   vulkan-headers,
27   vulkan-loader,
28   glslang,
29   spirv-tools,
30   gtest,
31   buildClient ? true,
34 stdenv.mkDerivation rec {
35   pname = "ddnet";
36   version = "18.7";
38   src = fetchFromGitHub {
39     owner = "ddnet";
40     repo = pname;
41     rev = version;
42     hash = "sha256-mOXD7lEggFus+TBZ5042QALu4PhHRBntnChQFnHu6Dw=";
43   };
45   cargoDeps = rustPlatform.fetchCargoTarball {
46     name = "${pname}-${version}";
47     inherit src;
48     hash = "sha256-zug7MzxqGhlmm6ZeRo+3ldwmFEn5cVCb+nvRzomFrnc=";
49   };
51   nativeBuildInputs = [
52     cmake
53     ninja
54     pkg-config
55     rustc
56     cargo
57     rustPlatform.cargoSetupHook
58   ];
60   nativeCheckInputs = [
61     gtest
62   ];
64   buildInputs =
65     [
66       curl
67       libnotify
68       pcre
69       python3
70       sqlite
71     ]
72     ++ lib.optionals buildClient (
73       [
74         freetype
75         libGLU
76         libogg
77         opusfile
78         SDL2
79         wavpack
80         ffmpeg
81         x264
82         vulkan-loader
83         vulkan-headers
84         glslang
85         spirv-tools
86       ]
87       ++ lib.optionals stdenv.hostPlatform.isLinux [
88         libX11
89       ]
90       ++ lib.optionals stdenv.hostPlatform.isDarwin [
91         apple-sdk_11
92       ]
93     );
95   postPatch = ''
96     substituteInPlace src/engine/shared/storage.cpp \
97       --replace /usr/ $out/
98   '';
100   cmakeFlags = [
101     "-DAUTOUPDATE=OFF"
102     "-DCLIENT=${if buildClient then "ON" else "OFF"}"
103   ];
105   # Tests loop forever on Darwin for some reason
106   doCheck = !stdenv.hostPlatform.isDarwin;
107   checkTarget = "run_tests";
109   postInstall = lib.optionalString (!buildClient) ''
110     # DDNet's CMakeLists.txt automatically installs .desktop
111     # shortcuts and icons for the client, even if the client
112     # is not supposed to be built
113     rm -rf $out/share/applications
114     rm -rf $out/share/icons
115     rm -rf $out/share/metainfo
116   '';
118   preFixup = lib.optionalString stdenv.hostPlatform.isDarwin ''
119     # Upstream links against <prefix>/lib while it installs this library in <prefix>/lib/ddnet
120     install_name_tool -change "$out/lib/libsteam_api.dylib" "$out/lib/ddnet/libsteam_api.dylib" "$out/bin/DDNet"
121   '';
123   meta = with lib; {
124     description = "Teeworlds modification with a unique cooperative gameplay";
125     longDescription = ''
126       DDraceNetwork (DDNet) is an actively maintained version of DDRace,
127       a Teeworlds modification with a unique cooperative gameplay.
128       Help each other play through custom maps with up to 64 players,
129       compete against the best in international tournaments,
130       design your own maps, or run your own server.
131     '';
132     homepage = "https://ddnet.org";
133     license = licenses.asl20;
134     maintainers = with maintainers; [
135       sirseruju
136       lom
137       ncfavier
138     ];
139     mainProgram = "DDNet";
140   };