make natpmp module thing work

This commit is contained in:
xunuwu 2025-10-22 09:26:14 +02:00
parent c6df96cfea
commit d84d25bf0c
Signed by: xun
SSH key fingerprint: SHA256:Uot/1WoAjWAeqLOHA5vYy4phhVydsH7jCPmBjaPZfgI
3 changed files with 31 additions and 37 deletions

View file

@ -8,23 +8,25 @@
in {
options.own.natpmp-portforward = {
enable = lib.mkEnableOption "enable natpmp port forwarding service";
mappings = lib.types.listOf (lib.types.submodule {
options = {
public = lib.mkOption {
type = lib.types.port;
mappings = lib.mkOption {
type = lib.types.listOf (lib.types.submodule {
options = {
public = lib.mkOption {
type = lib.types.port;
};
local = lib.mkOption {
type = lib.types.port;
};
protocol = lib.mkOption {
default = "tcp";
type = lib.types.enum [
"tcp"
"udp"
];
};
};
private = lib.mkOption {
type = lib.types.port;
};
protocol = lib.mkOption {
default = "tcp";
type = lib.types.enum [
"tcp"
"udp"
];
};
};
});
});
};
};
config = lib.mkIf cfg.enable {
@ -35,10 +37,10 @@ in {
ExecStart = pkgs.writeScript "natpmp-portforward" ''
#!${pkgs.bash}/bin/bash
"${lib.concatMapStrings (x: ''
${pkgs.libnatpmp}/bin/natpmpc -a ${x.public} ${x.private} ${x.protocol} 60
${lib.concatMapStrings (x: ''
${pkgs.libnatpmp}/bin/natpmpc -a ${toString x.public} ${toString x.local} ${x.protocol} 180
'')
cfg.mappings}"
cfg.mappings}
'';
};
};