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"