Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 64 lines 1.5 kB view raw
1{ 2 lib, 3 stdenvNoCC, 4 fetchurl, 5 makeBinaryWrapper, 6 jre, 7 version, 8 hash, 9 udev, 10}: 11 12stdenvNoCC.mkDerivation (finalAttrs: { 13 pname = "papermc"; 14 inherit version hash; 15 16 src = 17 let 18 version-split = lib.strings.splitString "-" finalAttrs.version; 19 mcVersion = builtins.elemAt version-split 0; 20 buildNum = builtins.elemAt version-split 1; 21 in 22 fetchurl { 23 url = "https://api.papermc.io/v2/projects/paper/versions/${mcVersion}/builds/${buildNum}/downloads/paper-${mcVersion}-${buildNum}.jar"; 24 inherit (finalAttrs) hash; 25 }; 26 27 installPhase = '' 28 runHook preInstall 29 30 install -D $src $out/share/papermc/papermc.jar 31 32 makeWrapper ${lib.getExe jre} "$out/bin/minecraft-server" \ 33 --append-flags "-jar $out/share/papermc/papermc.jar nogui" \ 34 ${lib.optionalString stdenvNoCC.hostPlatform.isLinux "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ udev ]}"} 35 36 runHook postInstall 37 ''; 38 39 nativeBuildInputs = [ 40 makeBinaryWrapper 41 ]; 42 43 dontUnpack = true; 44 preferLocalBuild = true; 45 allowSubstitutes = false; 46 47 passthru = { 48 updateScript = ./update.py; 49 }; 50 51 meta = { 52 description = "High-performance Minecraft Server"; 53 homepage = "https://papermc.io/"; 54 sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; 55 license = lib.licenses.gpl3Only; 56 platforms = lib.platforms.unix; 57 maintainers = with lib.maintainers; [ 58 aaronjanse 59 neonfuz 60 MayNiklas 61 ]; 62 mainProgram = "minecraft-server"; 63 }; 64})