{ pkgs, auxiliaryPkgs, ... }: let inherit (pkgs) dockerTools; inherit (auxiliaryPkgs) common; minecraft = pkgs.minecraft-server.overrideAttrs { version = "1.21.4"; src = pkgs.fetchurl { url = "https://piston-data.mojang.com/v1/objects/4707d00eb834b446575d89a61a11b5d548d8c001/server.jar"; hash = "sha256-EGaXCwnpxnGERXIpHEqHHMGsK4WDi/cAT6DneOEPE1g="; }; }; minecraftPort = 25565; minecraftDir = "/srv/mc"; minecraftMemory = "8G"; minecraftImage = dockerTools.streamLayeredImage { name = "minecraft"; tag = minecraft.version; fromImage = common.alpine.base; contents = [ minecraft ]; }; in { networking.firewall.allowedTCPPorts = [ minecraftPort ]; foundation.services.minecraft = { image = minecraftImage; ports = [ (common.globalPort minecraftPort) ]; volumes = [ [ "${minecraftDir}" "/server" ] ]; workdir = "/server"; entrypoint = "${minecraft}/bin/minecraft-server"; cmd = [ "-Xms${minecraftMemory}" "-Xmx${minecraftMemory}" ]; }; }