about summary refs log tree commit diff stats
path: root/pkgs/by-name/st/stalwart-mail-free/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/st/stalwart-mail-free/package.nix')
-rw-r--r--pkgs/by-name/st/stalwart-mail-free/package.nix44
1 files changed, 44 insertions, 0 deletions
diff --git a/pkgs/by-name/st/stalwart-mail-free/package.nix b/pkgs/by-name/st/stalwart-mail-free/package.nix
new file mode 100644
index 0000000..64fb2d6
--- /dev/null
+++ b/pkgs/by-name/st/stalwart-mail-free/package.nix
@@ -0,0 +1,44 @@
+{
+  pkgsUnstable,
+  callPackage,
+  nixLib,
+}: let
+  spamfilter = callPackage ./spam-filter.nix {};
+in
+  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
+      '';
+  })