diff options
| author | Mel <einebeere@gmail.com> | 2024-12-03 18:45:38 +0100 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2024-12-03 18:45:38 +0100 |
| commit | fa964a8d1ab2dc83386f457b51b2de87b68cbe70 (patch) | |
| tree | ebb790ed9bd6abbe688498e8085ddcea7769e749 /services | |
| parent | 3c3781365a4c9ce9770deb21229a39cf352f1025 (diff) | |
| download | network-fa964a8d1ab2dc83386f457b51b2de87b68cbe70.tar.zst network-fa964a8d1ab2dc83386f457b51b2de87b68cbe70.zip | |
Add Minecraft server service module
Signed-off-by: Mel <einebeere@gmail.com>
Diffstat (limited to 'services')
| -rw-r--r-- | services/minecraft.nix | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/services/minecraft.nix b/services/minecraft.nix new file mode 100644 index 0000000..29e8e00 --- /dev/null +++ b/services/minecraft.nix @@ -0,0 +1,49 @@ +{ 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}" + ]; + }; +} |
