aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-02-23 18:37:06 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-03-09 13:44:18 +0100
commit337afb96cb35fe525c851531fb04fd13989acbe5 (patch)
treeab59421fa236f7ac1a93681cbcb071040365844f /modules
parent{modules,tests}/dns: Init (diff)
downloadnixos-server-337afb96cb35fe525c851531fb04fd13989acbe5.zip
modules/stalwart-mail: Move the package to the `pkgs` subtree
Diffstat (limited to 'modules')
-rw-r--r--modules/by-name/st/stalwart-mail/module.nix50
-rw-r--r--modules/by-name/st/stalwart-mail/patches/build-crates-main-Cargo.toml-Activate-appropriate-de.patch26
-rw-r--r--modules/by-name/st/stalwart-mail/patches/fix-crates-directory-Guard-all-enterprise-only-featu.patch86
-rw-r--r--modules/by-name/st/stalwart-mail/spam-filter.nix24
4 files changed, 2 insertions, 184 deletions
diff --git a/modules/by-name/st/stalwart-mail/module.nix b/modules/by-name/st/stalwart-mail/module.nix
index e5a681e..4595c21 100644
--- a/modules/by-name/st/stalwart-mail/module.nix
+++ b/modules/by-name/st/stalwart-mail/module.nix
@@ -2,8 +2,7 @@
lib,
config,
pkgs,
- pkgsUnstable,
- nixLib,
+ vhackPackages,
...
}: let
cfg = config.vhack.stalwart-mail;
@@ -11,46 +10,6 @@
configFormat = pkgs.formats.toml {};
configFile = configFormat.generate "stalwart-mail.toml" topCfg.settings;
-
- spamfilter = pkgs.callPackage ./spam-filter.nix {};
-
- stalwart-mail = pkgsUnstable.stalwart-mail.overrideAttrs (final: prev: {
- passthru = nixLib.warnMerge (prev.passthru or {}) {
- inherit spamfilter;
- } "stalwart-mail passthru";
-
- checkFlags =
- (prev.checkFlags or [])
- ++ [
- # This started to fail?
- # TODO(@bpeetz): Find out why. <2025-02-08>
- "--skip=smtp::outbound::lmtp::lmtp_delivery"
- ];
-
- # `stalwart-mail` does enable their `enterprise` feature per default.
- # We want a AGPL only build (i.e., without unfree dependencies), therefore disable the
- # `enterprise` feature here.
- # We cannot use the `buildFeatures` attribute because it does not actually change the
- # correct features. As such we simply patch the correct `Cargo.toml` file.
- patches =
- (prev.patches or [])
- ++ [
- ./patches/build-crates-main-Cargo.toml-Activate-appropriate-de.patch
- ./patches/fix-crates-directory-Guard-all-enterprise-only-featu.patch
- ];
-
- # Check that the enterprise feature is really disabled.
- postCheck =
- (prev.postCheck or "")
- +
- # bash
- ''
- if grep "enterprise" ./target/*/release/stalwart-mail.d; then
- echo "ERROR: Proprietary 'enterprise' feature active."
- exit 1
- fi
- '';
- });
in {
imports = [
./settings.nix
@@ -59,12 +18,7 @@ in {
options.vhack.stalwart-mail = {
enable = lib.mkEnableOption "starwart-mail";
- # package = lib.mkPackageOption pkgsUnstable "stalwart-mail" {pkgsText = "pkgsUnstable";};
- package = lib.mkOption {
- description = "The stalwart-mail package to use";
- type = lib.types.package;
- default = stalwart-mail;
- };
+ package = lib.mkPackageOption vhackPackages "stalwart-mail-free" {};
fqdn = lib.mkOption {
type = lib.types.str;
diff --git a/modules/by-name/st/stalwart-mail/patches/build-crates-main-Cargo.toml-Activate-appropriate-de.patch b/modules/by-name/st/stalwart-mail/patches/build-crates-main-Cargo.toml-Activate-appropriate-de.patch
deleted file mode 100644
index bfea568..0000000
--- a/modules/by-name/st/stalwart-mail/patches/build-crates-main-Cargo.toml-Activate-appropriate-de.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 42cbd55c21196bdb57ac9795a938b94a781bb1e9 Mon Sep 17 00:00:00 2001
-From: Benedikt Peetz <benedikt.peetz@b-peetz.de>
-Date: Sun, 9 Feb 2025 00:17:52 +0100
-Subject: [PATCH] build(crates/main/Cargo.toml): Activate appropriate default
- features
-
----
- crates/main/Cargo.toml | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/crates/main/Cargo.toml b/crates/main/Cargo.toml
-index 036d2dcf..baa320ef 100644
---- a/crates/main/Cargo.toml
-+++ b/crates/main/Cargo.toml
-@@ -35,7 +35,7 @@ jemallocator = "0.5.0"
-
- [features]
- #default = ["sqlite", "postgres", "mysql", "rocks", "elastic", "s3", "redis", "azure", "enterprise"]
--default = ["rocks", "enterprise"]
-+default = ["rocks", "redis"]
- sqlite = ["store/sqlite"]
- foundationdb = ["store/foundation", "common/foundation"]
- postgres = ["store/postgres"]
---
-2.47.1
-
diff --git a/modules/by-name/st/stalwart-mail/patches/fix-crates-directory-Guard-all-enterprise-only-featu.patch b/modules/by-name/st/stalwart-mail/patches/fix-crates-directory-Guard-all-enterprise-only-featu.patch
deleted file mode 100644
index 80c4b60..0000000
--- a/modules/by-name/st/stalwart-mail/patches/fix-crates-directory-Guard-all-enterprise-only-featu.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 3d20702a481bfa4ecc692cd07a7f1fe0a66bb5d9 Mon Sep 17 00:00:00 2001
-From: Benedikt Peetz <benedikt.peetz@b-peetz.de>
-Date: Sun, 9 Feb 2025 00:38:13 +0100
-Subject: [PATCH] fix(crates/directory): Guard all enterprise only features
- behind a `enterprise` cfg block
-
----
- crates/directory/src/core/config.rs | 1 +
- crates/directory/src/core/dispatch.rs | 7 +++++++
- 2 files changed, 8 insertions(+)
-
-diff --git a/crates/directory/src/core/config.rs b/crates/directory/src/core/config.rs
-index dfb7bf9b..0c3ce96a 100644
---- a/crates/directory/src/core/config.rs
-+++ b/crates/directory/src/core/config.rs
-@@ -84,6 +84,7 @@ impl Directories {
- "memory" => MemoryDirectory::from_config(config, prefix, data_store.clone())
- .await
- .map(DirectoryInner::Memory),
-+ #[cfg(feature = "enterprise")]
- "oidc" => OpenIdDirectory::from_config(config, prefix, data_store.clone())
- .map(DirectoryInner::OpenId),
- unknown => {
-diff --git a/crates/directory/src/core/dispatch.rs b/crates/directory/src/core/dispatch.rs
-index a99e54fe..062f29c9 100644
---- a/crates/directory/src/core/dispatch.rs
-+++ b/crates/directory/src/core/dispatch.rs
-@@ -24,6 +24,7 @@ impl Directory {
- DirectoryInner::Imap(store) => store.query(by).await,
- DirectoryInner::Smtp(store) => store.query(by).await,
- DirectoryInner::Memory(store) => store.query(by).await,
-+ #[cfg(feature = "enterprise")]
- DirectoryInner::OpenId(store) => store.query(by, return_member_of).await,
- }
- .caused_by(trc::location!())
-@@ -37,6 +38,7 @@ impl Directory {
- DirectoryInner::Imap(store) => store.email_to_id(address).await,
- DirectoryInner::Smtp(store) => store.email_to_id(address).await,
- DirectoryInner::Memory(store) => store.email_to_id(address).await,
-+ #[cfg(feature = "enterprise")]
- DirectoryInner::OpenId(store) => store.email_to_id(address).await,
- }
- .caused_by(trc::location!())
-@@ -57,6 +59,7 @@ impl Directory {
- DirectoryInner::Imap(store) => store.is_local_domain(domain).await,
- DirectoryInner::Smtp(store) => store.is_local_domain(domain).await,
- DirectoryInner::Memory(store) => store.is_local_domain(domain).await,
-+ #[cfg(feature = "enterprise")]
- DirectoryInner::OpenId(store) => store.is_local_domain(domain).await,
- }
- .caused_by(trc::location!())?;
-@@ -84,6 +87,7 @@ impl Directory {
- DirectoryInner::Imap(store) => store.rcpt(email).await,
- DirectoryInner::Smtp(store) => store.rcpt(email).await,
- DirectoryInner::Memory(store) => store.rcpt(email).await,
-+ #[cfg(feature = "enterprise")]
- DirectoryInner::OpenId(store) => store.rcpt(email).await,
- }
- .caused_by(trc::location!())?;
-@@ -104,6 +108,7 @@ impl Directory {
- DirectoryInner::Imap(store) => store.vrfy(address).await,
- DirectoryInner::Smtp(store) => store.vrfy(address).await,
- DirectoryInner::Memory(store) => store.vrfy(address).await,
-+ #[cfg(feature = "enterprise")]
- DirectoryInner::OpenId(store) => store.vrfy(address).await,
- }
- .caused_by(trc::location!())
-@@ -117,6 +122,7 @@ impl Directory {
- DirectoryInner::Imap(store) => store.expn(address).await,
- DirectoryInner::Smtp(store) => store.expn(address).await,
- DirectoryInner::Memory(store) => store.expn(address).await,
-+ #[cfg(feature = "enterprise")]
- DirectoryInner::OpenId(store) => store.expn(address).await,
- }
- .caused_by(trc::location!())
-@@ -130,6 +136,7 @@ impl Directory {
- | DirectoryInner::Imap(_)
- | DirectoryInner::Smtp(_)
- | DirectoryInner::Memory(_) => false,
-+ #[cfg(feature = "enterprise")]
- DirectoryInner::OpenId(_) => true,
- }
- }
---
-2.47.1
-
diff --git a/modules/by-name/st/stalwart-mail/spam-filter.nix b/modules/by-name/st/stalwart-mail/spam-filter.nix
deleted file mode 100644
index ce3466d..0000000
--- a/modules/by-name/st/stalwart-mail/spam-filter.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- stdenv,
- fetchFromGitHub,
-}:
-stdenv.mkDerivation (finalAttrs: {
- pname = "spam-filter";
- version = "2.0.2";
-
- src = fetchFromGitHub {
- owner = "stalwartlabs";
- repo = "spam-filter";
- tag = "v${finalAttrs.version}";
- hash = "sha256-p2F0bwYBNWeoHjp9csWWaqeOISk9dNQT28OqkhUr7ew=";
- };
-
- buildPhase = ''
- bash ./build.sh
- '';
-
- installPhase = ''
- mkdir --parents "$out"
- cp ./spam-filter.toml "$out/"
- '';
-})