1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
{ lib
, stdenv
, fetchFromGitHub
, cargo
, cmake
, ninja
, pkg-config
, rustPlatform
, rustc
, curl
, freetype
, libGLU
, libnotify
, libogg
, libX11
, opusfile
, pcre
, python3
, SDL2
, sqlite
, wavpack
, ffmpeg
, x264
, vulkan-headers
, vulkan-loader
, glslang
, spirv-tools
, gtest
, Carbon
, Cocoa
, OpenGL
, Security
, buildClient ? true
}:
stdenv.mkDerivation rec {
pname = "ddnet";
version = "18.1";
src = fetchFromGitHub {
owner = "ddnet";
repo = pname;
rev = version;
hash = "sha256-kAMKeYYMCFMgG3+G/05DwA3mj4JkJdrXadjFUMPDAbM=";
};
cargoDeps = rustPlatform.fetchCargoTarball {
name = "${pname}-${version}";
inherit src;
hash = "sha256-8mUo2I5FsA3ym/hrlGaUW8yltLuh/0H6wetCbzvRga0=";
};
nativeBuildInputs = [
cmake
ninja
pkg-config
rustc
cargo
rustPlatform.cargoSetupHook
];
nativeCheckInputs = [
gtest
];
buildInputs = [
curl
libnotify
pcre
python3
sqlite
] ++ lib.optionals buildClient ([
freetype
libGLU
libogg
opusfile
SDL2
wavpack
ffmpeg
x264
vulkan-loader
vulkan-headers
glslang
spirv-tools
] ++ lib.optionals stdenv.isLinux [
libX11
] ++ lib.optionals stdenv.isDarwin [
Carbon
Cocoa
OpenGL
Security
]);
postPatch = ''
substituteInPlace src/engine/shared/storage.cpp \
--replace /usr/ $out/
'';
cmakeFlags = [
"-DAUTOUPDATE=OFF"
"-DCLIENT=${if buildClient then "ON" else "OFF"}"
];
doCheck = true;
checkTarget = "run_tests";
postInstall = lib.optionalString (!buildClient) ''
# DDNet's CMakeLists.txt automatically installs .desktop
# shortcuts and icons for the client, even if the client
# is not supposed to be built
rm -rf $out/share/applications
rm -rf $out/share/icons
rm -rf $out/share/metainfo
'';
meta = with lib; {
description = "Teeworlds modification with a unique cooperative gameplay";
longDescription = ''
DDraceNetwork (DDNet) is an actively maintained version of DDRace,
a Teeworlds modification with a unique cooperative gameplay.
Help each other play through custom maps with up to 64 players,
compete against the best in international tournaments,
design your own maps, or run your own server.
'';
homepage = "https://ddnet.org";
license = licenses.asl20;
maintainers = with maintainers; [ sirseruju lom ncfavier ];
mainProgram = "DDNet";
};
}
|