biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / servers / mjolnir / default.nix
blob4b450a8450f4ab168b0cc5058350691fcb82dfb2
1 { lib
2 , mkYarnPackage
3 , fetchFromGitHub
4 , fetchYarnDeps
5 , matrix-sdk-crypto-nodejs
6 , makeWrapper
7 , nodejs
8 , nixosTests
9 }:
11 mkYarnPackage rec {
12   pname = "mjolnir";
13   version = "1.6.5";
15   src = fetchFromGitHub {
16     owner = "matrix-org";
17     repo = "mjolnir";
18     rev = "refs/tags/v${version}";
19     hash = "sha256-xejFKz2MmdjMFU0X0SdI+qXTBRAwIvkcfZPQqXB9LV0=";
20   };
22   packageJSON = ./package.json;
24   offlineCache = fetchYarnDeps {
25     yarnLock = src + "/yarn.lock";
26     hash = "sha256-RpvdyxJj92k4wFjBBmWCnEpFVOXVWlHEm0SmEBUlnTM=";
27   };
29   packageResolutions = {
30     "@matrix-org/matrix-sdk-crypto-nodejs" = "${matrix-sdk-crypto-nodejs}/lib/node_modules/@matrix-org/matrix-sdk-crypto-nodejs";
31   };
33   nativeBuildInputs = [ makeWrapper ];
35   buildPhase = ''
36     runHook preBuild
38     pushd deps/${pname}
39     yarn run build
40     popd
42     runHook postBuild
43   '';
45   postInstall = ''
46     makeWrapper ${nodejs}/bin/node "$out/bin/mjolnir" \
47       --add-flags "$out/libexec/mjolnir/deps/mjolnir/lib/index.js"
48   '';
50   passthru = {
51     tests = {
52       inherit (nixosTests) mjolnir;
53     };
54   };
56   meta = with lib; {
57     description = "A moderation tool for Matrix";
58     homepage = "https://github.com/matrix-org/mjolnir";
59     longDescription = ''
60       As an all-in-one moderation tool, it can protect your server from
61       malicious invites, spam messages, and whatever else you don't want.
62       In addition to server-level protection, Mjolnir is great for communities
63       wanting to protect their rooms without having to use their personal
64       accounts for moderation.
66       The bot by default includes support for bans, redactions, anti-spam,
67       server ACLs, room directory changes, room alias transfers, account
68       deactivation, room shutdown, and more.
70       A Synapse module is also available to apply the same rulesets the bot
71       uses across an entire homeserver.
72     '';
73     license = licenses.asl20;
74     maintainers = with maintainers; [ jojosch ];
75     mainProgram = "mjolnir";
76   };