diff options
Diffstat (limited to 'users/glittershark/system/home/modules')
-rw-r--r-- | users/glittershark/system/home/modules/email.nix | 111 |
1 files changed, 72 insertions, 39 deletions
diff --git a/users/glittershark/system/home/modules/email.nix b/users/glittershark/system/home/modules/email.nix index 80c5385e69ae..62c8be19a24e 100644 --- a/users/glittershark/system/home/modules/email.nix +++ b/users/glittershark/system/home/modules/email.nix @@ -1,6 +1,31 @@ -{ pkgs, ... }: -{ - # programs.mbsync.enable = true; +{ lib, pkgs, ... }: + +with lib; + +let + + # from home-manager/modules/services/lieer.nix + escapeUnitName = name: + let + good = upperChars ++ lowerChars ++ stringToCharacters "0123456789-_"; + subst = c: if any (x: x == c) good then c else "-"; + in stringAsChars subst name; + + accounts = { + work = { + primary = true; + address = "griffin@urbint.com"; + aliases = [ "grfn@urbint.com" ]; + passEntry = "urbint/msmtp-app-password"; + }; + + personal = { + address = "root@gws.fyi"; + passEntry = "root-gws-msmtp"; + }; + }; + +in { programs.lieer.enable = true; programs.notmuch.enable = true; services.lieer.enable = true; @@ -11,44 +36,52 @@ msmtp ]; + nixpkgs.overlays = [(self: super: { + notifymuch = self.python3Packages.callPackage ../../pkgs/notifymuch.nix {}; + })]; + + systemd.user.services = mapAttrs' (name: account: { + name = escapeUnitName "lieer-${name}"; + value.Service.ExecStart = mkForce "${pkgs.writeShellScript "sync-${name}" '' + ${pkgs.gmailieer}/bin/gmi sync + ${pkgs.notifymuch}/bin/notifymuch + ''}"; + }) accounts; + + xdg.configFile."notifymuch/notifymuch.cfg".text = generators.toINI {} { + notifymuch = { + query = "is:unread and is:important"; + mail_client = ""; + recency_interval_hours = "48"; + hidden_tags = "inbox unread attachment replied sent encrypted signed"; + }; + }; + accounts.email.maildirBasePath = "mail"; - accounts.email.accounts = - let - mkAccount = params@{ passEntry, ... }: { - realName = "Griffin Smith"; - passwordCommand = "pass ${passEntry}"; - - flavor = "gmail.com"; - - imapnotify = { - enable = true; - boxes = [ "Inbox" ]; - }; - - gpg = { - key = "0F11A989879E8BBBFDC1E23644EF5B5E861C09A7"; - signByDefault = true; - }; - - # mbsync.enable = true; - notmuch.enable = true; - lieer = { - enable = true; - sync.enable = true; - }; - msmtp.enable = true; - } // builtins.removeAttrs params ["passEntry"]; - in { - work = mkAccount { - primary = true; - address = "griffin@urbint.com"; - aliases = [ "grfn@urbint.com" ]; - passEntry = "urbint/msmtp-app-password"; - }; + accounts.email.accounts = mapAttrs (_: params@{ passEntry, ... }: { + realName = "Griffin Smith"; + passwordCommand = "pass ${passEntry}"; + + flavor = "gmail.com"; + + imapnotify = { + enable = true; + boxes = [ "Inbox" ]; + }; + + gpg = { + key = "0F11A989879E8BBBFDC1E23644EF5B5E861C09A7"; + signByDefault = true; + }; - personal = mkAccount { - address = "root@gws.fyi"; - passEntry = "root-gws-msmtp"; + notmuch.enable = true; + lieer = { + enable = true; + sync = { + enable = true; + frequency = "*:*"; }; }; + msmtp.enable = true; + } // builtins.removeAttrs params ["passEntry"]) accounts; } |