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/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 e2ec10fda097..0a4e6728c301 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -37672,6 +37672,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 { }; @@ -38458,6 +38459,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 ];