92 lines
2.4 KiB
Nix
92 lines
2.4 KiB
Nix
{ pkgs, config, lib, ... }:
|
|
|
|
{
|
|
options = {
|
|
modules.homelab.docker.ddns.enable = lib.mkEnableOption "enable ddns docker";
|
|
};
|
|
|
|
config = lib.mkIf config.modules.homelab.docker.ddns.enable {
|
|
let
|
|
api_token = builtins.readFile /home/blake/.keyring/ddns/api_token;
|
|
zone_id_blakedheld = builtins.readFile /home/blake/.keyring/ddns/zone_id_blakedheld;
|
|
zone_id_recoil = builtins.readFile /home/blake/.keyring/ddns/zone_id_recoil;
|
|
|
|
# define the config file
|
|
ddns_cfg = pkgs.writeText "config.json" ''
|
|
{
|
|
"cloudflare": [
|
|
{
|
|
"authentication": {
|
|
"api_token": "${api_token}"
|
|
},
|
|
"zone_id": "${zone_id_blakedheld}",
|
|
"subdomains": [
|
|
{
|
|
"name": "@",
|
|
"proxied": true
|
|
},
|
|
{
|
|
"name": "*",
|
|
"proxied": true
|
|
},
|
|
{
|
|
"name": "git",
|
|
"proxied": false
|
|
}
|
|
|
|
]
|
|
},
|
|
{
|
|
"authentication": {
|
|
"api_token": "${api_token}"
|
|
},
|
|
"zone_id": "${zone_id_recoil}",
|
|
"subdomains": [
|
|
{
|
|
"name": "@",
|
|
"proxied": true
|
|
},
|
|
{
|
|
"name": "*",
|
|
"proxied": true
|
|
},
|
|
{
|
|
"name": "mc",
|
|
"proxied": true
|
|
},
|
|
{
|
|
"name": "smp",
|
|
"proxied": true
|
|
},
|
|
{
|
|
"name": "superflat",
|
|
"proxied": false
|
|
},
|
|
{
|
|
"name": "skyblock",
|
|
"proxied": false
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"a": true,
|
|
"aaaa": true,
|
|
"purgeUnknownRecords": false
|
|
}
|
|
'';
|
|
in
|
|
{
|
|
virtualisation.docker.containers.ddns = {
|
|
image = "timothyjmiller/cloudflare-ddns:latest";
|
|
containerName = "ddns";
|
|
restartPolicy = "unless-stopped";
|
|
hostNetwork = true;
|
|
environment = { PUID = "1000"; PGID = "1000"; };
|
|
volumes = [ "${ddns_cfg}:/config.json" ];
|
|
securityOpt = [ "no-new-privileges:true" ];
|
|
};
|
|
}
|
|
};
|
|
}
|
|
|