Loading nixos/doc/manual/release-notes/rl-2411.section.md +5 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,11 @@ nvimpager settings: user commands in `-c` and `--cmd` now override the respective default settings because they are executed later. - Legacy package `stalwart-mail_0_6` was dropped, please note the [manual upgrade process](https://github.com/stalwartlabs/mail-server/blob/main/UPGRADING.md) before changing the package to `pkgs.stalwart-mail` in [`services.stalwart-mail.package`](#opt-services.stalwart-mail.package). ## Other Notable Changes {#sec-release-24.11-notable-changes} - Create the first release note entry in this section! Loading nixos/modules/services/mail/stalwart-mail.nix +2 −29 Original line number Diff line number Diff line Loading @@ -7,28 +7,12 @@ let configFormat = pkgs.formats.toml { }; configFile = configFormat.generate "stalwart-mail.toml" cfg.settings; dataDir = "/var/lib/stalwart-mail"; stalwartAtLeast = versionAtLeast cfg.package.version; in { options.services.stalwart-mail = { enable = mkEnableOption "the Stalwart all-in-one email server"; package = mkOption { type = types.package; description = '' Which package to use for the Stalwart mail server. ::: {.note} Upgrading from version 0.6.0 to version 0.7.0 or higher requires manual intervention. See <https://github.com/stalwartlabs/mail-server/blob/main/UPGRADING.md> for upgrade instructions. ::: ''; default = pkgs.stalwart-mail_0_6; defaultText = lib.literalExpression "pkgs.stalwart-mail_0_6"; example = lib.literalExpression "pkgs.stalwart-mail"; relatedPackages = [ "stalwart-mail_0_6" "stalwart-mail" ]; }; package = mkPackageOption pkgs "stalwart-mail" { }; settings = mkOption { inherit (configFormat) type; Loading @@ -44,17 +28,6 @@ in { config = mkIf cfg.enable { warnings = lib.optionals (!stalwartAtLeast "0.7.0") [ '' Versions of stalwart-mail < 0.7.0 will get deprecated in NixOS 24.11. Please set services.stalwart-mail.package to pkgs.stalwart-mail to upgrade to the latest version. Please note that upgrading to version >= 0.7 requires manual intervention, see <https://github.com/stalwartlabs/mail-server/blob/main/UPGRADING.md> for upgrade instructions. '' ]; # Default config: all local services.stalwart-mail.settings = { global.tracing.method = mkDefault "stdout"; Loading Loading @@ -138,6 +111,6 @@ in { }; meta = { maintainers = with maintainers; [ happysalada pacien ]; maintainers = with maintainers; [ happysalada pacien onny ]; }; } nixos/tests/stalwart-mail.nix +106 −133 Original line number Diff line number Diff line # Rudimentary test checking that the Stalwart email server can: # - receive some message through SMTP submission, then # - serve this message through IMAP. { system ? builtins.currentSystem, config ? { }, pkgs ? import ../../.. { inherit system config; }, lib ? pkgs.lib, }: let certs = import ./common/acme/server/snakeoil-certs.nix; domain = certs.domain; makeTest = import ./make-test-python.nix; mkTestName = pkg: "${pkg.pname}_${pkg.version}"; stalwartPackages = { inherit (pkgs) stalwart-mail_0_6 stalwart-mail; }; stalwartAtLeast = lib.versionAtLeast; makeStalwartTest = { package, name ? mkTestName package, }: makeTest { inherit name; meta.maintainers = with lib.maintainers; [ happysalada pacien onny ]; nodes.machine = { lib, ... }: { in import ./make-test-python.nix ({ lib, ... }: { name = "stalwart-mail"; nodes.main = { pkgs, ... }: { security.pki.certificateFiles = [ certs.ca.cert ]; services.stalwart-mail = { enable = true; inherit package; settings = { server.hostname = domain; # TODO: Remove backwards compatibility as soon as we drop legacy version 0.6.0 certificate."snakeoil" = let certPath = if stalwartAtLeast package.version "0.7.0" then "%{file://${certs.${domain}.cert}}%" else "file://${certs.${domain}.cert}"; keyPath = if stalwartAtLeast package.version "0.7.0" then "%{file:${certs.${domain}.key}}%" else "file://${certs.${domain}.key}"; in { cert = certPath; private-key = keyPath; certificate."snakeoil" = { cert = "%{file:${certs.${domain}.cert}}%"; private-key = "%{file:${certs.${domain}.key}}%"; }; server.tls = { Loading Loading @@ -75,16 +49,15 @@ let directory."in-memory" = { type = "memory"; # TODO: Remove backwards compatibility as soon as we drop legacy version 0.6.0 principals = let condition = if stalwartAtLeast package.version "0.7.0" then "class" else "type"; in builtins.map (p: p // { ${condition} = "individual"; }) [ principals = [ { class = "individual"; name = "alice"; secret = "foobar"; email = [ "alice@${domain}" ]; } { class = "individual"; name = "bob"; secret = "foobar"; email = [ "bob@${domain}" ]; Loading Loading @@ -130,18 +103,18 @@ let assert msg[0][1].strip() == b'This is a test message.' '') ]; }; testScript = '' start_all() machine.wait_for_unit("stalwart-mail.service") machine.wait_for_open_port(587) machine.wait_for_open_port(143) testScript = /* python */ '' main.wait_for_unit("stalwart-mail.service") main.wait_for_open_port(587) main.wait_for_open_port(143) machine.succeed("test-smtp-submission") machine.succeed("test-imap-read") main.succeed("test-smtp-submission") main.succeed("test-imap-read") ''; meta = { maintainers = with lib.maintainers; [ happysalada pacien onny ]; }; in lib.mapAttrs (_: package: makeStalwartTest { inherit package; }) stalwartPackages }) pkgs/by-name/st/stalwart-mail/package.nix +1 −1 Original line number Diff line number Diff line Loading @@ -75,6 +75,6 @@ rustPlatform.buildRustPackage { homepage = "https://github.com/stalwartlabs/mail-server"; changelog = "https://github.com/stalwartlabs/mail-server/blob/${version}/CHANGELOG"; license = licenses.agpl3Only; maintainers = with maintainers; [ happysalada ]; maintainers = with maintainers; [ happysalada onny ]; }; } pkgs/top-level/all-packages.nix +0 −17 Original line number Diff line number Diff line Loading @@ -26586,23 +26586,6 @@ with pkgs; thttpd = callPackage ../servers/http/thttpd { }; stalwart-mail_0_6 = (stalwart-mail.override { rocksdb_8_11 = rocksdb_8_3; }).overrideAttrs (old: rec { pname = "stalwart-mail_0_6"; version = "0.6.0"; src = fetchFromGitHub { owner = "stalwartlabs"; repo = "mail-server"; rev = "v${version}"; hash = "sha256-OHwUWSUW6ovLQTxnuUrolQGhxbhp4YqKSH+ZTpe2WXc="; fetchSubmodules = true; }; cargoDeps = old.cargoDeps.overrideAttrs (_: { inherit src; name = "${pname}-${version}-vendor.tar.gz"; outputHash = "sha256-mW3OXQj6DcIMO1YlTG3G+a1ORRcuvp5/h7BU+b4QbnE="; }); }); static-web-server = callPackage ../servers/static-web-server { }; stone = callPackage ../servers/stone { }; Loading
nixos/doc/manual/release-notes/rl-2411.section.md +5 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,11 @@ nvimpager settings: user commands in `-c` and `--cmd` now override the respective default settings because they are executed later. - Legacy package `stalwart-mail_0_6` was dropped, please note the [manual upgrade process](https://github.com/stalwartlabs/mail-server/blob/main/UPGRADING.md) before changing the package to `pkgs.stalwart-mail` in [`services.stalwart-mail.package`](#opt-services.stalwart-mail.package). ## Other Notable Changes {#sec-release-24.11-notable-changes} - Create the first release note entry in this section! Loading
nixos/modules/services/mail/stalwart-mail.nix +2 −29 Original line number Diff line number Diff line Loading @@ -7,28 +7,12 @@ let configFormat = pkgs.formats.toml { }; configFile = configFormat.generate "stalwart-mail.toml" cfg.settings; dataDir = "/var/lib/stalwart-mail"; stalwartAtLeast = versionAtLeast cfg.package.version; in { options.services.stalwart-mail = { enable = mkEnableOption "the Stalwart all-in-one email server"; package = mkOption { type = types.package; description = '' Which package to use for the Stalwart mail server. ::: {.note} Upgrading from version 0.6.0 to version 0.7.0 or higher requires manual intervention. See <https://github.com/stalwartlabs/mail-server/blob/main/UPGRADING.md> for upgrade instructions. ::: ''; default = pkgs.stalwart-mail_0_6; defaultText = lib.literalExpression "pkgs.stalwart-mail_0_6"; example = lib.literalExpression "pkgs.stalwart-mail"; relatedPackages = [ "stalwart-mail_0_6" "stalwart-mail" ]; }; package = mkPackageOption pkgs "stalwart-mail" { }; settings = mkOption { inherit (configFormat) type; Loading @@ -44,17 +28,6 @@ in { config = mkIf cfg.enable { warnings = lib.optionals (!stalwartAtLeast "0.7.0") [ '' Versions of stalwart-mail < 0.7.0 will get deprecated in NixOS 24.11. Please set services.stalwart-mail.package to pkgs.stalwart-mail to upgrade to the latest version. Please note that upgrading to version >= 0.7 requires manual intervention, see <https://github.com/stalwartlabs/mail-server/blob/main/UPGRADING.md> for upgrade instructions. '' ]; # Default config: all local services.stalwart-mail.settings = { global.tracing.method = mkDefault "stdout"; Loading Loading @@ -138,6 +111,6 @@ in { }; meta = { maintainers = with maintainers; [ happysalada pacien ]; maintainers = with maintainers; [ happysalada pacien onny ]; }; }
nixos/tests/stalwart-mail.nix +106 −133 Original line number Diff line number Diff line # Rudimentary test checking that the Stalwart email server can: # - receive some message through SMTP submission, then # - serve this message through IMAP. { system ? builtins.currentSystem, config ? { }, pkgs ? import ../../.. { inherit system config; }, lib ? pkgs.lib, }: let certs = import ./common/acme/server/snakeoil-certs.nix; domain = certs.domain; makeTest = import ./make-test-python.nix; mkTestName = pkg: "${pkg.pname}_${pkg.version}"; stalwartPackages = { inherit (pkgs) stalwart-mail_0_6 stalwart-mail; }; stalwartAtLeast = lib.versionAtLeast; makeStalwartTest = { package, name ? mkTestName package, }: makeTest { inherit name; meta.maintainers = with lib.maintainers; [ happysalada pacien onny ]; nodes.machine = { lib, ... }: { in import ./make-test-python.nix ({ lib, ... }: { name = "stalwart-mail"; nodes.main = { pkgs, ... }: { security.pki.certificateFiles = [ certs.ca.cert ]; services.stalwart-mail = { enable = true; inherit package; settings = { server.hostname = domain; # TODO: Remove backwards compatibility as soon as we drop legacy version 0.6.0 certificate."snakeoil" = let certPath = if stalwartAtLeast package.version "0.7.0" then "%{file://${certs.${domain}.cert}}%" else "file://${certs.${domain}.cert}"; keyPath = if stalwartAtLeast package.version "0.7.0" then "%{file:${certs.${domain}.key}}%" else "file://${certs.${domain}.key}"; in { cert = certPath; private-key = keyPath; certificate."snakeoil" = { cert = "%{file:${certs.${domain}.cert}}%"; private-key = "%{file:${certs.${domain}.key}}%"; }; server.tls = { Loading Loading @@ -75,16 +49,15 @@ let directory."in-memory" = { type = "memory"; # TODO: Remove backwards compatibility as soon as we drop legacy version 0.6.0 principals = let condition = if stalwartAtLeast package.version "0.7.0" then "class" else "type"; in builtins.map (p: p // { ${condition} = "individual"; }) [ principals = [ { class = "individual"; name = "alice"; secret = "foobar"; email = [ "alice@${domain}" ]; } { class = "individual"; name = "bob"; secret = "foobar"; email = [ "bob@${domain}" ]; Loading Loading @@ -130,18 +103,18 @@ let assert msg[0][1].strip() == b'This is a test message.' '') ]; }; testScript = '' start_all() machine.wait_for_unit("stalwart-mail.service") machine.wait_for_open_port(587) machine.wait_for_open_port(143) testScript = /* python */ '' main.wait_for_unit("stalwart-mail.service") main.wait_for_open_port(587) main.wait_for_open_port(143) machine.succeed("test-smtp-submission") machine.succeed("test-imap-read") main.succeed("test-smtp-submission") main.succeed("test-imap-read") ''; meta = { maintainers = with lib.maintainers; [ happysalada pacien onny ]; }; in lib.mapAttrs (_: package: makeStalwartTest { inherit package; }) stalwartPackages })
pkgs/by-name/st/stalwart-mail/package.nix +1 −1 Original line number Diff line number Diff line Loading @@ -75,6 +75,6 @@ rustPlatform.buildRustPackage { homepage = "https://github.com/stalwartlabs/mail-server"; changelog = "https://github.com/stalwartlabs/mail-server/blob/${version}/CHANGELOG"; license = licenses.agpl3Only; maintainers = with maintainers; [ happysalada ]; maintainers = with maintainers; [ happysalada onny ]; }; }
pkgs/top-level/all-packages.nix +0 −17 Original line number Diff line number Diff line Loading @@ -26586,23 +26586,6 @@ with pkgs; thttpd = callPackage ../servers/http/thttpd { }; stalwart-mail_0_6 = (stalwart-mail.override { rocksdb_8_11 = rocksdb_8_3; }).overrideAttrs (old: rec { pname = "stalwart-mail_0_6"; version = "0.6.0"; src = fetchFromGitHub { owner = "stalwartlabs"; repo = "mail-server"; rev = "v${version}"; hash = "sha256-OHwUWSUW6ovLQTxnuUrolQGhxbhp4YqKSH+ZTpe2WXc="; fetchSubmodules = true; }; cargoDeps = old.cargoDeps.overrideAttrs (_: { inherit src; name = "${pname}-${version}-vendor.tar.gz"; outputHash = "sha256-mW3OXQj6DcIMO1YlTG3G+a1ORRcuvp5/h7BU+b4QbnE="; }); }); static-web-server = callPackage ../servers/static-web-server { }; stone = callPackage ../servers/stone { };