Email configuration
This commit is contained in:
parent
c513825d83
commit
2c0a392990
2 changed files with 145 additions and 0 deletions
143
home/aselimov/email.nix
Normal file
143
home/aselimov/email.nix
Normal file
|
|
@ -0,0 +1,143 @@
|
||||||
|
{config, pkgs, ... }:
|
||||||
|
let
|
||||||
|
mailNotify = pkgs.writeShellScript "mail-notify" ''
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
${pkgs.notmuch}/bin/notmuch new >/dev/null
|
||||||
|
|
||||||
|
${pkgs.notmuch}/bin/notmuch search \
|
||||||
|
--format=json \
|
||||||
|
'tag:new' |
|
||||||
|
${pkgs.jq}/bin/jq -r '.[] | [.authors, .subject] | @tsv' |
|
||||||
|
while IFS=$'\t' read -r sender subject; do
|
||||||
|
${pkgs.libnotify}/bin/notify-send \
|
||||||
|
--app-name="Mail" \
|
||||||
|
"New email from $sender" \
|
||||||
|
"$subject"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Don't notify about these messages again next sync.
|
||||||
|
${pkgs.notmuch}/bin/notmuch tag -new -- 'tag:new'
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
accounts.email = {
|
||||||
|
maildirBasePath = "Mail";
|
||||||
|
|
||||||
|
accounts.personal = {
|
||||||
|
primary = true;
|
||||||
|
address = "alex@alexselimov.com";
|
||||||
|
realName = "Alex Selimov";
|
||||||
|
userName = "alex";
|
||||||
|
|
||||||
|
passwordCommand = "${pkgs.pass}/bin/pass show alex@alexselimov.xyz";
|
||||||
|
|
||||||
|
imap = {
|
||||||
|
host = "mail.alexselimov.com";
|
||||||
|
port = 993;
|
||||||
|
|
||||||
|
tls = {
|
||||||
|
enable = true;
|
||||||
|
useStartTls = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
maildir.path = "alex@alexselimov.com";
|
||||||
|
|
||||||
|
smtp = {
|
||||||
|
host = "mail.alexselimov.com";
|
||||||
|
port = 587;
|
||||||
|
|
||||||
|
tls = {
|
||||||
|
enable = true;
|
||||||
|
useStartTls = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
mbsync = {
|
||||||
|
enable = true;
|
||||||
|
create = "both";
|
||||||
|
};
|
||||||
|
notmuch.enable = true;
|
||||||
|
aerc = {
|
||||||
|
enable = true;
|
||||||
|
extraAccounts = {
|
||||||
|
source = "notmuch://";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.mbsync.enable = true;
|
||||||
|
services.mbsync = {
|
||||||
|
enable = true;
|
||||||
|
frequency = "*:0/1";
|
||||||
|
postExec = "${mailNotify}";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.aerc = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
extraConfig = {
|
||||||
|
general = {
|
||||||
|
unsafe-accounts-conf = true;
|
||||||
|
};
|
||||||
|
ui.styleset-name = "zenwritten";
|
||||||
|
filters = {
|
||||||
|
"text/plain" = "wrap -w 100 | colorize";
|
||||||
|
"text/html" = "html | colorize";
|
||||||
|
};
|
||||||
|
|
||||||
|
compose = {
|
||||||
|
editor = "nvim";
|
||||||
|
};
|
||||||
|
|
||||||
|
viewer = {
|
||||||
|
pager = "less -R";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."aerc/binds.conf".text = ''
|
||||||
|
${builtins.readFile "${pkgs.aerc}/share/aerc/binds.conf"}
|
||||||
|
|
||||||
|
[messages]
|
||||||
|
l = :view<Enter>
|
||||||
|
'';
|
||||||
|
|
||||||
|
programs.notmuch = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
new.tags = [
|
||||||
|
"new"
|
||||||
|
"unread"
|
||||||
|
"inbox"
|
||||||
|
];
|
||||||
|
|
||||||
|
extraConfig = {
|
||||||
|
user = {
|
||||||
|
name = "Alex Selimov";
|
||||||
|
primary_email = "alex@alexselimov.com";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."aerc/stylesets/zenwritten".text = ''
|
||||||
|
*.default=true
|
||||||
|
*.normal=true
|
||||||
|
*.fg=default
|
||||||
|
*.bg=default
|
||||||
|
|
||||||
|
*.selected.reverse=toggle
|
||||||
|
|
||||||
|
title.bold=true
|
||||||
|
header.bold=true
|
||||||
|
msglist_unread.bold=true
|
||||||
|
dirlist_recent.bold=true
|
||||||
|
'';
|
||||||
|
|
||||||
|
xdg.configFile."aerc/mimeapps.conf".text = ''
|
||||||
|
text/html=xdg-open
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -24,6 +24,7 @@ in
|
||||||
./theme/theme.nix
|
./theme/theme.nix
|
||||||
./fuzzel.nix
|
./fuzzel.nix
|
||||||
./mako.nix
|
./mako.nix
|
||||||
|
./email.nix
|
||||||
];
|
];
|
||||||
home.username = "aselimov";
|
home.username = "aselimov";
|
||||||
home.homeDirectory = "/home/aselimov";
|
home.homeDirectory = "/home/aselimov";
|
||||||
|
|
@ -65,6 +66,7 @@ in
|
||||||
dino
|
dino
|
||||||
wtype
|
wtype
|
||||||
libnotify
|
libnotify
|
||||||
|
prusa-slicer
|
||||||
];
|
];
|
||||||
home.pointerCursor = {
|
home.pointerCursor = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue