diff options
author | aszlig <aszlig@redmoonstudios.org> | 2015-03-18 20:58:26 +0100 |
---|---|---|
committer | aszlig <aszlig@redmoonstudios.org> | 2015-03-18 20:58:26 +0100 |
commit | 915e56fb4453b0701a423b0c96fb145318162ffd (patch) | |
tree | 5f401c864936101b93bb42c96a8d0c0b48710ae1 /modules/services/postfix/default.nix | |
parent | 58ff88492066a01db4348a7ec54390373ee5b0a3 (diff) |
Move last machine from labernix to vuizvui.
I've moved the restrictions config of Postfix into the default module for now and actually fixed it so that it's actually working (the config value wasn't set before). Also, the option type was incorrectly set to types.list, which aliases to types.listOf and expects another function (kind) as its argument. This marks the end of LaberNix and the beginning of a new Vuizvui! Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Diffstat (limited to 'modules/services/postfix/default.nix')
-rw-r--r-- | modules/services/postfix/default.nix | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/modules/services/postfix/default.nix b/modules/services/postfix/default.nix new file mode 100644 index 00000000..8a0865b9 --- /dev/null +++ b/modules/services/postfix/default.nix @@ -0,0 +1,65 @@ +{ config, lib, ... }: + +with lib; + +let + cfg = config.vuizvui.services.postfix; + + mkRestriction = name: specificDescription: { + option.${name} = mkOption { + default = null; + type = types.nullOr (types.listOf types.str); + description = '' + A list of restrictions to apply or <option>null</option> to use the + built-in default value from Postfix. + ${specificDescription} + ''; + }; + + config = let + restrictions = cfg.restrictions.${name}; + in mkIf (restrictions != null) { + services.postfix.extraConfig = '' + smtpd_${name}_restrictions = ${concatStringsSep ", " restrictions} + ''; + }; + }; + + restrictions = mapAttrsToList mkRestriction { + client = '' + SMTP server access restrictions in the context of a client SMTP connection + request. + ''; + data = '' + Access restrictions that the Postfix SMTP server applies in the context of + the SMTP DATA command. + ''; + end_of_data = '' + Access restrictions that the Postfix SMTP server applies in the context of + the SMTP END-OF-DATA command. + ''; + etrn = '' + SMTP server access restrictions in the context of a client ETRN request. + ''; + helo = '' + Restrictions that the Postfix SMTP server applies in the context of the + SMTP HELO command. + ''; + recipient = '' + Access restrictions that the Postfix SMTP server applies in the context of + the RCPT TO command. + ''; + sender = '' + Restrictions that the Postfix SMTP server applies in the context of the + MAIL FROM command. + ''; + }; + +in { + options.vuizvui.services.postfix = { + enable = mkEnableOption "Vuizvui Postfix"; + restrictions = fold mergeAttrs {} (catAttrs "option" restrictions); + }; + + config = mkIf cfg.enable (mkMerge (catAttrs "config" restrictions)); +} |