char/topaz-flake
git clone https://git.t4t.associates/char/topaz-flake
d0b247a
main
1{ config , lib , pkgs , ...} : 2let 3domain = "irc.t4t.associates" ; 4cert = config . security . acme . certs .${ domain }; 5in 6{ 7security . acme . certs .${ domain } = { 8server = "https://dv.acme-v02.api.pki.goog/directory" ; 9extraLegoFlags = [ "--eab" ]; 10environmentFile = "/var/lib/secrets/google-acme.env" ; 11group = "irc-certs" ; 12reloadServices = [ "ergochat.service" ]; 13}; 14 15services . nginx . virtualHosts .${ domain } = { 16enableACME = true ; 17locations . "/" . return = "404" ; 18}; 19 20users . groups . irc-certs . members = [ "nginx" ]; 21 22services . ergochat = { 23enable = true ; 24settings = { 25allow-environment-overrides = true ; 26network . name = "t4t.associates" ; 27server = { 28name = domain ; 29# The module otherwise retains its default plaintext listener. 30listeners = lib . mkForce { 31"127.0.0.1:16697" = { 32proxy = true ; 33tls = { 34cert = " ${ cert . directory } /fullchain.pem" ; 35key = " ${ cert . directory } /key.pem" ; 36}; 37}; 38}; 39proxy-allowed-from = [ "127.0.0.1/32" ]; 40}; 41accounts = { 42registration = { 43enabled = true ; 44allow-before-connect = true ; 45}; 46require-sasl . enabled = false ; 47}; 48api = { 49enabled = true ; 50listener = "127.0.0.1:8089" ; 51}; 52logging = [ 53{ 54method = "stdout" ; 55type = "* -userinput -useroutput" ; 56level = "info" ; 57} 58]; 59}; 60}; 61 62systemd . services . ergochat = { 63requires = [ "acme- ${ domain } .service" ]; 64after = [ "acme- ${ domain } .service" ]; 65serviceConfig = { 66# Ergo's reload notification lacks MONOTONIC_USEC, required by notify-reload. 67Type = lib . mkForce "notify" ; 68ExecReload = " ${ pkgs . coreutils } /bin/kill -HUP $MAINPID" ; 69EnvironmentFile = "/var/lib/secrets/ergo.env" ; 70SupplementaryGroups = [ "irc-certs" ]; 71StateDirectoryMode = "0700" ; 72Restart = "on-failure" ; 73RestartSec = "5s" ; 74}; 75}; 76}