about summary refs log tree commit diff
path: root/users/grfn/system/home/modules/email.nix
diff options
context:
space:
mode:
Diffstat (limited to 'users/grfn/system/home/modules/email.nix')
-rw-r--r--users/grfn/system/home/modules/email.nix91
1 files changed, 91 insertions, 0 deletions
diff --git a/users/grfn/system/home/modules/email.nix b/users/grfn/system/home/modules/email.nix
new file mode 100644
index 0000000000..cdfcbecb7c
--- /dev/null
+++ b/users/grfn/system/home/modules/email.nix
@@ -0,0 +1,91 @@
+{ lib, pkgs, config, ... }:
+
+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 = {
+    personal = {
+      primary = true;
+      address = "root@gws.fyi";
+      aliases = [ "grfn@gws.fyi" ];
+      passEntry = "root-gws-msmtp";
+    };
+
+    work = {
+      address = "griffin@readyset.io";
+      passEntry = "readyset/msmtp";
+    };
+
+  };
+
+in {
+  programs.lieer.enable = true;
+  programs.notmuch.enable = true;
+  services.lieer.enable = true;
+  programs.msmtp.enable = true;
+
+  home.packages = with pkgs; [
+    mu
+    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 --path ~/mail/${name}
+      ''}";
+      Environment = "NOTMUCH_CONFIG=${config.home.sessionVariables.NOTMUCH_CONFIG}";
+    };
+
+  }) 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 = mapAttrs (_: params@{ passEntry, ... }: {
+    realName = "Griffin Smith";
+    passwordCommand = "pass ${passEntry}";
+
+    flavor = "gmail.com";
+
+    imapnotify = {
+      enable = true;
+      boxes = [ "Inbox" ];
+    };
+
+    gpg = {
+      key = "0F11A989879E8BBBFDC1E23644EF5B5E861C09A7";
+      signByDefault = true;
+    };
+
+    notmuch.enable = true;
+    lieer = {
+      enable = true;
+      sync = {
+        enable = true;
+        frequency = "*:*";
+      };
+    };
+    msmtp.enable = true;
+  } // builtins.removeAttrs params ["passEntry"]) accounts;
+}