dotfiles/nixos/modules/services/minecraft.nix

90 lines
2.3 KiB
Nix
Raw Normal View History

2024-10-06 15:25:05 -05:00
{
config,
flake,
...
}: let
inherit (flake.config.system.device) server;
2024-10-19 18:22:29 -05:00
inherit (flake.config.service.instance) minecraft;
service = minecraft;
2024-10-06 15:25:05 -05:00
in {
services = {
minecraft-server = {
enable = true;
eula = true;
openFirewall = true;
declarative = true;
serverProperties = {
2024-10-19 18:22:29 -05:00
"rcon.password" = config.sops.secrets."${service.name}-pass".path;
2024-10-06 15:25:05 -05:00
allow-flight = false;
allow-nether = true;
difficulty = 2;
enable-command-block = false;
enable-rcon = true;
enable-status = true;
force-gamemode = true;
gamemode = 0;
generate-structures = true;
hardcore = false;
hide-online-players = false;
level-name = "Brix on Nix";
level-seed = "9064150133272194";
max-players = 10;
max-world-size = 64000000;
motd = "A cool Minecraft server powered by NixOS";
online-mode = true;
pvp = true;
2024-10-19 18:22:29 -05:00
server-port = service.ports.port0;
2024-10-06 15:25:05 -05:00
spawn-animals = true;
spawn-monsters = true;
spawn-npcs = true;
spawn-protection = 16;
view-dtstance = 32;
white-list = true;
};
whitelist = {
Hefty_Chungus = "b75a9816-d408-4c54-b226-385b59ea1cb3";
Hefty_Chungus_Jr = "c3bf8cac-e953-4ea4-ae5f-7acb92a51a85";
EclipseMoon01 = "adef4af7-d8c6-4627-b492-e990ea1bb993";
Fallaryn = "d8baa117-ab58-4b07-92a5-48fb1978eb49";
};
};
};
sops = let
sopsSecrets = ["pass"];
sopsPath = secret: {
2024-10-19 18:22:29 -05:00
path = "${service.sops.path0}/${service.name}-${secret}";
owner = service.name;
2024-10-06 15:25:05 -05:00
mode = "600";
};
in {
secrets = builtins.listToAttrs (
map
(secret: {
2024-10-19 18:22:29 -05:00
name = "${service.name}-${secret}";
2024-10-06 15:25:05 -05:00
value = sopsPath secret;
})
sopsSecrets
);
};
2024-10-19 18:22:29 -05:00
fileSystems."/var/lib/${service.name}" = {
device = service.paths.path0;
2024-10-06 15:25:05 -05:00
fsType = "none";
options = ["bind"];
depends = [server.storage0.mount];
};
systemd.tmpfiles.rules = [
2024-10-19 18:22:29 -05:00
"Z ${service.paths.path0} 0755 ${service.name} ${service.name} -"
"Z ${service.sops.path0} 0755 ${service.name} ${service.name} -"
2024-10-06 15:25:05 -05:00
];
networking = {
firewall = {
allowedTCPPorts = [
2024-10-19 18:22:29 -05:00
service.ports.port0
2024-10-06 15:25:05 -05:00
];
};
};
}