Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119{ config, lib, pkgs, ...}:
let cfg = config.programs.msmtp;
in{ meta.maintainers = with lib.maintainers; [ euxane ];
options = { programs.msmtp = { enable = lib.mkEnableOption "msmtp - an SMTP client";
package = lib.mkPackageOption pkgs "msmtp" { };
setSendmail = lib.mkOption { type = lib.types.bool; default = true; description = '' Whether to set the system sendmail to msmtp's. ''; };
defaults = lib.mkOption { type = lib.types.attrs; default = { }; example = { aliases = "/etc/aliases"; port = 587; tls = true; }; description = '' Default values applied to all accounts. See {manpage}`msmtp(1)` for the available options. ''; };
accounts = lib.mkOption { type = with lib.types; attrsOf attrs; default = { }; example = { "default" = { host = "smtp.example"; auth = true; user = "someone"; passwordeval = "cat /secrets/password.txt"; }; }; description = '' Named accounts and their respective configurations. The special name "default" allows a default account to be defined. See {manpage}`msmtp(1)` for the available options.
Use `programs.msmtp.extraConfig` instead of this attribute set-based option if ordered account inheritance is needed.
It is advised to use the `passwordeval` setting to read the password from a secret file to avoid having it written in the world-readable nix store. The password file must end with a newline (`\n`). ''; };
extraConfig = lib.mkOption { type = lib.types.lines; default = ""; description = '' Extra lines to add to the msmtp configuration verbatim. See {manpage}`msmtp(1)` for the syntax and available options. ''; }; }; };
config = lib.mkIf cfg.enable { environment.systemPackages = [ cfg.package ];
services.mail.sendmailSetuidWrapper = lib.mkIf cfg.setSendmail { program = "sendmail"; source = "${cfg.package}/bin/sendmail"; setuid = false; setgid = false; owner = "root"; group = "root"; };
environment.etc."msmtprc".text = let mkValueString = v: if v == true then "on" else if v == false then "off" else lib.generators.mkValueStringDefault { } v; mkKeyValueString = k: v: "${k} ${mkValueString v}"; mkInnerSectionString = attrs: builtins.concatStringsSep "\n" (lib.mapAttrsToList mkKeyValueString attrs); mkAccountString = name: attrs: '' account ${name} ${mkInnerSectionString attrs} ''; in '' defaults ${mkInnerSectionString cfg.defaults}
${builtins.concatStringsSep "\n" (lib.mapAttrsToList mkAccountString cfg.accounts)}
${cfg.extraConfig} ''; };}