about summary refs log tree commit diff
path: root/nixpkgs/pkgs/games/mindustry
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2020-04-01 15:50:50 +0000
committerAlyssa Ross <hi@alyssa.is>2020-04-01 15:50:50 +0000
commit75eafe97f7df0d653bec67f3962214d7c357831f (patch)
tree09f2cc901e0e637876cbb78d192dfe2fcfef8156 /nixpkgs/pkgs/games/mindustry
parenta53b121bf4331497da63df3b1b7f1a7897dad146 (diff)
parenta2e06fc3423c4be53181b15c28dfbe0bcf67dd73 (diff)
downloadnixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar
nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar.gz
nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar.bz2
nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar.lz
nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar.xz
nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.tar.zst
nixlib-75eafe97f7df0d653bec67f3962214d7c357831f.zip
Merge commit 'a2e06fc3423c4be53181b15c28dfbe0bcf67dd73'
Diffstat (limited to 'nixpkgs/pkgs/games/mindustry')
-rw-r--r--nixpkgs/pkgs/games/mindustry/default.nix53
1 files changed, 38 insertions, 15 deletions
diff --git a/nixpkgs/pkgs/games/mindustry/default.nix b/nixpkgs/pkgs/games/mindustry/default.nix
index 6e6d6b56014f..3d4f52f2c704 100644
--- a/nixpkgs/pkgs/games/mindustry/default.nix
+++ b/nixpkgs/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/";