Add module for aerc (#3070)
This adds support for configuring email accounts, with automatic smtp, imap, sendmail (msmpt) and maildir (mbsync, offlineimap) setup in aerc, via `accounts.email`.
This commit is contained in:
parent
c1addfdad3
commit
324fedcf9f
14 changed files with 681 additions and 0 deletions
4
tests/modules/programs/aerc/default.nix
Normal file
4
tests/modules/programs/aerc/default.nix
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
aerc-noSettings = ./noSettings.nix;
|
||||
aerc-settings = ./settings.nix;
|
||||
}
|
||||
76
tests/modules/programs/aerc/extraAccounts.expected
Normal file
76
tests/modules/programs/aerc/extraAccounts.expected
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
# Generated by Home Manager.
|
||||
|
||||
[Test1]
|
||||
enable-folders-sort = true
|
||||
folders = INBOX,SENT,JUNK
|
||||
source = maildir:///dev/null
|
||||
|
||||
[Test2]
|
||||
pgp-key-id = 42
|
||||
|
||||
[a_imap-nopasscmd-tls-starttls-folders]
|
||||
copy-to = aercSent
|
||||
default = aercInbox
|
||||
from = Foo Bar <addr@mail.invalid>
|
||||
postpone = aercDrafts
|
||||
source = imap://foobar@imap.host.invalid:1337
|
||||
|
||||
[b_imap-passcmd-tls-nostarttls-extraAccounts]
|
||||
connection-timeout = 42s
|
||||
from = Foo Bar <addr@mail.invalid>
|
||||
source = imaps://foobar@imap.host.invalid:1337
|
||||
source-cred-cmd = echo PaSsWorD!
|
||||
|
||||
[c_imap-passcmd-notls-nostarttls-extraConfig]
|
||||
from = Foo Bar <addr@mail.invalid>
|
||||
source = imap+insecure://foobar@imap.host.invalid:1337
|
||||
source-cred-cmd = echo PaSsWorD!
|
||||
|
||||
[d_imap-passcmd-notls-starttls-extraBinds]
|
||||
from = Foo Bar <addr@mail.invalid>
|
||||
source = imap+insecure://foobar@imap.host.invalid:1337
|
||||
source-cred-cmd = echo PaSsWorD!
|
||||
|
||||
[e_smtp-nopasscmd-tls-starttls]
|
||||
from = Foo Bar <addr@mail.invalid>
|
||||
outgoing = smtp+plain://foobar@smtp.host.invalid:42
|
||||
smtp-starttls = yes
|
||||
|
||||
[f_smtp-passcmd-tls-nostarttls]
|
||||
from = Foo Bar <addr@mail.invalid>
|
||||
outgoing = smtps+plain://foobar@smtp.host.invalid:42
|
||||
outgoing-cred-cmd = echo PaSsWorD!
|
||||
|
||||
[g_smtp-passcmd-notls-nostarttls]
|
||||
from = Foo Bar <addr@mail.invalid>
|
||||
outgoing = smtp+plain://foobar@smtp.host.invalid:42
|
||||
outgoing-cred-cmd = echo PaSsWorD!
|
||||
|
||||
[h_smtp-passcmd-notls-starttls]
|
||||
from = Foo Bar <addr@mail.invalid>
|
||||
outgoing = smtp+plain://foobar@smtp.host.invalid:42
|
||||
outgoing-cred-cmd = echo PaSsWorD!
|
||||
|
||||
[i_maildir-mbsync]
|
||||
from = Foo Bar <addr@mail.invalid>
|
||||
source = maildir:///home/hm-user/Maildir/i_maildir-mbsync
|
||||
|
||||
[j_maildir-offlineimap]
|
||||
from = Foo Bar <addr@mail.invalid>
|
||||
source = maildir:///home/hm-user/Maildir/j_maildir-offlineimap
|
||||
|
||||
[l_smpt-auth-none]
|
||||
from = Foo Bar <addr@mail.invalid>
|
||||
outgoing = smtps+none://foobar@smtp.host.invalid:42
|
||||
|
||||
[m_smpt-auth-plain]
|
||||
from = Foo Bar <addr@mail.invalid>
|
||||
outgoing = smtps+plain://foobar@smtp.host.invalid:42
|
||||
|
||||
[n_smpt-auth-login]
|
||||
from = Foo Bar <addr@mail.invalid>
|
||||
outgoing = smtps+login://foobar@smtp.host.invalid:42
|
||||
|
||||
[o_msmtp]
|
||||
from = Foo Bar <addr@mail.invalid>
|
||||
outgoing = msmtpq --read-envelope-from --read-recipients
|
||||
17
tests/modules/programs/aerc/extraBinds.expected
Normal file
17
tests/modules/programs/aerc/extraBinds.expected
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Generated by Home Manager.
|
||||
|
||||
<C-n> = :next-tab<Enter>
|
||||
<C-p> = :prev-tab<Enter>
|
||||
<C-t> = :term<Enter>
|
||||
|
||||
[compose::editor]
|
||||
$ex = <C-x>
|
||||
$noinherit = true
|
||||
<C-k> = :prev-field<Enter>
|
||||
|
||||
[messages]
|
||||
j = :next<Enter>
|
||||
q = :quit<Enter>
|
||||
|
||||
[messages:account=d_imap-passcmd-notls-starttls-extraBinds]
|
||||
d = :move Trash<Enter>
|
||||
18
tests/modules/programs/aerc/extraConfig.expected
Normal file
18
tests/modules/programs/aerc/extraConfig.expected
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Home Manager.
|
||||
|
||||
[general]
|
||||
unsafe-accounts-conf = true
|
||||
|
||||
[ui]
|
||||
index-format = null
|
||||
mouse-enabled = false
|
||||
sidebar-width = 42
|
||||
sort = -r date
|
||||
spinner = true,2,3.400000,5
|
||||
test-float = 1337.420000
|
||||
|
||||
[ui:account=Test]
|
||||
sidebar-width = 1337
|
||||
|
||||
[ui:account=c_imap-passcmd-notls-nostarttls-extraConfig]
|
||||
index-format = %42.1337n
|
||||
18
tests/modules/programs/aerc/noSettings.nix
Normal file
18
tests/modules/programs/aerc/noSettings.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
config = {
|
||||
nmt.script = let dir = "home-files/.config/aerc";
|
||||
in ''
|
||||
assertPathNotExists ${dir}/accounts.conf
|
||||
assertPathNotExists ${dir}/aerc.conf
|
||||
assertPathNotExists ${dir}/binds.conf
|
||||
assertPathNotExists ${dir}/stylesets
|
||||
'';
|
||||
programs.aerc.enable = true;
|
||||
|
||||
test.stubs.aerc = { };
|
||||
};
|
||||
}
|
||||
229
tests/modules/programs/aerc/settings.nix
Normal file
229
tests/modules/programs/aerc/settings.nix
Normal file
|
|
@ -0,0 +1,229 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
config = {
|
||||
nmt.script = let dir = "home-files/.config/aerc";
|
||||
in ''
|
||||
assertFileContent ${dir}/accounts.conf ${./extraAccounts.expected}
|
||||
assertFileContent ${dir}/binds.conf ${./extraBinds.expected}
|
||||
assertFileContent ${dir}/aerc.conf ${./extraConfig.expected}
|
||||
assertFileContent ${dir}/templates/bar ${./templates.expected}
|
||||
assertFileContent ${dir}/templates/foo ${./templates.expected}
|
||||
assertFileContent ${dir}/stylesets/default ${./stylesets.expected}
|
||||
assertFileContent ${dir}/stylesets/asLines ${./stylesets.expected}
|
||||
'';
|
||||
|
||||
test.stubs.aerc = { };
|
||||
|
||||
programs.aerc = {
|
||||
enable = true;
|
||||
|
||||
extraAccounts = {
|
||||
Test1 = {
|
||||
source = "maildir:///dev/null";
|
||||
enable-folders-sort = true;
|
||||
folders = [ "INBOX" "SENT" "JUNK" ];
|
||||
};
|
||||
Test2 = { pgp-key-id = 42; };
|
||||
};
|
||||
|
||||
extraBinds = {
|
||||
global = {
|
||||
"<C-p>" = ":prev-tab<Enter>";
|
||||
"<C-n>" = ":next-tab<Enter>";
|
||||
"<C-t>" = ":term<Enter>";
|
||||
};
|
||||
messages = {
|
||||
q = ":quit<Enter>";
|
||||
j = ":next<Enter>";
|
||||
};
|
||||
"compose::editor" = {
|
||||
"$noinherit" = "true";
|
||||
"$ex" = "<C-x>";
|
||||
"<C-k>" = ":prev-field<Enter>";
|
||||
};
|
||||
};
|
||||
|
||||
extraConfig = {
|
||||
general.unsafe-accounts-conf = true;
|
||||
ui = {
|
||||
index-format = null;
|
||||
sort = "-r date";
|
||||
spinner = [ true 2 3.4 "5" ];
|
||||
sidebar-width = 42;
|
||||
mouse-enabled = false;
|
||||
test-float = 1337.42;
|
||||
};
|
||||
"ui:account=Test" = { sidebar-width = 1337; };
|
||||
};
|
||||
|
||||
stylesets = {
|
||||
asLines = ''
|
||||
*.default = true
|
||||
*.selected.reverse = toggle
|
||||
*error.bold = true
|
||||
error.fg = red
|
||||
header.bold = true
|
||||
title.reverse = true
|
||||
'';
|
||||
default = {
|
||||
"*.default" = "true";
|
||||
"*error.bold" = "true";
|
||||
"error.fg" = "red";
|
||||
"header.bold" = "true";
|
||||
"*.selected.reverse" = "toggle";
|
||||
"title.reverse" = "true";
|
||||
};
|
||||
};
|
||||
|
||||
templates = rec {
|
||||
foo = ''
|
||||
X-Mailer: aerc {{version}}
|
||||
|
||||
Just a test.
|
||||
'';
|
||||
bar = foo;
|
||||
};
|
||||
};
|
||||
|
||||
accounts.email.accounts = let
|
||||
basics = {
|
||||
aerc = { enable = true; };
|
||||
realName = "Foo Bar";
|
||||
userName = "foobar";
|
||||
address = "addr@mail.invalid";
|
||||
folders = {
|
||||
drafts = "";
|
||||
inbox = "";
|
||||
sent = "";
|
||||
trash = "";
|
||||
};
|
||||
};
|
||||
in {
|
||||
a_imap-nopasscmd-tls-starttls-folders = basics // {
|
||||
primary = true;
|
||||
imap = {
|
||||
host = "imap.host.invalid";
|
||||
port = 1337;
|
||||
tls.enable = true;
|
||||
tls.useStartTls = true;
|
||||
};
|
||||
folders = {
|
||||
drafts = "aercDrafts";
|
||||
inbox = "aercInbox";
|
||||
sent = "aercSent";
|
||||
};
|
||||
};
|
||||
b_imap-passcmd-tls-nostarttls-extraAccounts = basics // {
|
||||
passwordCommand = "echo PaSsWorD!";
|
||||
imap = {
|
||||
host = "imap.host.invalid";
|
||||
port = 1337;
|
||||
tls.enable = true;
|
||||
tls.useStartTls = false;
|
||||
};
|
||||
aerc = {
|
||||
enable = true;
|
||||
extraAccounts = { connection-timeout = "42s"; };
|
||||
};
|
||||
};
|
||||
c_imap-passcmd-notls-nostarttls-extraConfig = basics // {
|
||||
passwordCommand = "echo PaSsWorD!";
|
||||
aerc = {
|
||||
enable = true;
|
||||
extraConfig = { ui.index-format = "%42.1337n"; };
|
||||
};
|
||||
imap = {
|
||||
host = "imap.host.invalid";
|
||||
port = 1337;
|
||||
tls.enable = false;
|
||||
tls.useStartTls = false;
|
||||
};
|
||||
};
|
||||
d_imap-passcmd-notls-starttls-extraBinds = basics // {
|
||||
passwordCommand = "echo PaSsWorD!";
|
||||
imap = {
|
||||
host = "imap.host.invalid";
|
||||
port = 1337;
|
||||
tls.enable = false;
|
||||
tls.useStartTls = true;
|
||||
};
|
||||
aerc = {
|
||||
enable = true;
|
||||
extraBinds = { messages = { d = ":move Trash<Enter>"; }; };
|
||||
};
|
||||
};
|
||||
e_smtp-nopasscmd-tls-starttls = basics // {
|
||||
smtp = {
|
||||
host = "smtp.host.invalid";
|
||||
port = 42;
|
||||
tls.enable = true;
|
||||
tls.useStartTls = true;
|
||||
};
|
||||
};
|
||||
f_smtp-passcmd-tls-nostarttls = basics // {
|
||||
passwordCommand = "echo PaSsWorD!";
|
||||
smtp = {
|
||||
host = "smtp.host.invalid";
|
||||
port = 42;
|
||||
tls.enable = true;
|
||||
tls.useStartTls = false;
|
||||
};
|
||||
};
|
||||
g_smtp-passcmd-notls-nostarttls = basics // {
|
||||
passwordCommand = "echo PaSsWorD!";
|
||||
smtp = {
|
||||
host = "smtp.host.invalid";
|
||||
port = 42;
|
||||
tls.enable = false;
|
||||
tls.useStartTls = false;
|
||||
};
|
||||
};
|
||||
h_smtp-passcmd-notls-starttls = basics // {
|
||||
passwordCommand = "echo PaSsWorD!";
|
||||
smtp = {
|
||||
host = "smtp.host.invalid";
|
||||
port = 42;
|
||||
tls.enable = false;
|
||||
tls.useStartTls = true;
|
||||
};
|
||||
};
|
||||
i_maildir-mbsync = basics // { mbsync.enable = true; };
|
||||
j_maildir-offlineimap = basics // { offlineimap.enable = true; };
|
||||
k_notEnabled = basics // { aerc.enable = false; };
|
||||
l_smpt-auth-none = basics // {
|
||||
smtp = {
|
||||
host = "smtp.host.invalid";
|
||||
port = 42;
|
||||
};
|
||||
aerc = {
|
||||
enable = true;
|
||||
smtpAuth = "none";
|
||||
};
|
||||
};
|
||||
m_smpt-auth-plain = basics // {
|
||||
smtp = {
|
||||
host = "smtp.host.invalid";
|
||||
port = 42;
|
||||
};
|
||||
aerc = {
|
||||
enable = true;
|
||||
smtpAuth = "plain";
|
||||
};
|
||||
};
|
||||
n_smpt-auth-login = basics // {
|
||||
smtp = {
|
||||
host = "smtp.host.invalid";
|
||||
port = 42;
|
||||
};
|
||||
aerc = {
|
||||
enable = true;
|
||||
smtpAuth = "login";
|
||||
};
|
||||
};
|
||||
o_msmtp = basics // { msmtp = { enable = true; }; };
|
||||
};
|
||||
};
|
||||
}
|
||||
8
tests/modules/programs/aerc/stylesets.expected
Normal file
8
tests/modules/programs/aerc/stylesets.expected
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# Generated by Home Manager.
|
||||
|
||||
*.default = true
|
||||
*.selected.reverse = toggle
|
||||
*error.bold = true
|
||||
error.fg = red
|
||||
header.bold = true
|
||||
title.reverse = true
|
||||
3
tests/modules/programs/aerc/templates.expected
Normal file
3
tests/modules/programs/aerc/templates.expected
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
X-Mailer: aerc {{version}}
|
||||
|
||||
Just a test.
|
||||
Loading…
Add table
Add a link
Reference in a new issue