From 6e09a80450925194e0614fe97345efb94d147872 Mon Sep 17 00:00:00 2001
From: lassulus <lassulus@lassul.us>
Date: Fri, 4 Dec 2020 19:20:35 +0100
Subject: [PATCH] exim-retiolum: add system-aliases option

---
 krebs/3modules/exim-retiolum.nix | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/krebs/3modules/exim-retiolum.nix b/krebs/3modules/exim-retiolum.nix
index 118a8b2d5..a16661c9f 100644
--- a/krebs/3modules/exim-retiolum.nix
+++ b/krebs/3modules/exim-retiolum.nix
@@ -10,6 +10,11 @@ with import <stockholm/lib>;
     (s: substring 1 (stringLength s - 2) s)
     (toJSON value);
 
+  to-lsearch = concatMapStrings ({ from, to, ... }: "${from}: ${to}\n");
+  lsearch = mapAttrs (name: set: toFile name (to-lsearch set)) ({
+    inherit (cfg) system-aliases;
+  });
+
 in {
   options.krebs.exim-retiolum = {
     enable = mkEnableOption "krebs.exim-retiolum";
@@ -59,6 +64,19 @@ in {
         };
       };
     };
+    system-aliases = mkOption {
+      type = types.listOf (types.submodule ({
+        options = {
+          from = mkOption {
+            type = types.str; # TODO e-mail address
+          };
+          to = mkOption {
+            type = types.str; # TODO e-mail address / TODO listOf
+          };
+        };
+      }));
+      default = [];
+    };
   };
   imports = [
     {
@@ -145,6 +163,11 @@ in {
 
           begin routers
 
+          system_aliases:
+            debug_print = "R: system_aliases for $local_part@$domain"
+            driver = redirect
+            data = ''${lookup{$local_part}lsearch{${lsearch.system-aliases}}}
+
           local:
             driver = accept
             domains = +local_domains