Modularize and improve mail and calendar config
This commit is contained in:
@@ -1,13 +1,5 @@
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
programs.khal = {
|
||||
enable = true;
|
||||
locale = {
|
||||
timeformat = "%H:%M";
|
||||
dateformat = "%m-%d";
|
||||
};
|
||||
};
|
||||
|
||||
programs.pimsync.enable = true;
|
||||
services.pimsync.enable = true;
|
||||
|
||||
@@ -30,16 +22,10 @@
|
||||
# TODO: Bitwarden
|
||||
passwordCommand = [
|
||||
"${pkgs.coreutils}/bin/cat"
|
||||
"${config.xdg.configHome}/secrets/radicale_pass"
|
||||
config.sops.secrets.radicale_pass.path
|
||||
];
|
||||
};
|
||||
|
||||
khal = {
|
||||
enable = true;
|
||||
type = "discover";
|
||||
color = "light blue";
|
||||
};
|
||||
|
||||
pimsync = {
|
||||
enable = true;
|
||||
extraPairDirectives = [
|
||||
@@ -75,7 +61,7 @@
|
||||
name = "cmd";
|
||||
params = [
|
||||
"${pkgs.coreutils}/bin/cat"
|
||||
"${config.xdg.configHome}/secrets/university_calendar_url"
|
||||
config.sops.secrets.university_calendar_url.path
|
||||
];
|
||||
}
|
||||
];
|
||||
@@ -88,10 +74,6 @@
|
||||
}
|
||||
];
|
||||
};
|
||||
khal = {
|
||||
enable = true;
|
||||
color = "#c72125";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
6
home/programs/accounts/default.nix
Normal file
6
home/programs/accounts/default.nix
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
imports = [
|
||||
./email.nix
|
||||
./calendar.nix
|
||||
];
|
||||
}
|
||||
87
home/programs/accounts/email.nix
Normal file
87
home/programs/accounts/email.nix
Normal file
@@ -0,0 +1,87 @@
|
||||
{ config, ... }:
|
||||
{
|
||||
# Global enablement
|
||||
programs.mbsync.enable = true;
|
||||
programs.msmtp.enable = true;
|
||||
programs.notmuch.enable = true;
|
||||
services.mbsync.enable = true;
|
||||
|
||||
accounts.email.maildirBasePath = "${config.xdg.dataHome}/mail";
|
||||
|
||||
accounts.email.accounts = {
|
||||
main = {
|
||||
enable = true;
|
||||
primary = true;
|
||||
address = "mail@jelles.net";
|
||||
imap = {
|
||||
authentication = "plain";
|
||||
host = "taylor.mxrouting.net";
|
||||
port = 993;
|
||||
tls.enable = true;
|
||||
};
|
||||
realName = "Jelle Spreeuwenberg";
|
||||
smtp = {
|
||||
authentication = "plain";
|
||||
host = "taylor.mxrouting.net";
|
||||
port = 465;
|
||||
tls.enable = true;
|
||||
};
|
||||
userName = "mail@jelles.net";
|
||||
passwordCommand = "rbw get \"Main E-Mail\"";
|
||||
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "both";
|
||||
expunge = "both";
|
||||
patterns = [ "*" ];
|
||||
};
|
||||
msmtp.enable = true;
|
||||
notmuch.enable = true;
|
||||
};
|
||||
|
||||
old = {
|
||||
enable = true;
|
||||
address = "mail@jellespreeuwenberg.nl";
|
||||
imap = {
|
||||
authentication = "plain";
|
||||
host = "taylor.mxrouting.net";
|
||||
port = 993;
|
||||
tls.enable = true;
|
||||
};
|
||||
realName = "Jelle Spreeuwenberg";
|
||||
smtp = {
|
||||
authentication = "plain";
|
||||
host = "taylor.mxrouting.net";
|
||||
port = 465;
|
||||
tls.enable = true;
|
||||
};
|
||||
userName = "mail@jellespreeuwenberg.nl";
|
||||
passwordCommand = "rbw get \"Old E-Mail\"";
|
||||
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "both";
|
||||
expunge = "both";
|
||||
patterns = [ "*" ];
|
||||
};
|
||||
msmtp.enable = true;
|
||||
notmuch.enable = true;
|
||||
};
|
||||
|
||||
uni = {
|
||||
enable = true;
|
||||
flavor = "outlook.office365.com";
|
||||
address = "j.spreeuwenberg@student.tue.nl";
|
||||
realName = "Jelle Spreeuwenberg";
|
||||
userName = "j.spreeuwenberg@student.tue.nl";
|
||||
};
|
||||
|
||||
work = {
|
||||
enable = true;
|
||||
flavor = "outlook.office365.com";
|
||||
address = "jelle.spreeuwenberg@yookr.org";
|
||||
realName = "Jelle Spreeuwenberg";
|
||||
userName = "jelle.spreeuwenberg@yookr.org";
|
||||
};
|
||||
};
|
||||
}
|
||||
23
home/programs/aerc/default.nix
Normal file
23
home/programs/aerc/default.nix
Normal file
@@ -0,0 +1,23 @@
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
programs.aerc = {
|
||||
enable = true;
|
||||
extraConfig = {
|
||||
general.unsafe-accounts-conf = true;
|
||||
filters = {
|
||||
"text/html" = "${pkgs.w3m}/bin/w3m -I UTF-8 -T text/html";
|
||||
"text/ical" = "${pkgs.bat}/bin/bat -fP --style=plain --language=ical";
|
||||
"text/*" = "${pkgs.bat}/bin/bat -fP --style=plain";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
accounts.email.accounts = {
|
||||
main = {
|
||||
aerc.enable = true;
|
||||
};
|
||||
old = {
|
||||
aerc.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
26
home/programs/khal/default.nix
Normal file
26
home/programs/khal/default.nix
Normal file
@@ -0,0 +1,26 @@
|
||||
{ config, ... }:
|
||||
{
|
||||
programs.khal = {
|
||||
enable = true;
|
||||
locale = {
|
||||
timeformat = "%H:%M";
|
||||
dateformat = "%m-%d";
|
||||
};
|
||||
};
|
||||
|
||||
accounts.calendar.accounts = {
|
||||
"radicale" = {
|
||||
khal = {
|
||||
enable = true;
|
||||
type = "discover";
|
||||
color = "light blue";
|
||||
};
|
||||
};
|
||||
"university" = {
|
||||
khal = {
|
||||
enable = true;
|
||||
color = "#c72125";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,234 +0,0 @@
|
||||
{ config, pkgs, ... }:
|
||||
let
|
||||
browser = "${pkgs.brave}/bin/brave";
|
||||
htmlConverter = "${pkgs.w3m}/bin/w3m -dump -T text/html";
|
||||
openHtml = pkgs.writeShellScriptBin "open-html" ''
|
||||
TMPFILE=$(mktemp --suffix=.html)
|
||||
cat > "$TMPFILE"
|
||||
# Open in background (nohup) so it doesn't block Neomutt
|
||||
nohup ${browser} "$TMPFILE" >/dev/null 2>&1 &
|
||||
'';
|
||||
in
|
||||
{
|
||||
home.file.".mailcap".text = ''
|
||||
text/html; ${htmlConverter} '%s'; nametemplate=%s.html; copiousoutput
|
||||
'';
|
||||
|
||||
programs = {
|
||||
mbsync.enable = true;
|
||||
msmtp.enable = true;
|
||||
notmuch.enable = true;
|
||||
# aerc = {
|
||||
# enable = true;
|
||||
# extraConfig = {
|
||||
# general.unsafe-accounts-conf = true;
|
||||
#
|
||||
# openers = {
|
||||
# "text/html" = "${pkgs.brave}/bin/brave";
|
||||
# };
|
||||
#
|
||||
# filters = {
|
||||
# "text/html" = "!${pkgs.w3m}/bin/w3m -I UTF-8 -T text/html";
|
||||
# "text/ical" = "${pkgs.bat}/bin/bat -fP --style=plain --language=ical";
|
||||
# "text/*" = "${pkgs.bat}/bin/bat -fP --style=plain";
|
||||
# "image/*" = "${pkgs.catimg}/bin/catimg -2 $(tput cols) -";
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
#
|
||||
# astroid = {
|
||||
# enable = true;
|
||||
# pollScript = "mbsync -a && notmuch new";
|
||||
# externalEditor = "nvim -c 'set ft=mail' +1";
|
||||
# };
|
||||
neomutt = {
|
||||
enable = true;
|
||||
|
||||
vimKeys = true;
|
||||
|
||||
sidebar = {
|
||||
enable = true;
|
||||
width = 25;
|
||||
shortPath = true;
|
||||
format = "%D %?N?%N?";
|
||||
};
|
||||
|
||||
macros = [
|
||||
# Press 'V' to open the current email in Brave
|
||||
{
|
||||
action = "<view-attachments><search>html<enter><pipe-entry>${openHtml}/bin/open-html<enter><exit>";
|
||||
key = "V";
|
||||
map = [
|
||||
"index"
|
||||
"pager"
|
||||
];
|
||||
}
|
||||
# Press 'b' to toggle the sidebar
|
||||
{
|
||||
action = "<enter-command>toggle sidebar_visible<enter>";
|
||||
key = "b";
|
||||
map = [
|
||||
"index"
|
||||
"pager"
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
binds = [
|
||||
{
|
||||
action = "sidebar-prev";
|
||||
key = "\\Ck";
|
||||
map = [
|
||||
"index"
|
||||
"pager"
|
||||
];
|
||||
}
|
||||
{
|
||||
action = "sidebar-next";
|
||||
key = "\\Cj";
|
||||
map = [
|
||||
"index"
|
||||
"pager"
|
||||
];
|
||||
}
|
||||
{
|
||||
action = "sidebar-open";
|
||||
key = "\\Cl";
|
||||
map = [
|
||||
"index"
|
||||
"pager"
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
extraConfig = ''
|
||||
# --- HTML & Attachment Handling ---
|
||||
# Tell NeoMutt to look for HTML and Text parts
|
||||
alternative_order text/plain text/html
|
||||
|
||||
# Automatically convert HTML to text using the mailcap entry we made
|
||||
auto_view text/html
|
||||
|
||||
# Do not automatically show other mime types (safety/cleanliness)
|
||||
# (Except those we auto_view'ed above)
|
||||
|
||||
# --- Sleek UI Settings ---
|
||||
set help = no # Hide the top help bar (cleaner look)
|
||||
set status_on_top = yes # Status bar at the top looks more modern
|
||||
set wait_key = no # Don't wait for "Press any key" after commands
|
||||
set markers = no # Hide the + markers at wrapped lines
|
||||
set mark_old = no # Don't distinguish between 'New' and 'Old' messages
|
||||
set menu_scroll = yes # Scroll the menu, don't jump pages
|
||||
set pager_context = 5 # Keep 5 lines of context when scrolling
|
||||
set pager_index_lines = 10 # Show the index (list) while reading an email (split view)
|
||||
|
||||
# --- Index Format (The Email List) ---
|
||||
# A clean, modern format: Date | Author | Subject
|
||||
set index_format = "%4C %Z %D %-20.20F %s"
|
||||
|
||||
# --- Colors (Dracula-inspired for a modern feel) ---
|
||||
color normal white default
|
||||
color attachment magenta default
|
||||
color hdrdefault cyan default
|
||||
color indicator black cyan
|
||||
color markers brightblack default
|
||||
color message white default
|
||||
color quoted green default
|
||||
color signature brightblack default
|
||||
color status white black
|
||||
color tilde brightblack default
|
||||
color tree brightblack default
|
||||
color error brightred default
|
||||
|
||||
# Sidebar colors
|
||||
color sidebar_new brightgreen default
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
accounts.email.accounts = {
|
||||
main = {
|
||||
enable = true;
|
||||
address = "mail@jelles.net";
|
||||
imap = {
|
||||
authentication = "plain";
|
||||
host = "taylor.mxrouting.net";
|
||||
port = 993;
|
||||
tls.enable = true;
|
||||
};
|
||||
passwordCommand = "rbw get \"Main E-Mail\"";
|
||||
primary = true;
|
||||
realName = "Jelle Spreeuwenberg";
|
||||
smtp = {
|
||||
authentication = "plain";
|
||||
host = "taylor.mxrouting.net";
|
||||
port = 465;
|
||||
tls.enable = true;
|
||||
};
|
||||
userName = "mail@jelles.net";
|
||||
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "both";
|
||||
expunge = "both";
|
||||
patterns = [ "*" ];
|
||||
};
|
||||
|
||||
msmtp.enable = true;
|
||||
notmuch.enable = true;
|
||||
neomutt.enable = true;
|
||||
# astroid.enable = true;
|
||||
# aerc.enable = true;
|
||||
};
|
||||
|
||||
old = {
|
||||
enable = true;
|
||||
address = "mail@jellespreeuwenberg.nl";
|
||||
imap = {
|
||||
authentication = "plain";
|
||||
host = "taylor.mxrouting.net";
|
||||
port = 993;
|
||||
tls.enable = true;
|
||||
};
|
||||
passwordCommand = "rbw get \"Old E-Mail\"";
|
||||
realName = "Jelle Spreeuwenberg";
|
||||
smtp = {
|
||||
authentication = "plain";
|
||||
host = "taylor.mxrouting.net";
|
||||
port = 465;
|
||||
tls.enable = true;
|
||||
};
|
||||
userName = "mail@jellespreeuwenberg.nl";
|
||||
|
||||
mbsync = {
|
||||
enable = true;
|
||||
create = "both";
|
||||
expunge = "both";
|
||||
patterns = [ "*" ];
|
||||
};
|
||||
|
||||
msmtp.enable = true;
|
||||
notmuch.enable = true;
|
||||
neomutt.enable = true;
|
||||
};
|
||||
|
||||
uni = {
|
||||
# TODO: Thunderbird automatically uses normal password authentication instead of oauth, you have to manually change it
|
||||
enable = true;
|
||||
flavor = "outlook.office365.com";
|
||||
address = "j.spreeuwenberg@student.tue.nl";
|
||||
realName = "Jelle Spreeuwenberg";
|
||||
userName = "j.spreeuwenberg@student.tue.nl";
|
||||
};
|
||||
|
||||
work = {
|
||||
# TODO: Thunderbird automatically uses normal password authentication instead of oauth, you have to manually change it
|
||||
enable = true;
|
||||
flavor = "outlook.office365.com";
|
||||
address = "jelle.spreeuwenberg@yookr.org";
|
||||
realName = "Jelle Spreeuwenberg";
|
||||
userName = "jelle.spreeuwenberg@yookr.org";
|
||||
};
|
||||
};
|
||||
accounts.email.maildirBasePath = "${config.xdg.dataHome}/mail";
|
||||
}
|
||||
@@ -1,86 +1,5 @@
|
||||
{ config, ... }:
|
||||
{
|
||||
accounts.email.maildirBasePath = "${config.xdg.dataHome}/mail";
|
||||
accounts.email.accounts = {
|
||||
main = {
|
||||
enable = true;
|
||||
primary = true;
|
||||
|
||||
address = "mail@jelles.net";
|
||||
imap = {
|
||||
authentication = "plain";
|
||||
host = "taylor.mxrouting.net";
|
||||
port = 993;
|
||||
tls.enable = true;
|
||||
};
|
||||
realName = "Jelle Spreeuwenberg";
|
||||
smtp = {
|
||||
authentication = "plain";
|
||||
host = "taylor.mxrouting.net";
|
||||
port = 465;
|
||||
tls.enable = true;
|
||||
};
|
||||
thunderbird = {
|
||||
enable = true;
|
||||
};
|
||||
userName = "mail@jelles.net";
|
||||
};
|
||||
|
||||
old = {
|
||||
enable = true;
|
||||
address = "mail@jellespreeuwenberg.nl";
|
||||
imap = {
|
||||
authentication = "plain";
|
||||
host = "taylor.mxrouting.net";
|
||||
port = 993;
|
||||
tls.enable = true;
|
||||
};
|
||||
realName = "Jelle Spreeuwenberg";
|
||||
smtp = {
|
||||
authentication = "plain";
|
||||
host = "taylor.mxrouting.net";
|
||||
port = 465;
|
||||
tls.enable = true;
|
||||
};
|
||||
thunderbird = {
|
||||
enable = true;
|
||||
};
|
||||
userName = "mail@jellespreeuwenberg.nl";
|
||||
};
|
||||
|
||||
uni = {
|
||||
# TODO: Thunderbird automatically uses normal password authentication instead of oauth, you have to manually change it
|
||||
enable = true;
|
||||
flavor = "outlook.office365.com";
|
||||
address = "j.spreeuwenberg@student.tue.nl";
|
||||
realName = "Jelle Spreeuwenberg";
|
||||
thunderbird = {
|
||||
enable = true;
|
||||
settings = id: {
|
||||
"mail.smtpserver.smtp_${id}.authMethod" = 10;
|
||||
"mail.server.server_${id}.authMethod" = 10;
|
||||
};
|
||||
};
|
||||
userName = "j.spreeuwenberg@student.tue.nl";
|
||||
};
|
||||
|
||||
work = {
|
||||
# TODO: Thunderbird automatically uses normal password authentication instead of oauth, you have to manually change it
|
||||
enable = true;
|
||||
flavor = "outlook.office365.com";
|
||||
address = "jelle.spreeuwenberg@yookr.org";
|
||||
realName = "Jelle Spreeuwenberg";
|
||||
thunderbird = {
|
||||
enable = true;
|
||||
settings = id: {
|
||||
"mail.smtpserver.smtp_${id}.authMethod" = 10;
|
||||
"mail.server.server_${id}.authMethod" = 10;
|
||||
};
|
||||
};
|
||||
userName = "jelle.spreeuwenberg@yookr.org";
|
||||
};
|
||||
};
|
||||
|
||||
programs.thunderbird = {
|
||||
enable = true;
|
||||
profiles.kiri = {
|
||||
@@ -109,4 +28,32 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Enable Thunderbird for specific accounts
|
||||
accounts.email.accounts = {
|
||||
main = {
|
||||
thunderbird.enable = true;
|
||||
};
|
||||
old = {
|
||||
thunderbird.enable = true;
|
||||
};
|
||||
uni = {
|
||||
thunderbird = {
|
||||
enable = true;
|
||||
settings = id: {
|
||||
"mail.smtpserver.smtp_${id}.authMethod" = 10;
|
||||
"mail.server.server_${id}.authMethod" = 10;
|
||||
};
|
||||
};
|
||||
};
|
||||
work = {
|
||||
thunderbird = {
|
||||
enable = true;
|
||||
settings = id: {
|
||||
"mail.smtpserver.smtp_${id}.authMethod" = 10;
|
||||
"mail.server.server_${id}.authMethod" = 10;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user