{ config, pkgs, lib, ... }: let dnsname = "site3.feal.no"; in { # Defines DDNS_TOKEN and DDNS_SECRET from https://domene.shop/admin?view=api sops.secrets."domeneshop/env" = { }; systemd.services.domeneshop-dyndns = { serviceConfig.EnvironmentFile = config.sops.secrets."domeneshop/env".path; startAt = "*/10 * * * *"; script = '' DNSNAME="${dnsname}" NEW_IP="$(${lib.getExe pkgs.curl} --silent https://ipinfo.io/ip)" OLD_IP="$(${lib.getExe pkgs.getent} hosts "$DNSNAME" | ${lib.getExe pkgs.gawk} '{ print $1 }')" if [[ "$NEW_IP" != "$OLD_IP" ]]; then echo "Old IP ($OLD_IP) does not match new IP ($NEW_IP), updating..." ${lib.getExe pkgs.curl} --silent "https://$DDNS_TOKEN:$DDNS_SECRET@api.domeneshop.no/v0/dyndns/update?hostname=$DNSNAME&myip=$NEW_IP" else echo "Old IP ($OLD_IP) matches new IP ($NEW_IP), exiting..." fi ''; }; }