mirror of
https://github.com/nix-community/home-manager
synced 2024-11-18 17:19:45 +01:00
78 lines
1.8 KiB
Nix
78 lines
1.8 KiB
Nix
|
{ 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";
|
||
|
};
|
||
|
};
|
||
|
}
|