diff options
Diffstat (limited to 'pkgs/by-name/st/stalwart-mail-patched/package.nix')
-rw-r--r-- | pkgs/by-name/st/stalwart-mail-patched/package.nix | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/pkgs/by-name/st/stalwart-mail-patched/package.nix b/pkgs/by-name/st/stalwart-mail-patched/package.nix new file mode 100644 index 0000000..062ab2c --- /dev/null +++ b/pkgs/by-name/st/stalwart-mail-patched/package.nix @@ -0,0 +1,69 @@ +{ + stalwart-mail, + callPackage, + nixLib, + rustPlatform, + lib, +}: let + spamfilter = callPackage ./spam-filter.nix {}; +in + stalwart-mail.override { + rustPlatform = + rustPlatform + // { + buildRustPackage = prev: + rustPlatform.buildRustPackage ( + lib.attrsets.recursiveUpdate + prev + { + pname = "stalwart-mail-patched"; + + passthru = nixLib.warnMerge (prev.passthru or {}) { + # Use a reproducible source for the spamfilter instead of fetching it at runtime from GitHub. + inherit spamfilter; + } "stalwart-mail passthru"; + + cargoHash = "sha256-Rq18JumjKYt97WKIqnLakS+FQwsjt70irlYBYAYm3H8="; + + # The NixOS build tests should check if this works. + # And this shaves of around 50% of the build time. + doCheck = false; + + # We are already overriding it, so shaving of some unused features is okay. + buildNoDefaultFeatures = true; + buildFeatures = [ + # "sqlite" + # "postgres" + # "mysql" + "rocks" + # "elastic" + # "s3" + "redis" + "tls-native-roots" + ]; + + cargoPatches = + (prev.cargoPatches or []) + ++ [ + # `stalwart-mail` uses their bundled store, which makes it impossible to use our + # own CA certificate (e.g., for tests). Thus use a native version. + ./patches/0001-Allow-to-switch-to-operating-system-CA-root-store.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 + ''; + + meta.mainProgram = prev.meta.mainProgram or "stalwart-mail"; + } + ); + }; + } |