aboutsummaryrefslogtreecommitdiff
path: root/flakes/openarc/private.nix
blob: 5244ca90723eeb1570239d75617394fa959bdf3b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
pkgs:
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
  pkgs.lib.genAttrs ["eldiron" "backup-2"] cfg