summary refs log tree commit diff
diff options
context:
space:
mode:
authorAaron Andersen <aaron@fosslib.net>2020-06-06 10:58:44 -0400
committerAaron Andersen <aaron@fosslib.net>2020-06-07 10:28:22 -0400
commit6394b12a07900d8acc01dc96a9669bed6549d1f9 (patch)
treef8e00d944b0a3ce7b291958d4e3d42977d76d1e2
parent7a07f2a5edd737cac1bc8613b7ac4ef35b221572 (diff)
downloadnixpkgs-6394b12a07900d8acc01dc96a9669bed6549d1f9.tar
nixpkgs-6394b12a07900d8acc01dc96a9669bed6549d1f9.tar.gz
nixpkgs-6394b12a07900d8acc01dc96a9669bed6549d1f9.tar.bz2
nixpkgs-6394b12a07900d8acc01dc96a9669bed6549d1f9.tar.lz
nixpkgs-6394b12a07900d8acc01dc96a9669bed6549d1f9.tar.xz
nixpkgs-6394b12a07900d8acc01dc96a9669bed6549d1f9.tar.zst
nixpkgs-6394b12a07900d8acc01dc96a9669bed6549d1f9.zip
nixos/ssmtp: add settings option
-rw-r--r--nixos/modules/programs/ssmtp.nix50
1 files changed, 37 insertions, 13 deletions
diff --git a/nixos/modules/programs/ssmtp.nix b/nixos/modules/programs/ssmtp.nix
index c7a94739349..eee36b6ae57 100644
--- a/nixos/modules/programs/ssmtp.nix
+++ b/nixos/modules/programs/ssmtp.nix
@@ -45,6 +45,21 @@ in
         '';
       };
 
+      settings = mkOption {
+        type = with types; attrsOf (oneOf [ bool str ]);
+        default = {};
+        description = ''
+          <citerefentry><refentrytitle>ssmtp</refentrytitle><manvolnum>5</manvolnum></citerefentry> configuration. Refer
+          to <link xlink:href="https://linux.die.net/man/5/ssmtp.conf"/> for details on supported values.
+        '';
+        example = literalExample ''
+          {
+            Debug = true;
+            FromLineOverride = false;
+          }
+        '';
+      };
+
       hostName = mkOption {
         type = types.str;
         example = "mail.example.org";
@@ -148,19 +163,28 @@ in
         text = cfg.authPass;
       })));
 
-    environment.etc."ssmtp/ssmtp.conf".text =
-      let yesNo = yes : if yes then "YES" else "NO"; in
-      ''
-        MailHub=${cfg.hostName}
-        FromLineOverride=YES
-        ${optionalString (cfg.root   != "") "root=${cfg.root}"}
-        ${optionalString (cfg.domain != "") "rewriteDomain=${cfg.domain}"}
-        UseTLS=${yesNo cfg.useTLS}
-        UseSTARTTLS=${yesNo cfg.useSTARTTLS}
-        #Debug=YES
-        ${optionalString (cfg.authUser != "")       "AuthUser=${cfg.authUser}"}
-        ${optionalString (cfg.authPassFile != null) "AuthPassFile=${cfg.authPassFile}"}
-      '';
+    services.ssmtp.settings = mkMerge [
+      ({
+        MailHub = cfg.hostName;
+        FromLineOverride = mkDefault true;
+        UseTLS = cfg.useTLS;
+        UseSTARTTLS = cfg.useSTARTTLS;
+      })
+      (mkIf (cfg.root != "") { root = cfg.root; })
+      (mkIf (cfg.domain != "") { rewriteDomain = cfg.domain; })
+      (mkIf (cfg.authUser != "") { AuthUser = cfg.authUser; })
+      (mkIf (cfg.authPassFile != null) { AuthPassFile = cfg.authPassFile; })
+    ];
+
+    environment.etc."ssmtp/ssmtp.conf".source =
+      let
+        toStr = value:
+          if value == true then "YES"
+          else if value == false then "NO"
+          else builtins.toString value
+        ;
+      in
+        pkgs.writeText "ssmtp.conf" (concatStringsSep "\n" (mapAttrsToList (key: value: "${key}=${toStr value}") cfg.settings));
 
     environment.systemPackages = [pkgs.ssmtp];