infrastructure/modules/system/exports/minecraft-bedrock.nix
2024-04-27 13:31:08 -07:00

40 lines
1.2 KiB
Nix

{lib, gensokyo-zone, ...}: let
inherit (gensokyo-zone.lib) mapAlmostOptionDefaults mkAlmostOptionDefault;
inherit (lib.modules) mkIf;
inherit (lib.attrsets) mapAttrs;
in {
config.exports.services.minecraft-bedrock-server = { config, ... }: let
mkAssertion = f: nixosConfig: let
cfg = nixosConfig.services.minecraft-bedrock-server;
in f nixosConfig cfg;
in {
nixos = {
serviceAttr = "minecraft-bedrock-server";
assertions = mkIf config.enable [
(mkAssertion (nixosConfig: cfg: {
assertion = config.ports.default.port == cfg.serverProperties.server-port;
message = "server-port mismatch";
}))
(mkAssertion (nixosConfig: cfg: {
assertion = config.ports.v6.port == cfg.serverProperties.server-portv6;
message = "server-portv6 mismatch";
}))
];
};
defaults.port.listen = mkAlmostOptionDefault "lan";
ports = mapAttrs (_: mapAlmostOptionDefaults) {
default = {
port = 19132;
transport = "udp";
};
tcp = {
port = config.ports.default.port;
transport = "tcp";
};
v6 = {
port = 19133;
transport = "udp";
};
};
};
}