blob: 77cb09b5cf9c7468d7d8e2ce18dd5525ffcd6b46 [file] [log] [blame]
Skyler Grey252927a2022-10-18 22:18:15 +01001{ pkgs
2, config
3, username
Skyler Grey252927a2022-10-18 22:18:15 +01004, home
5, lib
6, ...
Skyler Grey8753c522022-09-02 00:04:02 +01007}: {
8 home = {
Skyler Grey8753c522022-09-02 00:04:02 +01009 accounts.email = {
10 maildirBasePath = "Mail";
11 accounts = {
12 collabora = {
13 astroid = {
14 enable = true;
15 sendMailCommand = "${pkgs.msmtp}/bin/msmtpq --read-envelope-from --read-recipients";
16 };
17 msmtp.enable = true;
18 aerc = {
19 enable = true;
20 extraAccounts = {
21 source = "notmuch://~/${home.accounts.email.maildirBasePath}/collabora";
22 };
23 };
Skyler Grey7fdf72e2023-02-26 13:03:33 +000024 himalaya = {
25 enable = true;
26 backend = "imap";
27 sender = "smtp";
28 };
Skyler Grey8753c522022-09-02 00:04:02 +010029 neomutt.enable = true;
30 mbsync = {
31 enable = true;
32 create = "maildir";
33 };
34 notmuch.enable = true;
35 address = "skyler.grey@collabora.com";
36 imap = {
37 host = "mail.collabora.com";
38 port = 143;
39 tls.useStartTls = true;
40 };
41 smtp = {
42 host = "mail.collabora.com";
43 port = 587;
44 tls.useStartTls = true;
45 };
46 userName = "skyler";
47 realName = "Skyler Grey";
48 primary = true;
49 signature = {
50 showSignature = "append";
51 text = ''
52 Miss Skyler Grey
53 Intern
54
55 Collabora Ltd.
56 Platinum Building, St John's Innovation Park, Cambridge CB4 0DS, UK
57 Registered in England & Wales, no. 5513718'';
58 };
59 passwordCommand = "${pkgs.coreutils}/bin/cat ${config.sops.secrets.collaboraPassword.path}";
60 };
61 };
62 };
63 programs.astroid.enable = true;
64 programs.msmtp.enable = true;
65 services.mbsync = {
66 enable = true;
67 postExec = "${pkgs.notmuch}/bin/notmuch new";
68 };
69 programs.mbsync.enable = true;
70 programs.himalaya.enable = true;
71 programs.neomutt = {
72 enable = true;
73 sidebar.enable = true;
74 settings = {
75 preferred_languages = "en";
76 };
Skyler Greyd464dc52023-02-13 07:55:35 +000077 vimKeys = true;
Skyler Grey8753c522022-09-02 00:04:02 +010078 extraConfig = ''
79 auto_view text/html
Skyler Greyd464dc52023-02-13 07:55:35 +000080
81 set virtual_spoolfile = yes
82
83 unmailboxes *
84 virtual-mailboxes "Inbox" "notmuch://?query=tag:inbox and not tag:deleted"
85 virtual-mailboxes "Unread" "notmuch://?query=tag:unread and tag:inbox and not tag:deleted&type=threads"
86 virtual-mailboxes "Trash" "notmuch://?query=tag:deleted"
87
88 bind pager,index l modify-tags
89
90 shutdown-hook "source ${./email/notmuch-new-retag.sh}|"
91 folder-hook ".*" "source ${./email/notmuch-new-retag.sh}|"
92
93 source ${./email/neomutt-theme.muttrc}
Skyler Grey8753c522022-09-02 00:04:02 +010094 '';
95 };
Skyler Greyd464dc52023-02-13 07:55:35 +000096 programs.notmuch = {
97 enable = true;
98 new.tags = [ "unread" "new" ];
99 hooks.postNew = builtins.readFile ./email/notmuch-new-retag.sh;
100 };
Skyler Grey8753c522022-09-02 00:04:02 +0100101 programs.aerc = {
102 enable = true;
103 extraConfig.general.unsafe-accounts-conf = true;
Skyler Grey252927a2022-10-18 22:18:15 +0100104 extraBinds = lib.pipe ./email/aerc-default-binds.toml [ builtins.readFile builtins.fromTOML ];
105 extraConfig.filters =
106 let
107 defaultFilters = lib.pipe "${pkgs.aerc}/share/aerc/filters" [
108 builtins.readDir
109 builtins.attrNames
110 (builtins.map (f: {
111 name = f;
112 value = "${pkgs.aerc}/share/aerc/filters/${f}";
113 }))
114 builtins.listToAttrs
115 ];
116 in
Skyler Greya9addb32022-10-31 00:22:55 +0000117 with defaultFilters; {
118 "text/plain" = colorize;
119 "text/calendar" = defaultFilters."show-ics-details.py";
120 "text/html" = html;
121 };
Skyler Grey8753c522022-09-02 00:04:02 +0100122 };
Skyler Grey252927a2022-10-18 22:18:15 +0100123 home.packages = with pkgs; [ lynx ];
Skyler Grey8753c522022-09-02 00:04:02 +0100124 home.file.".mailcap".text = ''
125 text/html; ${pkgs.lynx}/bin/lynx -force_html -dump %s; copiousoutput
126 image/*; ${pkgs.kitty}/bin/kitty +kitten icat && read -r -n1 key
127 '';
Skyler Greyd464dc52023-02-13 07:55:35 +0000128 home.file.".config/neomutt/themes/one-half-dark.muttrc".text =
129 builtins.readFile ./email/neomutt-theme.muttrc;
Skyler Grey8753c522022-09-02 00:04:02 +0100130 home.shellAliases = {
131 mutt = "${pkgs.neomutt}/bin/neomutt";
132 };
133 };
134 config = {
135 sops.secrets.collaboraPassword = {
136 mode = "0400";
137 owner = config.users.users.${username}.name;
138 group = config.users.users.nobody.group;
139 };
Skyler Grey252927a2022-10-18 22:18:15 +0100140 environment.persistence."/nix/persist".users.${username}.directories = [ "Mail" ];
Skyler Grey8753c522022-09-02 00:04:02 +0100141 };
142}