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

@ -14,7 +14,6 @@
./profiles/wireguard.nix ./profiles/wireguard.nix
./profiles/restic-server.nix ./profiles/restic-server.nix
./profiles/autologin.nix ./profiles/autologin.nix
./profiles/ssh-public-port-2050.nix
inputs.impermanence.nixosModules.impermanence inputs.impermanence.nixosModules.impermanence
inputs.stylix.nixosModules.stylix inputs.stylix.nixosModules.stylix
@ -110,6 +109,16 @@
'') '')
]; ];
own.natpmp-portforward = {
enable = true;
mappings = [
{
public = 2050;
local = 22;
}
];
};
nixpkgs.config = { nixpkgs.config = {
# rocmSupport = true; # rocmSupport = true;
allowUnfreePredicate = pkg: allowUnfreePredicate = pkg:

View file

@ -1,17 +0,0 @@
{pkgs, ...}: {
systemd.services.ssh-port2050-natpmp = {
bindsTo = ["sshd.socket"];
after = ["sshd.socket"];
wantedBy = ["multi-user.target"];
serviceConfig.Restart = "on-failure";
serviceConfig.ExecStart = pkgs.writeScript "ssh-port2050-natpmp" ''
#!${pkgs.bash}/bin/bash
while true
do
${pkgs.libnatpmp}/bin/natpmpc -a 2050 22 tcp 60
${pkgs.coreutils}/bin/sleep 30
done
'';
};
}

View file

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