forked from aylac.top/nixcfg
this repo has no description
1{ 2 config, 3 lib, 4 ... 5}: let 6 name = "uptime-kuma"; 7 cfg = config.myNixOS.services.${name}; 8 9 inherit (config.mySnippets) aylac-top; 10 inherit (config.mySnippets) tailnet; 11 12 publicNetwork = aylac-top; 13 privateNetwork = tailnet; 14in { 15 options.myNixOS.services.${name} = { 16 enable = lib.mkEnableOption "${name} server"; 17 autoProxy = lib.mkOption { 18 default = true; 19 example = false; 20 description = "${name} auto proxy"; 21 type = lib.types.bool; 22 }; 23 publicProxy = lib.mkOption { 24 default = "caddy"; 25 example = "cf"; 26 description = "Public proxy provider for ${name}"; 27 type = lib.types.enum ["none" "cf" "caddy"]; 28 }; 29 }; 30 31 config = lib.mkIf cfg.enable { 32 services = { 33 caddy.virtualHosts = { 34 "${privateNetwork.networkMap.${name}.vHost}".extraConfig = lib.mkIf cfg.autoProxy '' 35 bind tailscale/${name} 36 encode zstd gzip 37 reverse_proxy ${privateNetwork.networkMap.${name}.hostName}:${toString privateNetwork.networkMap.${name}.port} 38 ''; 39 40 "${publicNetwork.networkMap.${name}.vHost}" = lib.mkIf (cfg.publicProxy == "caddy") { 41 extraConfig = '' 42 encode gzip zstd 43 reverse_proxy ${publicNetwork.networkMap.${name}.hostName}:${toString publicNetwork.networkMap.${name}.port} 44 ''; 45 }; 46 }; 47 48 cloudflared.tunnels."${publicNetwork.cloudflareTunnel}".ingress = lib.mkIf (cfg.publicProxy == "cf") { 49 "${publicNetwork.networkMap.pds.vHost}" = "http://${publicNetwork.networkMap.pds.hostName}"; 50 }; 51 52 uptime-kuma = { 53 enable = true; 54 appriseSupport = true; 55 56 settings = { 57 PORT = toString publicNetwork.networkMap.${name}.port; 58 HOST = "0.0.0.0"; 59 }; 60 }; 61 }; 62 }; 63}