about summary refs log tree commit diff
path: root/modules/workstation/mail/default.nix
blob: c53128520812c20832f834509bfe90812bf2527a (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
36
37
38
39
40
41
42
43
44
45
46
47
{ pkgs, config, ... }:

let
  maildir = "${config.users.users.qyliss.home}/mail";
  mbsyncrc = pkgs.substituteAll { inherit maildir; src = ./mbsyncrc.in; };

in

{
  imports = [ ./mutt ./notmuch ./postfix ./rss2email ];

  environment.systemPackages = with pkgs; [ isync ];

  systemd.services.mail = {
    path = with pkgs; [ coreutils findutils isync notmuch sudo ];
    serviceConfig.Type = "oneshot";
    after = [ "network-online.target" ];
    script = "sudo -u qyliss-mail mbsync -a -V -c ${mbsyncrc}";
    postStart = ''
      find "${maildir}" \! -name .mbsyncstate* \
                        \( \( \! -user qyliss -o \! -group qyliss \) , \
                           -type f \! -perm 660 -exec chmod 0660 '{}' \; , \
                           -type d \! -perm 770 -exec chmod 0770 '{}' \; \)
      sudo -u qyliss \
          env NOTMUCH_CONFIG=/etc/xdg/nixos/per-user/qyliss/notmuch/config \
          notmuch new
    '';
  };

  systemd.timers.mail = {
    timerConfig.OnCalendar = "*:0/5";
    timerConfig.Persistent = true;
    after = [ "network-online.target" ];
    wantedBy = [ "timers.target" ];
  };

  users.users.qyliss-mail = {
    home = "/var/home/qyliss-mail";
    group = "qyliss";
    createHome = true;
  };

  home.qyliss.dirs.mail = {
    group = "qyliss";
    permissions = "0770";
  };
}