about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorFrancesco Gazzetta <fgaz@fgaz.me>2020-01-26 16:14:02 +0100
committerMilan <me@pbb.lc>2020-01-30 14:19:55 +0100
commit770756e74ca4a1f0915ebaa83984bd3275eba4fd (patch)
tree34cddd54a13b3578af8cfd1f40d619516f50edd9 /pkgs
parent32718c9992f5b49fbe6fb81bfc3dd3cc8316a3a8 (diff)
downloadnixlib-770756e74ca4a1f0915ebaa83984bd3275eba4fd.tar
nixlib-770756e74ca4a1f0915ebaa83984bd3275eba4fd.tar.gz
nixlib-770756e74ca4a1f0915ebaa83984bd3275eba4fd.tar.bz2
nixlib-770756e74ca4a1f0915ebaa83984bd3275eba4fd.tar.lz
nixlib-770756e74ca4a1f0915ebaa83984bd3275eba4fd.tar.xz
nixlib-770756e74ca4a1f0915ebaa83984bd3275eba4fd.tar.zst
nixlib-770756e74ca4a1f0915ebaa83984bd3275eba4fd.zip
mindustry,mindustry-server: make it possible to choose what to build
So that headless servers do not need to pull in the pulseaudio
dependency
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/games/mindustry/default.nix53
-rw-r--r--pkgs/top-level/all-packages.nix5
2 files changed, 43 insertions, 15 deletions
diff --git a/pkgs/games/mindustry/default.nix b/pkgs/games/mindustry/default.nix
index 6e6d6b56014f..3d4f52f2c704 100644
--- a/pkgs/games/mindustry/default.nix
+++ b/pkgs/games/mindustry/default.nix
@@ -12,6 +12,8 @@
 # any build is allowed, so this parameter acts as a simple whitelist.
 # Takes the package version and returns the build version.
 , makeBuildVersion ? (v: v)
+, enableClient ? true
+, enableServer ? true
 }:
 
 let
@@ -52,6 +54,9 @@ let
     pname = "${pname}-deps";
     inherit version src postPatch;
     nativeBuildInputs = [ gradle_5 perl ];
+    # Here we build both the server and the client so we only have to specify
+    # one hash for 'deps'. Deps can be garbage collected after the build,
+    # so this is not really an issue.
     buildPhase = ''
       export GRADLE_USER_HOME=$(mktemp -d)
       gradle --no-daemon desktop:dist -Pbuildversion=${buildVersion}
@@ -68,31 +73,49 @@ let
     outputHash = "16k058fw9yk89adx8j1708ynfri5yizmmvh49prls9slw4hipffb";
   };
 
-in stdenv.mkDerivation rec {
-  inherit pname version src postPatch;
-
-  nativeBuildInputs = [ gradle_5 makeWrapper ];
-
-  buildPhase = ''
-    export GRADLE_USER_HOME=$(mktemp -d)
-    # point to offline repo
-    sed -ie "s#mavenLocal()#mavenLocal(); maven { url '${deps}' }#g" build.gradle
+  # Separate commands for building and installing the server and the client
+  buildClient = ''
     gradle --offline --no-daemon desktop:dist -Pbuildversion=${buildVersion}
+  '';
+  buildServer = ''
     gradle --offline --no-daemon server:dist -Pbuildversion=${buildVersion}
   '';
-
-  installPhase = ''
+  installClient = ''
     install -Dm644 desktop/build/libs/Mindustry.jar $out/share/mindustry.jar
-    install -Dm644 server/build/libs/server-release.jar $out/share/mindustry-server.jar
-    mkdir $out/bin
+    mkdir -p $out/bin
     makeWrapper ${jre}/bin/java $out/bin/mindustry \
       --prefix LD_LIBRARY_PATH : ${libpulseaudio}/lib \
       --add-flags "-jar $out/share/mindustry.jar"
-    makeWrapper ${jre}/bin/java $out/bin/mindustry-server \
-      --add-flags "-jar $out/share/mindustry-server.jar"
     install -Dm644 core/assets/icons/icon_64.png $out/share/icons/hicolor/64x64/apps/mindustry.png
     install -Dm644 ${desktopItem}/share/applications/Mindustry.desktop $out/share/applications/Mindustry.desktop
   '';
+  installServer = ''
+    install -Dm644 server/build/libs/server-release.jar $out/share/mindustry-server.jar
+    mkdir -p $out/bin
+    makeWrapper ${jre}/bin/java $out/bin/mindustry-server \
+      --add-flags "-jar $out/share/mindustry-server.jar"
+  '';
+
+in
+assert stdenv.lib.assertMsg (enableClient || enableServer)
+  "mindustry: at least one of 'enableClient' and 'enableServer' must be true";
+stdenv.mkDerivation rec {
+  inherit pname version src postPatch;
+
+  nativeBuildInputs = [ gradle_5 makeWrapper ];
+
+  buildPhase = with stdenv.lib; ''
+    export GRADLE_USER_HOME=$(mktemp -d)
+    # point to offline repo
+    sed -ie "s#mavenLocal()#mavenLocal(); maven { url '${deps}' }#g" build.gradle
+    ${optionalString enableClient buildClient}
+    ${optionalString enableServer buildServer}
+  '';
+
+  installPhase = with stdenv.lib; ''
+    ${optionalString enableClient installClient}
+    ${optionalString enableServer installServer}
+  '';
 
   meta = with stdenv.lib; {
     homepage = "https://mindustrygame.github.io/";
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index c0dcc5a03c9f..d60fa665e0db 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -23133,6 +23133,11 @@ in
 
   mindustry = callPackage ../games/mindustry { };
 
+  mindustry-server = callPackage ../games/mindustry {
+    enableClient = false;
+    enableServer = true;
+  };
+
   minecraft = callPackage ../games/minecraft { };
 
   minecraft-server = callPackage ../games/minecraft-server { };