about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKloenk <me@kloenk.de>2020-06-02 18:48:53 +0200
committerGitHub <noreply@github.com>2020-06-02 18:48:53 +0200
commit472283589c10ee66539c55a816971c168be8bf7c (patch)
treee6b6e5882b92f9f6109267e5273c6c31a75ee37b
parentb846306950a6577920191af95e52d8b4768bce44 (diff)
minecraft-server: add update script (#88514)
-rw-r--r--pkgs/games/minecraft-server/default.nix8
-rwxr-xr-xpkgs/games/minecraft-server/update.sh21
2 files changed, 26 insertions, 3 deletions
diff --git a/pkgs/games/minecraft-server/default.nix b/pkgs/games/minecraft-server/default.nix
index 956fbdf3aae39..d0ae0a5971760 100644
--- a/pkgs/games/minecraft-server/default.nix
+++ b/pkgs/games/minecraft-server/default.nix
@@ -4,9 +4,9 @@ stdenv.mkDerivation {
   version = "1.15.2";
 
   src = fetchurl {
-    url =
-      "https://launcher.mojang.com/v1/objects/bb2b6b1aefcd70dfd1892149ac3a215f6c636b07/server.jar";
-    sha256 = "12kynrpxgcdg8x12wcvwkxka0fxgm5siqg8qq0nnmv0443f8dkw0";
+    url = "https://launcher.mojang.com/v1/objects/bb2b6b1aefcd70dfd1892149ac3a215f6c636b07/server.jar";
+    # sha1 because that comes from mojang via api
+    sha1 = "bb2b6b1aefcd70dfd1892149ac3a215f6c636b07";
   };
 
   preferLocalBuild = true;
@@ -25,6 +25,8 @@ stdenv.mkDerivation {
 
   phases = "installPhase";
 
+  passthru.updateScript = ./update.sh;
+
   meta = with stdenv.lib; {
     description = "Minecraft Server";
     homepage = "https://minecraft.net";
diff --git a/pkgs/games/minecraft-server/update.sh b/pkgs/games/minecraft-server/update.sh
new file mode 100755
index 0000000000000..433a12a9caf62
--- /dev/null
+++ b/pkgs/games/minecraft-server/update.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl jq common-updater-scripts
+
+BASEDIR="$(dirname "$0")"
+
+# get current release version
+versions=$(curl -s 'https://launchermeta.mojang.com/mc/game/version_manifest.json')
+version=$(echo $versions | jq .latest.release)
+url=$(echo $versions | jq -r ".versions[] | select(.id == $version) | .url")
+
+# get current server.jar
+versions=$(curl -s $url | jq .downloads.server)
+sha1=$(echo $versions | jq .sha1)
+url=$(echo $versions | jq .url)
+
+echo $version: $url:$sha1
+
+# change default.nix
+sed -i "s/version = \"[0-9.]*\";/version = ${version};/g" "$BASEDIR/default.nix"
+sed -i "s+url = \"[a-zA-Z0-9/:.]*/server.jar\";+url = $url;+g" "$BASEDIR/default.nix"
+sed -i "s/sha1 = \"[a-zA-Z0-9]*\";/sha1 = ${sha1};/g" "$BASEDIR/default.nix"