aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--home/profiles/base/default.nix1
-rw-r--r--home/profiles/messaging/default.nix172
2 files changed, 171 insertions, 2 deletions
diff --git a/home/profiles/base/default.nix b/home/profiles/base/default.nix
index fd34090..9c97d5f 100644
--- a/home/profiles/base/default.nix
+++ b/home/profiles/base/default.nix
@@ -85,6 +85,7 @@ in
pkgs.hydra-check
pkgs.libnotify
pkgs.nix-tree
+ pkgs.pass
pkgs.procs
pkgs.sops
pkgs.tree
diff --git a/home/profiles/messaging/default.nix b/home/profiles/messaging/default.nix
index 0af65c9..a5a52eb 100644
--- a/home/profiles/messaging/default.nix
+++ b/home/profiles/messaging/default.nix
@@ -1,5 +1,9 @@
{ config, lib, pkgs, ... }:
-let cfg = config.profiles.messaging;
+let
+ cfg = config.profiles.messaging;
+
+ poorObfuscation = y: x: "${x}@${y}";
+ mailPass = x: "${pkgs.pass}/bin/pass show emails/${x}";
in
{
imports = [ ../../modules/programs/nixpkgs ];
@@ -10,8 +14,172 @@ in
};
config = lib.mkIf cfg.enable {
+ accounts.email = {
+ accounts.zach = {
+ address = poorObfuscation "zachel.io" "zach";
+ gpg = {
+ key = "346833414516C852FFB238E19F734565641C2F14";
+ signByDefault = true;
+ };
+
+ imap.host = "imap.migadu.com";
+ smtp.host = "smtp.migadu.com";
+
+ mbsync = {
+ enable = true;
+ create = "maildir";
+ };
+
+ msmtp.enable = true;
+ notmuch.enable = true;
+ neomutt.enable = true;
+ neomutt.mailboxName = "zach";
+
+ imapnotify = {
+ enable = true;
+ boxes = [ "Inbox" ];
+ onNotify = pkgs.writeShellScript "imap-on-notify" ''
+ mbsync zach
+ NOTMUCH_CONFIG=${lib.escapeShellArg config.home.sessionVariables.NOTMUCH_CONFIG}
+ NMBGIT=${lib.escapeShellArg config.home.sessionVariables.NMBGIT}
+ ${pkgs.notmuch}/bin/notmuch new
+ '';
+ };
+
+ primary = true;
+ realName = "zachel";
+ userName = poorObfuscation "zachel.io" "zach";
+ passwordCommand = mailPass "zach";
+ };
+ };
+
+ programs.mbsync.enable = true;
+ programs.msmtp.enable = true;
+ programs.notmuch = {
+ enable = true;
+ hooks.preNew = "mbsync --all";
+ };
+
+ programs.neomutt = {
+ enable = true;
+ sidebar.enable = true;
+ sidebar.format = "%D%?F? [%F]?%* %?N?*N/?%S";
+
+ sort = "reverse-threads";
+
+ settings = {
+ date_format = ''"%y/%m/%d %I:%M%p"'';
+ index_format = ''"%2C %Z %?X?A& ? %D %-15.15F %s (%-4.4c)"'';
+ query_command = ''"abook --mutt-query '%s'"'';
+ rfc2047_parameters = "yes";
+ # Pause 0 seconds for informational messages
+ sleep_time = "0";
+ # Disables the `+` displayed at line wraps
+ markers = "no";
+ # Unread mail stay unread until read;
+ mark_old = "no";
+ # attachments are forwarded with mail;
+ mime_forward = "yes";
+ # mutt won't ask "press key to continue";
+ wait_key = "no";
+ # skip to compose when replying
+ fast_reply = "yes";
+ # save attachments with the body
+ fcc_attach = "yes";
+ # format of subject when forwarding;
+ forward_format = ''"Fwd: %s"'';
+ # include message in forwards
+ forward_quote = "yes";
+ # reply as whomever it was to
+ reverse_name = "yes";
+ # include message in replies
+ include = "yes";
+ };
+
+ extraConfig = ''
+ # Default index colors:
+ color index yellow default '.*'
+ color index_author red default '.*'
+ color index_number blue default
+ color index_subject cyan default '.*'
+
+ # New mail is boldened:
+ color index brightyellow black "~N"
+ color index_author brightred black "~N"
+ color index_subject brightcyan black "~N"
+
+
+ # Tagged mail is highlighted:
+ color index brightyellow blue "~T"
+ color index_author brightred blue "~T"
+ color index_subject brightcyan blue "~T"
+
+
+ # Other colors and aesthetic settings:
+ mono bold bold
+ mono underline underline
+ mono indicator reverse
+ mono error bold
+ color normal default default
+ color indicator brightblack white
+ color sidebar_highlight red default
+ color sidebar_divider brightblack black
+ color sidebar_flagged red black
+ color sidebar_new green black
+ color normal brightyellow default
+ color error red default
+ color tilde black default
+ color message cyan default
+ color markers red white
+ color attachment white default
+ color search brightmagenta default
+ color status brightyellow black
+ color hdrdefault brightgreen default
+ color quoted green default
+ color quoted1 blue default
+ color quoted2 cyan default
+ color quoted3 yellow default
+ color quoted4 red default
+ color quoted5 brightred default
+ color signature brightgreen default
+ color bold black default
+ color underline black default
+ color normal default default
+
+
+ # Regex highlighting:
+ color header blue default ".*"
+ color header brightmagenta default "^(From)"
+ color header brightcyan default "^(Subject)"
+ color header brightwhite default "^(CC|BCC)"
+ color body brightred default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses
+ color body brightblue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL
+ color body green default "\`[^\`]*\`" # Green text between ` and `
+ color body brightblue default "^# \.*" # Headings as bold blue
+ color body brightcyan default "^## \.*" # Subheadings as bold cyan
+ color body brightgreen default "^### \.*" # Subsubheadings as bold green
+ color body yellow default "^(\t| )*(-|\\*) \.*" # List items as yellow
+ color body brightcyan default "[;:][-o][)/(|]" # emoticons
+ color body brightcyan default "[;:][)(|]" # emoticons
+ color body brightcyan default "[ ][*][^*]*[*][ ]?" # more emoticon?
+ color body brightcyan default "[ ]?[*][^*]*[*][ ]" # more emoticon?
+ color body red default "(BAD signature)"
+ color body cyan default "(Good signature)"
+ color body brightblack default "^gpg: Good signature .*"
+ color body brightyellow default "^gpg: "
+ color body brightyellow red "^gpg: BAD signature from.*"
+ mono body bold "^gpg: Good signature"
+ mono body bold "^gpg: BAD signature from.*"
+ color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
+ '';
+ };
+
+ programs.notmuch.hooks.postNew = ''
+ ${pkgs.libnotify}/bin/notify-send --icon=mail-unread --app-name=notmuch \
+ "Email" "New email available in Inbox"
+ '';
+
home.packages = with pkgs; [
- aerc
element-desktop
weechat
];