diff options
author | Alyssa Ross <hi@alyssa.is> | 2019-02-22 22:26:06 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2019-02-22 22:26:06 +0000 |
commit | 5499dcef8b4c5d098384d1ff57061d1970e8d07c (patch) | |
tree | af4f5d61626b709a6bd5cf9398189f047b7e95e4 /modules | |
parent | 768bc58b26fdea93e3f341124c5ec70b446c3f6e (diff) | |
download | nixlib-5499dcef8b4c5d098384d1ff57061d1970e8d07c.tar nixlib-5499dcef8b4c5d098384d1ff57061d1970e8d07c.tar.gz nixlib-5499dcef8b4c5d098384d1ff57061d1970e8d07c.tar.bz2 nixlib-5499dcef8b4c5d098384d1ff57061d1970e8d07c.tar.lz nixlib-5499dcef8b4c5d098384d1ff57061d1970e8d07c.tar.xz nixlib-5499dcef8b4c5d098384d1ff57061d1970e8d07c.tar.zst nixlib-5499dcef8b4c5d098384d1ff57061d1970e8d07c.zip |
isync: fix permissions of new mail
Diffstat (limited to 'modules')
-rw-r--r-- | modules/workstation/mail/isync/default.nix | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/modules/workstation/mail/isync/default.nix b/modules/workstation/mail/isync/default.nix index 1ec41d8e13c2..326a3bc31ec8 100644 --- a/modules/workstation/mail/isync/default.nix +++ b/modules/workstation/mail/isync/default.nix @@ -4,27 +4,30 @@ { environment.systemPackages = with pkgs; [ isync ]; - systemd.services.isync = + systemd.services.isync = let - mbsyncrc = pkgs.writeText "mbsyncrc" (import ./mbsyncrc.nix { - maildir = "${config.users.users.qyliss.home}/mail"; - }); - in { - serviceConfig = { - Type = "oneshot"; - User = "qyliss-mail"; - ExecStart = '' - ${pkgs.isync}/bin/mbsync -a -c ${mbsyncrc} - ''; - }; + maildir = "${config.users.users.qyliss.home}/mail"; + mbsyncrc = pkgs.writeText "mbsyncrc" + (import ./mbsyncrc.nix { inherit maildir; }); + in with pkgs; { + serviceConfig.Type = "oneshot"; + script = '' + ${sudo}/bin/sudo -u qyliss-mail \ + ${isync}/bin/mbsync -a -c ${mbsyncrc} + ''; + postStart = '' + ${findutils}/bin/find \ + "${maildir}" \ + -not -name .mbsyncstate \ + -exec ${coreutils}/bin/chown qyliss:qyliss '{}' \; + ''; }; systemd.timers.isync = { - timerConfig = { - Unit = "isync.service"; - OnCalendar = "*:0/5"; - Persistent = "true"; - }; + timerConfig.Unit = "isync.service"; + timerConfig.OnCalendar = "*:0/5"; + timerConfig.Persistent = "true"; + after = [ "networking.target" ]; wantedBy = [ "multi-user.target" ]; }; } |