From 472283589c10ee66539c55a816971c168be8bf7c Mon Sep 17 00:00:00 2001
From: Kloenk <me@kloenk.de>
Date: Tue, 2 Jun 2020 18:48:53 +0200
Subject: [PATCH] minecraft-server: add update script (#88514)

---
 pkgs/games/minecraft-server/default.nix |  8 +++++---
 pkgs/games/minecraft-server/update.sh   | 21 +++++++++++++++++++++
 2 files changed, 26 insertions(+), 3 deletions(-)
 create mode 100755 pkgs/games/minecraft-server/update.sh

diff --git a/pkgs/games/minecraft-server/default.nix b/pkgs/games/minecraft-server/default.nix
index 956fbdf3aae..d0ae0a59717 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 00000000000..433a12a9caf
--- /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"