Skip to content

Commit c0f9d99

Browse files
feat(services): added duckdns service
updates ip every few minutes
1 parent 68545b2 commit c0f9d99

File tree

4 files changed

+38
-2
lines changed

4 files changed

+38
-2
lines changed

configurations/nixos/lab/services/services.nix

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ in
2828
inherit hostName domain;
2929
};
3030
};
31+
duckdns = {
32+
enable = true;
33+
domains = [ "vpn-sua" ];
34+
};
3135
gitweb = {
3236
enable = true;
3337
projectroot = "/zshare/srv/git";

configurations/nixos/lab/sops.nix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
};
2020

2121
# This is the actual specification of the secrets.
22+
secrets."duckdns/token" = { };
2223
secrets."acme/namecheap_api" = { };
2324
};
2425
}

modules/nixos/services/duckdns.nix

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
config,
3+
lib,
4+
...
5+
}:
6+
let
7+
serviceName = "duckdns";
8+
9+
cfg = config.nixos.services.${serviceName};
10+
in
11+
{
12+
options.nixos.services.${serviceName} = {
13+
enable = lib.mkEnableOption ''
14+
Free dynamic dns
15+
'';
16+
domains = lib.mkOption {
17+
type = with lib.types; nullOr (listOf str);
18+
};
19+
};
20+
21+
config = lib.mkIf cfg.enable {
22+
services.duckdns = {
23+
inherit (cfg) domains;
24+
25+
enable = true;
26+
tokenFile = config.sops.secrets."duckdns/token".path;
27+
};
28+
};
29+
}

secrets/secrets.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
#ENC[AES256_GCM,data:NdBMn3Ph1g==,iv:YFJKr0M8dIbsWYO/zvk0oXE537bz3pN4GL0tF6tNnes=,tag:YvhabTs7Cu5lkuNCBperUQ==,type:comment]
33
#ENC[AES256_GCM,data:u++VXxZKR61TJnVwfeN7cjAQuhPSTILnWupUEqj7vz5xPTg3ZtFdZHI=,iv:vx7ZiVyDMWkpDJ1oWIT2TVETPRF+wGq6Kt19rgUMuh0=,tag:GELwcfBxtJeq8i1pO77r2Q==,type:comment]
44
#ENC[AES256_GCM,data:5NyDog==,iv:iYTi4X38ASQhxtcv6qLJu1JC8+baMYNhEOC77JYMne8=,tag:nlASUQAMMvnqPVF6uXXGhw==,type:comment]
5+
duckdns:
6+
token: ENC[AES256_GCM,data:rPYYV8/SL32LbLvQmI7rwlkzrBKvBDUukg7XIHpRG1y0MsrL,iv:ipknOkw5581PJlAd2tSF2H5dIeWBSjhzuKyiZyaBpB0=,tag:TbcUa8oLMZK+1qg3btYQfA==,type:str]
57
acme:
68
namecheap_api: ENC[AES256_GCM,data:qkIxattZ2hB/kwFN5jld20DfKCrIuCy07k7u1Q5PWHvI7U81XDd1+oDKJeY6o64ETc6JIp96Lbi+IjI0JWjGL8LZdhlo/n/RLycPi2SL5YrhreBDa3itPQ==,iv:hOpqPXty7+mxv+sOqk8fb3SgDjR0+T9Q4gpuUsRPFYs=,tag:ICiIT4hMbC7Mn2AeLqfo0Q==,type:str]
79
sops:
@@ -24,7 +26,7 @@ sops:
2426
cmpNZEtJcDlmMHN3eW5iL0FQMktlbG8KVdFj8hAGIJaZgLnO2W0rvNNQyqERMH9p
2527
4hhuaIXeF0TzgqbPvPRkv+qSq4TXhv3AY88Jpyx1TIL6HmuQ9Ut2Sw==
2628
-----END AGE ENCRYPTED FILE-----
27-
lastmodified: "2025-06-06T01:45:19Z"
28-
mac: ENC[AES256_GCM,data:7C82w20jcUyBRyvu4UbLXLHIY94Ya5b4Hk0douW+IaxR7jjFofBtQbrAgry6gIFYLGyLrXbUfL1AZO3yndNBFNH0anQ8Y+777dc5W1x5vvxc39ne6pnU4RBHbmFgqmx9XnMsA+sSZDk3LyURuZpUixP+Pq4+8KSqodeIk7O+p18=,iv:/FIYMzWV94QqgWxcXXh4kmdMk3zmSxmJmv/l89zmuMo=,tag:TE+ikBMNQbyvYgbmgtXTgw==,type:str]
29+
lastmodified: "2025-06-06T04:51:17Z"
30+
mac: ENC[AES256_GCM,data:us95Fg4cx6p4Lqw7HhrCIBzuHOHodlMsKjkZpEj5ZFesagnjC/IV81xFHW1WLhQ+q9gA5cITZQn+eTk0Y8UjS4Lf/rx3n8Q6rdHUDFloOwGHJGrtr/4626fXbLAtUpF79x9ss9ASkF7Z/uFSiDDRbdvswLUKGiBmf4ikiDBz7PQ=,iv:W7SAGQ9t3vTq2Ys1B0zSF5tnCvbNAkSsQ2fQvT1EM9E=,tag:i2kiNRoumZzfBy7SYjPh3Q==,type:str]
2931
unencrypted_suffix: _unencrypted
3032
version: 3.10.2

0 commit comments

Comments
 (0)