45 lines
1.1 KiB
Nix
45 lines
1.1 KiB
Nix
|
{
|
||
|
flake,
|
||
|
config,
|
||
|
pkgs,
|
||
|
lib,
|
||
|
...
|
||
|
}:
|
||
|
with lib; let
|
||
|
psCfg = config.pub-solar;
|
||
|
xdg = config.home-manager.users."${psCfg.user.name}".xdg;
|
||
|
|
||
|
getIP4 = with pkgs; writeShellScriptBin "getIP" ''
|
||
|
${curl}/bin/curl -4 https://ipcheck-ds.wieistmeineip.de/callback/ | ${coreutils}/bin/tail -c +2 | ${coreutils}/bin/head -c -1 | ${jq}/bin/jq '.ip' -r
|
||
|
'';
|
||
|
getIP6 = with pkgs; writeShellScriptBin "getIP" ''
|
||
|
${curl}/bin/curl -6 https://ipcheck-ds.wieistmeineip.de/callback/ | ${coreutils}/bin/tail -c +2 | ${coreutils}/bin/head -c -1 | ${jq}/bin/jq '.ip' -r
|
||
|
'';
|
||
|
in {
|
||
|
imports = [
|
||
|
flake.self.nixosModules.ddclient
|
||
|
];
|
||
|
|
||
|
services.ddclient = {
|
||
|
enable = true;
|
||
|
protocol = "dyndns1";
|
||
|
domains = [
|
||
|
"pie.b12f.io"
|
||
|
"droppie.b12f.io"
|
||
|
];
|
||
|
server = "ddns.hosting.de";
|
||
|
username = "b12f";
|
||
|
usev4 = "cmdv4, cmdv4=${getIP4}/bin/getIP";
|
||
|
usev6 = "cmdv6, cmdv6=${getIP6}/bin/getIP";
|
||
|
verbose = true;
|
||
|
passwordFile = "/run/agenix/dyndns.key";
|
||
|
interval = "1min";
|
||
|
};
|
||
|
|
||
|
age.secrets."dyndns.key" = {
|
||
|
file = "${flake.self}/secrets/dyndns.key";
|
||
|
mode = "400";
|
||
|
owner = "root";
|
||
|
};
|
||
|
}
|