infrastructure/nixos/minecraft/bedrock.nix
2024-05-06 12:14:23 -07:00

55 lines
1.7 KiB
Nix

{config, lib, pkgs, ...}: let
inherit (lib.modules) mkIf mkDefault;
cfg = config.services.minecraft-bedrock-server;
in {
services.minecraft-bedrock-server = {
enable = mkDefault true;
serverProperties = {
server-name = "Kat's Server";
online-mode = true;
#allow-cheats = true;
#level-name = "KatBedrock";
level-name = "KatBedrockBeta";
default-player-permission-level = "visitor";
};
packs = let
addons = pkgs.minecraft-bedrock-addons;
in {
tree-capitator-bp.package = addons.true-tree-capitator-bp;
tree-capitator-rp.package = addons.true-tree-capitator-rp;
#tree-capitator-bh.package = addons.definitive-tree-capitator-bh;
#tree-capitator-rs.package = addons.definitive-tree-capitator-rs;
};
allowPlayers = let
base = 2535420000000000;
nums = 1760;
in {
Kyxna = {
xuid = base + 44308966797;
permission = "operator";
};
arcnmx = {
xuid = base + 53399068799;
permission = "operator";
};
"ConnieHeart${toString (base / 1000000000000 + nums)}".xuid = base + 417602225;
};
};
systemd.services.minecraft-bedrock-server = mkIf cfg.enable {
confinement.enable = true;
gensokyo-zone.sharedMounts."minecraft/bedrock" = {config, ...}: {
root = config.rootDir + "/${config.subpath}";
path = mkDefault cfg.dataDir;
};
};
users = mkIf cfg.enable {
users.${cfg.user}.uid = 913;
groups.${cfg.group}.gid = config.users.users.${cfg.user}.uid;
};
networking.firewall.interfaces = let
ports = [ cfg.serverProperties.server-port cfg.serverProperties.server-portv6 ];
in mkIf cfg.enable {
local.allowedUDPPorts = ports;
peeps.allowedUDPPorts = ports;
};
}