diff options
Diffstat (limited to 'nixpkgs/pkgs/games/papermc/derivation.nix')
-rw-r--r-- | nixpkgs/pkgs/games/papermc/derivation.nix | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/games/papermc/derivation.nix b/nixpkgs/pkgs/games/papermc/derivation.nix new file mode 100644 index 000000000000..50796407c297 --- /dev/null +++ b/nixpkgs/pkgs/games/papermc/derivation.nix @@ -0,0 +1,50 @@ +{ lib, stdenvNoCC, fetchurl, makeBinaryWrapper, jre, version, hash }: + +stdenvNoCC.mkDerivation (finalAttrs: { + pname = "papermc"; + inherit version hash; + + src = + let + version-split = lib.strings.splitString "-" finalAttrs.version; + mcVersion = builtins.elemAt version-split 0; + buildNum = builtins.elemAt version-split 1; + in + fetchurl { + url = "https://papermc.io/api/v2/projects/paper/versions/${mcVersion}/builds/${buildNum}/downloads/paper-${mcVersion}-${buildNum}.jar"; + inherit (finalAttrs) hash; + }; + + installPhase = '' + runHook preInstall + + install -D $src $out/share/papermc/papermc.jar + + makeWrapper ${lib.getExe jre} "$out/bin/minecraft-server" \ + --append-flags "-jar $out/share/papermc/papermc.jar nogui" + + runHook postInstall + ''; + + nativeBuildInputs = [ + makeBinaryWrapper + ]; + + dontUnpack = true; + preferLocalBuild = true; + allowSubstitutes = false; + + passthru = { + updateScript = ./update.py; + }; + + meta = { + description = "High-performance Minecraft Server"; + homepage = "https://papermc.io/"; + sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; + license = lib.licenses.gpl3Only; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ aaronjanse neonfuz MayNiklas ]; + mainProgram = "minecraft-server"; + }; +}) |