From 2fdbababe10005da0096bde70cf84697d95e3637 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Mon, 20 Nov 2023 17:46:07 +1300 Subject: [PATCH 1/2] teeworlds: add buildClient feature flag Allows for only building the Teeworlds server (for example, in a headless environment). This gets rid of a great deal of dependencies which would be unneccessary in a headless server. Also added the package "teeworlds-server" in all-packages.nix, defined as an override. --- pkgs/games/teeworlds/default.nix | 18 ++++++++++++++---- pkgs/top-level/all-packages.nix | 1 + 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pkgs/games/teeworlds/default.nix b/pkgs/games/teeworlds/default.nix index e12c19f6cb6a..a915832fdbe9 100644 --- a/pkgs/games/teeworlds/default.nix +++ b/pkgs/games/teeworlds/default.nix @@ -3,6 +3,7 @@ , nixosTests , Carbon , Cocoa +, buildClient ? true }: stdenv.mkDerivation rec { @@ -38,21 +39,30 @@ 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 @@ -68,7 +78,7 @@ stdenv.mkDerivation rec { 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; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6934627702a0..ba828ef47136 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -38467,6 +38467,7 @@ with pkgs; 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 ]; From 9c0e68d9a82216f1e4bcf3376aa05da0bde58ce7 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Mon, 20 Nov 2023 20:36:44 +1300 Subject: [PATCH 2/2] ddnet: add buildClient feature flag see 2fdbababe10005da0096bde70cf84697d95e3637 --- pkgs/games/ddnet/default.nix | 32 +++++++++++++++++++++++++------- pkgs/top-level/all-packages.nix | 1 + 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/pkgs/games/ddnet/default.nix b/pkgs/games/ddnet/default.nix index 98da304c85ab..6a6fc63e8c40 100644 --- a/pkgs/games/ddnet/default.nix +++ b/pkgs/games/ddnet/default.nix @@ -30,6 +30,7 @@ , Cocoa , OpenGL , Security +, buildClient ? true }: stdenv.mkDerivation rec { @@ -64,16 +65,16 @@ stdenv.mkDerivation rec { buildInputs = [ curl - freetype - libGLU libnotify - libogg - libX11 - opusfile pcre python3 - SDL2 sqlite + ] ++ lib.optionals buildClient ([ + freetype + libGLU + libogg + opusfile + SDL2 wavpack ffmpeg x264 @@ -81,7 +82,14 @@ stdenv.mkDerivation rec { 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 \ @@ -90,11 +98,21 @@ stdenv.mkDerivation rec { 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."; longDescription = '' diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ba828ef47136..f1bfe80d208c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -37681,6 +37681,7 @@ with pkgs; 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 { };