nixos/hosts/wintermute/caddy.nix
Alexander Wainwright 8c06225004 fix(wintermute): update caddy backends for alt's new IP and add packages
Update reverse proxy backends from 192.168.80.4 to 192.168.80.9 for
services still hosted on alt (files, shiori, books, recipes, jelly).
Add avahi and bat to wintermute's packages.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-11 13:11:52 +10:00

60 lines
2.1 KiB
Nix

{ config, pkgs, inputs, lib, ... }:
let
# String = simple site, Attrset = custom site.
sites = {
"analytics.figtree.dev" = "http://192.168.80.1:3300";
"figtree.dev" = "http://192.168.1.63:8080";
"files.figtree.dev" = "http://192.168.80.9:8080";
"git.figtree.dev" = "http://192.168.80.8:3000";
"nc.figtree.dev" = "http://192.168.1.62:11000";
"paperless.figtree.dev" = "http://192.168.1.63:8010";
"photos.figtree.dev" = "http://192.168.80.1:2283";
"shiori.figtree.dev" = "http://192.168.80.9:8234";
"tasks.figtree.dev" = "http://192.168.80.7:3456";
"www.figtree.dev" = "http://192.168.1.63:8080";
"ha.figtree.dev" = "http://192.168.1.50:8123";
# "budget.figtree.dev" = "http://192.168.80.1:5006";
# .lan domains automatically get "tls internal"
"home.lan" = "http://192.168.1.63:3000";
"budget.lan" = "http://192.168.80.1:5006";
"torrent.lan" = "http://192.168.1.65:8080";
"books.lan" = "http://192.168.80.9:8010";
"recipes.lan" = "http://192.168.80.9:8222";
"jelly.lan" = "http://192.168.80.9:8096";
"plex.lan" = "http://192.168.1.63:32400";
};
# Normalize sites:
# 1. Turn strings into { backend = "..."; }.
# 2. Automatically prepend `tls internal` for any domain ending in .lan.
normalizedSites = lib.mapAttrs (domain: siteConfig:
let
baseConfig = if lib.isString siteConfig then { backend = siteConfig; } else siteConfig;
isLanDomain = lib.hasSuffix ".lan" domain;
in
if isLanDomain then
baseConfig // {
extraBefore = ''
tls internal
${lib.optionalString (baseConfig ? extraBefore) baseConfig.extraBefore}
'';
}
else
baseConfig
) sites;
mkVHost = cfg: {
extraConfig = ''
${lib.optionalString (cfg ? extraBefore) cfg.extraBefore}
reverse_proxy ${cfg.backend}
${lib.optionalString (cfg ? extra) cfg.extra}
'';
};
in
{
services.caddy = {
enable = true;
virtualHosts = lib.mapAttrs (_: cfg: mkVHost cfg) normalizedSites;
};
}