about summary refs log tree commit diff
path: root/modules
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2019-02-22 22:26:06 +0000
committerAlyssa Ross <hi@alyssa.is>2019-02-22 22:26:06 +0000
commit5499dcef8b4c5d098384d1ff57061d1970e8d07c (patch)
treeaf4f5d61626b709a6bd5cf9398189f047b7e95e4 /modules
parent768bc58b26fdea93e3f341124c5ec70b446c3f6e (diff)
downloadnixlib-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.nix37
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" ];
   };
 }