Files
Olympus/modules/features/minecraft.nix
2026-04-30 22:15:33 -05:00

93 lines
2.4 KiB
Nix

{ self, ... }: {
flake.nixosModules.minecraft = { config, lib, pkgs, ... }: let
name = "minecraft";
in {
imports = [
self.nixosModules.docker
];
config = {
networking.firewall.allowedTCPPorts = [ 25565 ];
networking.firewall.allowedUDPPorts = [ 25565 ];
virtualisation.oci-containers.containers.minecraft = {
image = "itzg/minecraft-server:java21";
# unstable, waiting for 26.05
#pull = "newer";
hostname = "${name}.esotericbytes.com";
networks = [
"docker-main"
];
ports = [
"25565:25565"
];
volumes = [
"/etc/minecraft/data:/data"
"/etc/minecraft/mods:/mods"
];
labels = {
};
extraOptions = lib.mkMerge [
[ "--ip=192.168.101.27" ]
];
environment = {
EULA = "TRUE";
TYPE = "NEOFORGE";
VERSION = "1.21.1";
NEOFORGE_VERSION = "latest";
MOTD = "Guess who is back?";
DIFFICULTY = "normal";
MEMORY = "8G";
ALLOW_FLIGHT = "true";
#ENABLE_WHITELIST = "false";
#WHITELIST = "";
};
};
systemd.services."docker-minecraft" = {
serviceConfig = {
Restart = lib.mkOverride 90 "always";
RestartMaxDelaySec = lib.mkOverride 90 "1m";
RestartSec = lib.mkOverride 90 "100ms";
RestartSteps = lib.mkOverride 90 9;
};
after = [
"docker-network-setup.service"
];
requires = [
"docker-network-setup.service"
];
partOf = [
"docker-compose-minecraft-root.target"
];
wantedBy = [
"docker-compose-minecraft-root.target"
];
};
systemd.targets."docker-compose-minecraft-root" = {
wantedBy = [ "multi-user.target" ];
};
};
};
}