msmtp: add module
msmtp is a simple mail transfer agent (MTA).
This commit is contained in:
parent
906965b48b
commit
cfa06c3f38
|
@ -318,6 +318,7 @@ in
|
||||||
type = types.attrsOf (types.submodule [
|
type = types.attrsOf (types.submodule [
|
||||||
mailAccountOpts
|
mailAccountOpts
|
||||||
(import ../programs/mbsync-accounts.nix)
|
(import ../programs/mbsync-accounts.nix)
|
||||||
|
(import ../programs/msmtp-accounts.nix)
|
||||||
(import ../programs/notmuch-accounts.nix)
|
(import ../programs/notmuch-accounts.nix)
|
||||||
]);
|
]);
|
||||||
default = {};
|
default = {};
|
||||||
|
|
|
@ -758,6 +758,13 @@ in
|
||||||
A new modules is available: 'programs.chromium'.
|
A new modules is available: 'programs.chromium'.
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
time = "2018-08-20T20:27:26+00:00";
|
||||||
|
message = ''
|
||||||
|
A new module is available: 'programs.msmtp'.
|
||||||
|
'';
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,7 @@ let
|
||||||
./programs/man.nix
|
./programs/man.nix
|
||||||
./programs/mbsync.nix
|
./programs/mbsync.nix
|
||||||
./programs/mercurial.nix
|
./programs/mercurial.nix
|
||||||
|
./programs/msmtp.nix
|
||||||
./programs/neovim.nix
|
./programs/neovim.nix
|
||||||
./programs/newsboat.nix
|
./programs/newsboat.nix
|
||||||
./programs/notmuch.nix
|
./programs/notmuch.nix
|
||||||
|
|
25
modules/programs/msmtp-accounts.nix
Normal file
25
modules/programs/msmtp-accounts.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
{
|
||||||
|
options.msmtp = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Whether to enable msmtp.
|
||||||
|
</para><para>
|
||||||
|
If enabled then it is possible to use the
|
||||||
|
<option>--account</option> command line option to send a
|
||||||
|
message for a given account using the <command>msmtp</command>
|
||||||
|
or <command>msmtpq</command> tool. For example,
|
||||||
|
<command>msmtp --account=private</command>
|
||||||
|
would send using the account defined in
|
||||||
|
<option>accounts.email.accounts.private</option>. If the
|
||||||
|
<option>--account</option> option is not given then the
|
||||||
|
primary account will be used.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
77
modules/programs/msmtp.nix
Normal file
77
modules/programs/msmtp.nix
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
cfg = config.programs.msmtp;
|
||||||
|
|
||||||
|
dag = config.lib.dag;
|
||||||
|
|
||||||
|
msmtpAccounts = filter (a: a.msmtp.enable)
|
||||||
|
(attrValues config.accounts.email.accounts);
|
||||||
|
|
||||||
|
onOff = p: if p then "on" else "off";
|
||||||
|
|
||||||
|
accountStr = account: with account;
|
||||||
|
concatStringsSep "\n" (
|
||||||
|
[ "account ${name}" ]
|
||||||
|
++ mapAttrsToList (n: v: n + " " + v) (
|
||||||
|
{
|
||||||
|
host = smtp.host;
|
||||||
|
from = address;
|
||||||
|
auth = "on";
|
||||||
|
user = userName;
|
||||||
|
tls = onOff smtp.tls.enable;
|
||||||
|
tls_starttls = onOff smtp.tls.useStartTls;
|
||||||
|
tls_trust_file = smtp.tls.certificatesFile;
|
||||||
|
}
|
||||||
|
// optionalAttrs (smtp.port != null) {
|
||||||
|
port = toString smtp.port;
|
||||||
|
}
|
||||||
|
// optionalAttrs (passwordCommand != null) {
|
||||||
|
# msmtp requires the password to finish with a newline.
|
||||||
|
passwordeval = ''${pkgs.bash}/bin/bash -c "${toString passwordCommand}; echo"'';
|
||||||
|
}
|
||||||
|
)
|
||||||
|
++ optional primary "\naccount default : ${name}"
|
||||||
|
);
|
||||||
|
|
||||||
|
configFile = mailAccounts: ''
|
||||||
|
# Generated by Home Manager.
|
||||||
|
|
||||||
|
${cfg.extraConfig}
|
||||||
|
|
||||||
|
${concatStringsSep "\n\n" (map accountStr mailAccounts)}
|
||||||
|
'';
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
options = {
|
||||||
|
programs.msmtp = {
|
||||||
|
enable = mkEnableOption "msmtp";
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
description = ''
|
||||||
|
Extra configuration lines to add to <filename>~/.msmtprc</filename>.
|
||||||
|
See <link xlink:href="https://marlam.de/msmtp/msmtprc.txt"/> for examples.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = [ pkgs.msmtp ];
|
||||||
|
|
||||||
|
home.file.".msmtprc".text = configFile msmtpAccounts;
|
||||||
|
|
||||||
|
home.sessionVariables = {
|
||||||
|
MSMTP_QUEUE = "${config.xdg.dataHome}/msmtp/queue";
|
||||||
|
MSMTP_LOG = "${config.xdg.dataHome}/msmtp/queue.log";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue