about summary refs log tree commit diff
path: root/users/glittershark/system/home/modules/email.nix
blob: 62c8be19a24e6ea38d3a3367be21d9d5005f7c41 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
{ 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;
  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
      ${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 = 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;
}