Merge pull request #268658 from jtbx/teeworlds-buildClient

teeworlds, ddnet: add buildClient feature flag

Changed files
+40 -10
pkgs
games
ddnet
teeworlds
top-level
+24 -6
pkgs/games/ddnet/default.nix
···
, Cocoa
, OpenGL
, Security
+
, buildClient ? true
}:
stdenv.mkDerivation rec {
···
buildInputs = [
curl
+
libnotify
+
pcre
+
python3
+
sqlite
+
] ++ lib.optionals buildClient ([
freetype
libGLU
-
libnotify
libogg
-
libX11
opusfile
-
pcre
-
python3
SDL2
-
sqlite
wavpack
ffmpeg
x264
···
vulkan-headers
glslang
spirv-tools
-
] ++ lib.optionals stdenv.isDarwin [ Carbon Cocoa OpenGL Security ];
+
] ++ lib.optionals stdenv.isLinux [
+
libX11
+
] ++ lib.optionals stdenv.isDarwin [
+
Carbon
+
Cocoa
+
OpenGL
+
Security
+
]);
postPatch = ''
substituteInPlace src/engine/shared/storage.cpp \
···
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 = "A Teeworlds modification with a unique cooperative gameplay.";
+14 -4
pkgs/games/teeworlds/default.nix
···
, nixosTests
, Carbon
, Cocoa
+
, buildClient ? true
}:
stdenv.mkDerivation rec {
···
nativeBuildInputs = [
cmake
pkg-config
-
] ++ lib.optionals stdenv.isLinux [
+
] ++ lib.optionals (buildClient && stdenv.isLinux) [
icoutils
];
buildInputs = [
-
python3 libGLU SDL2 lua5_3 zlib freetype wavpack
+
python3 lua5_3 zlib
+
] ++ lib.optionals buildClient ([
+
libGLU
+
SDL2
+
freetype
+
wavpack
] ++ lib.optionals stdenv.isLinux [
alsa-lib
libX11
] ++ lib.optionals stdenv.isDarwin [
Carbon
Cocoa
+
]);
+
+
cmakeFlags = [
+
"-DCLIENT=${if buildClient then "ON" else "OFF"}"
];
-
postInstall = lib.optionalString stdenv.isLinux ''
+
postInstall = lib.optionalString buildClient (lib.optionalString stdenv.isLinux ''
# Convert and install desktop icon
mkdir -p $out/share/pixmaps
icotool --extract --index 1 --output $out/share/pixmaps/teeworlds.png $src/other/icons/teeworlds.ico
···
cp '../other/bundle/client/PkgInfo' "$out/Applications/teeworlds.app/Contents/"
ln -s "$out/bin/teeworlds" "$out/Applications/teeworlds.app/Contents/MacOS/"
ln -s "$out/share/teeworlds/data" "$out/Applications/teeworlds.app/Contents/Resources/data"
-
'';
+
'');
passthru.tests.teeworlds = nixosTests.teeworlds;
+2
pkgs/top-level/all-packages.nix
···
ddnet = callPackage ../games/ddnet {
inherit (darwin.apple_sdk.frameworks) Carbon Cocoa OpenGL Security;
+
ddnet-server = ddnet.override { buildClient = false; };
ddns-go = callPackage ../tools/networking/ddns-go { };
···
teeworlds = callPackage ../games/teeworlds {
inherit (darwin.apple_sdk.frameworks) Carbon Cocoa;
+
teeworlds-server = teeworlds.override { buildClient = false; };
tengine = callPackage ../servers/http/tengine {
modules = with nginxModules; [ rtmp dav moreheaders modsecurity ];