diff options
author | Jonas Heinrich <onny@project-insanity.org> | 2023-02-16 22:47:11 +0100 |
---|---|---|
committer | Yt <happysalada@proton.me> | 2023-02-17 17:42:27 -0500 |
commit | 13ff144c70351811141067d6e77b599e146e44b2 (patch) | |
tree | 62992c56dc0bead932f2cd6b67164c20f36c122a /nixos | |
parent | d79f5d4516cbfe17a6471a157cb1d7d02ee124e3 (diff) | |
download | nixlib-13ff144c70351811141067d6e77b599e146e44b2.tar nixlib-13ff144c70351811141067d6e77b599e146e44b2.tar.gz nixlib-13ff144c70351811141067d6e77b599e146e44b2.tar.bz2 nixlib-13ff144c70351811141067d6e77b599e146e44b2.tar.lz nixlib-13ff144c70351811141067d6e77b599e146e44b2.tar.xz nixlib-13ff144c70351811141067d6e77b599e146e44b2.tar.zst nixlib-13ff144c70351811141067d6e77b599e146e44b2.zip |
nixos/maddy: Add option ensureAccounts
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/services/mail/maddy.nix | 51 | ||||
-rw-r--r-- | nixos/tests/maddy.nix | 2 |
2 files changed, 45 insertions, 8 deletions
diff --git a/nixos/modules/services/mail/maddy.nix b/nixos/modules/services/mail/maddy.nix index eeb113e204c6..5f3a9b56292d 100644 --- a/nixos/modules/services/mail/maddy.nix +++ b/nixos/modules/services/mail/maddy.nix @@ -223,22 +223,59 @@ in { ''; }; + ensureAccounts = mkOption { + type = types.listOf types.str; + default = []; + description = lib.mdDoc '' + List of IMAP accounts which get automatically created. Note that for + a complete setup, user credentials for these accounts are required too + and can be created using the command `maddyctl creds`. + This option does not delete accounts which are not (anymore) listed. + ''; + example = [ + "user1@localhost" + "user2@localhost" + ]; + }; + }; }; config = mkIf cfg.enable { systemd = { + packages = [ pkgs.maddy ]; - services.maddy = { - serviceConfig = { - User = cfg.user; - Group = cfg.group; - StateDirectory = [ "maddy" ]; + services = { + maddy = { + serviceConfig = { + User = cfg.user; + Group = cfg.group; + StateDirectory = [ "maddy" ]; + }; + restartTriggers = [ config.environment.etc."maddy/maddy.conf".source ]; + wantedBy = [ "multi-user.target" ]; + }; + maddy-ensure-accounts = { + script = '' + ${optionalString (cfg.ensureAccounts != []) '' + ${concatMapStrings (account: '' + if ! ${pkgs.maddy}/bin/maddyctl imap-acct list | grep "${account}"; then + ${pkgs.maddy}/bin/maddyctl imap-acct create ${account} + fi + '') cfg.ensureAccounts} + ''} + ''; + serviceConfig = { + Type = "oneshot"; + User= "maddy"; + }; + after = [ "maddy.service" ]; + wantedBy = [ "multi-user.target" ]; }; - restartTriggers = [ config.environment.etc."maddy/maddy.conf".source ]; - wantedBy = [ "multi-user.target" ]; + }; + }; environment.etc."maddy/maddy.conf" = { diff --git a/nixos/tests/maddy.nix b/nixos/tests/maddy.nix index b9d0416482da..800d254f1770 100644 --- a/nixos/tests/maddy.nix +++ b/nixos/tests/maddy.nix @@ -9,6 +9,7 @@ import ./make-test-python.nix ({ pkgs, ... }: { hostname = "server"; primaryDomain = "server"; openFirewall = true; + ensureAccounts = [ "postmaster@server" ]; }; }; @@ -50,7 +51,6 @@ import ./make-test-python.nix ({ pkgs, ... }: { server.wait_for_open_port(587) server.succeed("maddyctl creds create --password test postmaster@server") - server.succeed("maddyctl imap-acct create postmaster@server") client.succeed("send-testmail") client.succeed("test-imap") |