summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2024-12-03 18:45:38 +0100
committerMel <einebeere@gmail.com>2024-12-03 18:45:38 +0100
commitfa964a8d1ab2dc83386f457b51b2de87b68cbe70 (patch)
treeebb790ed9bd6abbe688498e8085ddcea7769e749
parent3c3781365a4c9ce9770deb21229a39cf352f1025 (diff)
downloadnetwork-fa964a8d1ab2dc83386f457b51b2de87b68cbe70.tar.zst
network-fa964a8d1ab2dc83386f457b51b2de87b68cbe70.zip
Add Minecraft server service module
Signed-off-by: Mel <einebeere@gmail.com>
-rw-r--r--machines/renard/default.nix1
-rw-r--r--services/minecraft.nix49
2 files changed, 50 insertions, 0 deletions
diff --git a/machines/renard/default.nix b/machines/renard/default.nix
index 07140a8..e44c776 100644
--- a/machines/renard/default.nix
+++ b/machines/renard/default.nix
@@ -11,6 +11,7 @@
../../modules/git.nix
../../services/cgit.nix
+ ../../services/minecraft.nix
../../services/irc
];
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}"
+ ];
+ };
+}