{ 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.buildLayeredImage { name = "minecraft"; tag = minecraft.version; fromImage = common.alpine.base; contents = [ minecraft ]; }; in { networking.firewall.allowedTCPPorts = [ minecraftPort ]; # TODO: put global ports and streamed images into foundation virtualisation.oci-containers.containers.minecraft = { imageFile = minecraftImage; image = "minecraft:${minecraft.version}"; # expose minecraft service port globally. ports = [ "0.0.0.0:${toString minecraftPort}:${toString minecraftPort}" ]; volumes = [ "${minecraftDir}:/server" ]; workdir = "/server"; entrypoint = "${minecraft}/bin/minecraft-server"; cmd = [ "-Xms${minecraftMemory}" "-Xmx${minecraftMemory}" ]; }; }