feat(minecraft-servers): add openFirewall option
This commit is contained in:
parent
48428e8f9e
commit
01d9dfa9e9
1 changed files with 21 additions and 0 deletions
|
@ -8,6 +8,7 @@ in
|
||||||
options.services.minecraft-servers = {
|
options.services.minecraft-servers = {
|
||||||
enable = mkBoolOpt false;
|
enable = mkBoolOpt false;
|
||||||
eula = mkBoolOpt false;
|
eula = mkBoolOpt false;
|
||||||
|
openFirewall = mkBoolOpt false;
|
||||||
dataDir = mkOpt types.path "/srv/minecraft";
|
dataDir = mkOpt types.path "/srv/minecraft";
|
||||||
|
|
||||||
servers = mkOption {
|
servers = mkOption {
|
||||||
|
@ -18,6 +19,8 @@ in
|
||||||
|
|
||||||
autoStart = mkBoolOpt true;
|
autoStart = mkBoolOpt true;
|
||||||
|
|
||||||
|
openFirewall = mkBoolOpt cfg.openFirewall;
|
||||||
|
|
||||||
restart = mkOpt types.str "always";
|
restart = mkOpt types.str "always";
|
||||||
|
|
||||||
whitelist = mkOption {
|
whitelist = mkOption {
|
||||||
|
@ -66,6 +69,24 @@ in
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
networking.firewall =
|
||||||
|
let
|
||||||
|
toOpen = attrsets.filterAttrs (_: cfg: cfg.openFirewall) servers;
|
||||||
|
UDPPorts = attrsets.mapAttrsToList (name: conf: conf.serverProperties.server-port or 25565) toOpen;
|
||||||
|
TCPPorts = concatLists
|
||||||
|
(attrsets.mapAttrsToList
|
||||||
|
(name: conf: with conf;
|
||||||
|
(optional (serverProperties.enable-rcon or false) (serverProperties."rcon.port" or 25575)) ++
|
||||||
|
(optional (serverProperties.enable-query or false) (serverProperties."query.port" or 25565))
|
||||||
|
)
|
||||||
|
toOpen
|
||||||
|
);
|
||||||
|
in
|
||||||
|
rec {
|
||||||
|
allowedUDPPorts = UDPPorts;
|
||||||
|
allowedTCPPorts = UDPPorts ++ TCPPorts;
|
||||||
|
};
|
||||||
|
|
||||||
systemd.services = attrsets.mapAttrs'
|
systemd.services = attrsets.mapAttrs'
|
||||||
(name: conf:
|
(name: conf:
|
||||||
let
|
let
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue