]> git.immae.eu Git - perso/Immae/Config/Nix.git/blobdiff - flakes/private/openarc/flake.nix
Add private flake for openarc and opendmarc
[perso/Immae/Config/Nix.git] / flakes / private / openarc / flake.nix
diff --git a/flakes/private/openarc/flake.nix b/flakes/private/openarc/flake.nix
new file mode 100644 (file)
index 0000000..6a2518b
--- /dev/null
@@ -0,0 +1,46 @@
+{
+  inputs.openarc = {
+    url = "https://git.immae.eu/perso/Immae/Config/Nix.git";
+    type = "git";
+    dir = "flakes/openarc";
+  };
+  inputs.nixpkgs.url = "github:NixOS/nixpkgs";
+
+  description = "Private configuration for openarc";
+  outputs = { self, nixpkgs, openarc }:
+    let
+      cfg = name': { config, lib, pkgs, name, ... }: lib.mkIf (name == name') {
+        services.openarc = {
+          enable = true;
+          user = "opendkim";
+          socket = "local:${config.myServices.mail.milters.sockets.openarc}";
+          group = config.services.postfix.group;
+          configFile = pkgs.writeText "openarc.conf" ''
+            AuthservID              mail.immae.eu
+            Domain                  mail.immae.eu
+            KeyFile                 ${config.secrets.fullPaths."opendkim/eldiron.private"}
+            Mode                    sv
+            Selector                eldiron
+            SoftwareHeader          yes
+            Syslog                  Yes
+            '';
+        };
+        systemd.services.openarc.serviceConfig.Slice = "mail.slice";
+        systemd.services.openarc.postStart = lib.optionalString
+              (lib.strings.hasPrefix "local:" config.services.openarc.socket) ''
+          while [ ! -S ${lib.strings.removePrefix "local:" config.services.openarc.socket} ]; do
+            sleep 0.5
+          done
+          chmod g+w ${lib.strings.removePrefix "local:" config.services.openarc.socket}
+          '';
+        services.filesWatcher.openarc = {
+          restart = true;
+          paths = [
+            config.secrets.fullPaths."opendkim/eldiron.private"
+          ];
+        };
+      };
+    in
+      openarc.outputs //
+      { nixosModules = openarc.nixosModules or {} // nixpkgs.lib.genAttrs ["eldiron" "backup-2"] cfg; };
+}