{ config, ... }: let data = import ../../data; in { age.secrets.readeck.file = ../../secrets/readeck.age; services.readeck = { enable = true; environmentFile = config.age.secrets.readeck.path; settings = { server = { host = "unix:/run/web/readeck.sock?mode=0660"; base_url = "https://read.${data.tailnet}"; }; email = { host = "localhost"; port = 587; from = "readeck@${data.pubnet}"; from_noreply = "noreply+readeck@${data.pubnet}"; }; auth.forwarded = { enabled = true; provisioning = false; header_user = "X-Webauth-User"; header_email = "X-Webauth-Email"; }; }; }; services.caddy.virtualHosts = { "read.${data.tailnet}" = { extraConfig = '' bind tailscale/read tls { get_certificate tailscale } tailscale_auth reverse_proxy { to unix//run/web/readeck.sock header_up X-Webauth-User {http.auth.user.tailscale_login} header_up X-Webauth-Email {http.auth.user.tailscale_user} } ''; }; }; systemd.services.readeck.serviceConfig = { SupplementaryGroups = [ "webservice" ]; }; }