infrastructure/modules/system/exports/minecraft-bedrock.nix
2024-05-13 15:31:34 -07:00

41 lines
1.1 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";
};
v6 = {
port = 19133;
transport = "udp";
};
};
};
}