From 98d9103503c12bb5aa98f195f7918dbd1bc53088 Mon Sep 17 00:00:00 2001 From: dish Date: Mon, 16 Mar 2026 21:36:00 -0400 Subject: [PATCH] [prefect] refactor a lot of the caddy config generation --- hosts/prefect/services/caddy.nix | 121 ++++++++----------------------- lib/caddy.nix | 47 ++++++++++++ lib/default.nix | 5 +- 3 files changed, 80 insertions(+), 93 deletions(-) create mode 100644 lib/caddy.nix diff --git a/hosts/prefect/services/caddy.nix b/hosts/prefect/services/caddy.nix index 23bcccdc..1daae671 100644 --- a/hosts/prefect/services/caddy.nix +++ b/hosts/prefect/services/caddy.nix @@ -1,10 +1,33 @@ { pkgs, self, ... }: let pns = self.lib.data.services; - inherit (self.lib.data) mail; marvin = "http://${self.lib.data.hosts.marvin.ts.ip4}"; marvinIP = self.lib.data.hosts.marvin.ts.ip4; - inherit (self.lib.data) tsNet; + + anubisHosts = self.lib.caddy.mkAnubisSites [ + # keep-sorted start + "git" + "grafana" + "miniflux" + "nextcloud" + "planka" + # keep-sorted end + ]; + + tsHosts = self.lib.caddy.mkTsSites [ + # keep-sorted start + "shelfmark" + "pinchflat" + # keep-sorted end + ]; + + directHosts = self.lib.caddy.mkDirectSites [ + # keep-sorted start + "booklore" + "tangled-knot" + "tangled-spindle" + # keep-sorted end + ]; in { services.caddy = { @@ -150,56 +173,6 @@ in }; # SIMPLE HOSTS - # Forgejo - ${pns.git.extUrl} = { - extraConfig = '' - reverse_proxy ${marvin}:${toString pns.git.anubis} { - header_up X-Real-Ip {remote_host} - header_up X-Http-Version {http.request.proto} - } - ''; - }; - - # Grafana - ${pns.grafana.extUrl} = { - extraConfig = '' - reverse_proxy ${marvin}:${toString pns.grafana.anubis} { - header_up X-Real-Ip {remote_host} - header_up X-Http-Version {http.request.proto} - } - ''; - }; - - # Miniflux - ${pns.miniflux.extUrl} = { - extraConfig = '' - reverse_proxy ${marvin}:${toString pns.miniflux.anubis} { - header_up X-Real-Ip {remote_host} - header_up X-Http-Version {http.request.proto} - } - ''; - }; - - # Nextcloud - ${pns.nextcloud.extUrl} = { - extraConfig = '' - reverse_proxy ${marvin}:${toString pns.nextcloud.anubis} { - header_up X-Real-Ip {remote_host} - header_up X-Http-Version {http.request.proto} - } - ''; - }; - - # Planka - ${pns.planka.extUrl} = { - extraConfig = '' - reverse_proxy ${marvin}:${toString pns.planka.anubis} { - header_up X-Real-Ip {remote_host} - header_up X-Http-Version {http.request.proto} - } - ''; - }; - # Paperless-NGX ${pns.paperless.extUrl} = { extraConfig = '' @@ -224,46 +197,10 @@ in reverse_proxy ${marvin}:${toString pns.immich.port} ''; }; - - # Booklore - ${pns.booklore.extUrl} = { - extraConfig = '' - reverse_proxy ${marvin}:${toString pns.booklore.port} - ''; - }; - - # Tangled Services - ${pns.tangled-knot.extUrl} = { - extraConfig = '' - reverse_proxy ${marvin}:${toString pns.tangled-knot.port} - ''; - }; - ${pns.tangled-spindle.extUrl} = { - extraConfig = '' - reverse_proxy ${marvin}:${toString pns.tangled-spindle.port} - ''; - }; - - # Simple Tailscale Hosts - - # Pinchflat - "${pns.pinchflat.tsHost}.${tsNet}" = { - extraConfig = '' - bind tailscale/${pns.pinchflat.tsHost} - tailscale_auth - reverse_proxy ${marvin}:${toString pns.pinchflat.port} - ''; - }; - - # Shelfmark - "${pns.shelfmark.tsHost}.${tsNet}" = { - extraConfig = '' - bind tailscale/${pns.shelfmark.tsHost} - tailscale_auth - reverse_proxy ${marvin}:${toString pns.shelfmark.port} - ''; - }; - }; + } + // anubisHosts + // tsHosts + // directHosts; # Blog/SSH Config globalConfig = '' filesystem blog-repo git ${marvin}:${toString pns.git.port}/pyrox/new-blog { diff --git a/lib/caddy.nix b/lib/caddy.nix new file mode 100644 index 00000000..35b3cf02 --- /dev/null +++ b/lib/caddy.nix @@ -0,0 +1,47 @@ +{ lib, self, ... }: +let + + pns = self.lib.data.services; + marvinIP = self.lib.data.hosts.marvin.ts.ip4; + marvin = "http://${marvinIP}"; + inherit (self.lib.data) tsNet; + +in +rec { + mkHosts = function: services: lib.listToAttrs (map function services); + + mkAnubis = + service: + lib.nameValuePair "${pns.${service}.extUrl}" { + extraConfig = '' + reverse_proxy ${marvin}:${toString pns.${service}.anubis} { + header_up X-Real-Ip {remote_host} + header_up X-Http-Version {http.request.proto} + } + ''; + }; + + mkAnubisSites = services: mkHosts mkAnubis services; + + mkTs = + service: + lib.nameValuePair "${pns.${service}.tsHost}.${tsNet}" { + extraConfig = '' + bind tailscale/${pns.${service}.tsHost} + tailscale_auth + reverse_proxy ${marvin}:${toString pns.${service}.port} + ''; + }; + + mkTsSites = services: mkHosts mkTs services; + + mkDirect = + service: + lib.nameValuePair "${pns.${service}.extUrl}" { + extraConfig = '' + reverse_proxy ${marvin}:${toString pns.${service}.port} + ''; + }; + + mkDirectSites = services: mkHosts mkDirect services; +} diff --git a/lib/default.nix b/lib/default.nix index 67d00ab0..366fb61f 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,5 +1,8 @@ _: { flake = { - lib.data = import ./data; + lib = { + caddy = import ./caddy.nix; + data = import ./data; + }; }; } -- 2.51.2