{ 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"; }; }