diff options
| author | Alejandro Soto <alejandro@34project.org> | 2023-01-07 01:26:07 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2023-01-07 01:27:24 -0600 |
| commit | fd156bcd3028a42b6d6a56dc1956d934bf8ea2c9 (patch) | |
| tree | f525580ba7091d55c7fea1da43422fb1621c9082 /env | |
| parent | 8902317d7f6d20361d96212a5e41621e90df8b67 (diff) | |
env/acme: move domains, certs out of dmz
Diffstat (limited to 'env')
| -rw-r--r-- | env/acme/default.nix | 44 | ||||
| -rw-r--r-- | env/acme/domains.nix | 12 | ||||
| -rw-r--r-- | env/default.nix | 1 |
3 files changed, 57 insertions, 0 deletions
diff --git a/env/acme/default.nix b/env/acme/default.nix new file mode 100644 index 0000000..779b4e2 --- /dev/null +++ b/env/acme/default.nix @@ -0,0 +1,44 @@ +{ config, lib, ... }: +with lib; let + cfg = config.local; +in +{ + options.local = with types; { + domains = mkOption { + type = attrsOf (attrsOf str); + }; + + certs = mapAttrs + (_: _: { + enable = mkEnableOption "TLS cert for ${name}"; + }) + cfg.domains; + }; + + config = { + security.acme = { + acceptTerms = true; + + defaults = { + email = "security@${config.networking.domain}"; + renewInterval = "weekly"; + }; + + certs = + let + domainSort = sort (a: b: splitString "." a < splitString "." b); + + certConfig = domains: { + domain = domains.main; + extraDomainNames = domainSort (attrValues (filterAttrs (k: _: k != "main") domains)); + webroot = "/var/lib/acme/acme-challenge"; + }; + in + mapAttrs' + (_: value: nameValuePair value.main (certConfig value)) + (filterAttrs (name: _: cfg.certs.${name}.enable) cfg.domains); + }; + + local.domains = import ./domains.nix; + }; +} diff --git a/env/acme/domains.nix b/env/acme/domains.nix new file mode 100644 index 0000000..0412391 --- /dev/null +++ b/env/acme/domains.nix @@ -0,0 +1,12 @@ +{ + host = { + main = "34project.org"; + www = "www.34project.org"; + mail = "mail.34project.org"; + }; + + smtp.main = "smtp.34project.org"; + imap.main = "imap.34project.org"; + + git.main = "git.cluster451.org"; +} diff --git a/env/default.nix b/env/default.nix index 0290518..ab68406 100644 --- a/env/default.nix +++ b/env/default.nix @@ -1,6 +1,7 @@ { lib, ... }: with lib; { imports = [ + ./acme ./users ]; } |
