summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2024-07-27 16:26:07 -0600
committerAlejandro Soto <alejandro@34project.org>2024-07-27 20:10:01 -0600
commitb63de52f9239a9b91db4ad222945c307158bbac2 (patch)
tree1d36de0de3600e6dd0877eaf63ba518b48139833
parent0fa5efb1ccc638652c829bebd75b774ccd6025b7 (diff)
sys/env, sys/pki: generate full list of certs by path
Diffstat (limited to '')
-rw-r--r--sys/mail/default.nix8
-rw-r--r--sys/pki/by-path.nix15
-rw-r--r--sys/pki/default.nix1
3 files changed, 19 insertions, 5 deletions
diff --git a/sys/mail/default.nix b/sys/mail/default.nix
index 0a888e8..6c1b610 100644
--- a/sys/mail/default.nix
+++ b/sys/mail/default.nix
@@ -92,11 +92,9 @@ in
certLogins =
pkgs.writeText "cert-logins"
- (concatStrings (flatten (mapAttrsToList
- (uuid: names: map
- (addr: ''
- ${uuid}.mail-client@nodomain,${addr}:::::::user=${names.canonical}
- '')
+ (concatLines (flatten (mapAttrsToList
+ (certPath: names: map
+ (addr: "${config.local.pki.byPath.${certPath}.commonName}@nodomain,${addr}:::::::user=${names.canonical}")
names.logins)
(listToAttrs (localCerts ++ vmailCerts)))));
diff --git a/sys/pki/by-path.nix b/sys/pki/by-path.nix
new file mode 100644
index 0000000..baca142
--- /dev/null
+++ b/sys/pki/by-path.nix
@@ -0,0 +1,15 @@
+{ config, lib, ... }:
+with lib; {
+ options.local.pki.byPath = mkOption {
+ type = with lib.types; attrsOf unspecified;
+ readOnly = true;
+ };
+
+ config.local.pki.byPath =
+ let
+ caWithLeaves = ca:
+ singleton { "${ca.path}" = ca; }
+ ++ map (leaf: { "${leaf.path}" = leaf; }) (attrValues ca.leaves);
+ in
+ mergeAttrsList (flatten (map caWithLeaves (attrValues config.local.pki.ca)));
+}
diff --git a/sys/pki/default.nix b/sys/pki/default.nix
index cca5964..75f7e52 100644
--- a/sys/pki/default.nix
+++ b/sys/pki/default.nix
@@ -1,5 +1,6 @@
{
imports = [
./ca.nix
+ ./by-path.nix
];
}