mjolnir: refactor, 1.9.1 -> 1.9.2, fix building (#403356)

Changed files
+27 -105
nixos
modules
services
matrix
pkgs
by-name
+1 -1
nixos/modules/services/matrix/mjolnir.nix
···
# these config files will be merged one after the other to build the final config
configFiles = [
-
"${pkgs.mjolnir}/libexec/mjolnir/deps/mjolnir/config/default.yaml"
+
"${pkgs.mjolnir}/lib/node_modules/mjolnir/config/default.yaml"
moduleConfigFile
];
-75
pkgs/by-name/mj/mjolnir/package.json
···
-
{
-
"name": "mjolnir",
-
"version": "1.9.1",
-
"description": "A moderation tool for Matrix",
-
"main": "lib/index.js",
-
"repository": "git@github.com:matrix-org/mjolnir.git",
-
"author": "The Matrix.org Foundation C.I.C.",
-
"license": "Apache-2.0",
-
"private": true,
-
"scripts": {
-
"build": "tsc",
-
"postbuild": "rm -rf lib/test/ && cp -r lib/src/* lib/ && rm -rf lib/src/",
-
"lint": "tslint --project ./tsconfig.json -t stylish && npx prettier . --check",
-
"start:dev": "yarn build && node --async-stack-traces lib/index.js",
-
"test": "ts-mocha --project ./tsconfig.json test/commands/**/*.ts",
-
"test:integration": "NODE_ENV=harness ts-mocha --async-stack-traces --require test/integration/fixtures.ts --timeout 300000 --project ./tsconfig.json \"test/integration/**/*Test.ts\"",
-
"test:integration:single": "NODE_ENV=harness npx ts-mocha --require test/integration/fixtures.ts --timeout 300000 --project ./tsconfig.json",
-
"test:appservice:integration": "NODE_ENV=harness ts-mocha --async-stack-traces --timeout 300000 --project ./tsconfig.json \"test/appservice/integration/**/*Test.ts\"",
-
"test:appservice:integration:single": "NODE_ENV=harness npx ts-mocha --timeout 300000 --project ./tsconfig.json",
-
"test:manual": "NODE_ENV=harness ts-node test/integration/manualLaunchScript.ts",
-
"version": "sed -i '/# version automated/s/[0-9][0-9]*\\.[0-9][0-9]*\\.[0-9][0-9]*/'$npm_package_version'/' synapse_antispam/setup.py && git add synapse_antispam/setup.py && cat synapse_antispam/setup.py"
-
},
-
"devDependencies": {
-
"@types/config": "^3.3.0",
-
"@types/crypto-js": "^4.0.2",
-
"@types/express": "^4.17.13",
-
"@types/html-to-text": "^8.0.1",
-
"@types/humanize-duration": "^3.27.1",
-
"@types/js-yaml": "^4.0.5",
-
"@types/jsdom": "^16.2.11",
-
"@types/mocha": "^9.0.0",
-
"@types/nedb": "^1.8.12",
-
"@types/node": "^18.0.0",
-
"@types/pg": "^8.6.5",
-
"@types/request": "^2.48.8",
-
"@types/shell-quote": "1.7.1",
-
"crypto-js": "^4.2.0",
-
"eslint": "^7.32",
-
"expect": "^27.0.6",
-
"mocha": "^9.0.1",
-
"ts-mocha": "^9.0.2",
-
"tslint": "^6.1.3",
-
"typescript": "^4.8.4",
-
"typescript-formatter": "^7.2"
-
},
-
"dependencies": {
-
"@sentry/node": "^7.17.2",
-
"@sentry/tracing": "^7.17.2",
-
"@tensorflow/tfjs-node": "^4.21.0",
-
"@vector-im/matrix-bot-sdk": "^0.7.1-element.6",
-
"await-lock": "^2.2.2",
-
"axios": "^1.7.6",
-
"body-parser": "^1.20.1",
-
"config": "^3.3.8",
-
"express": "^4.20",
-
"html-to-text": "^8.0.0",
-
"humanize-duration": "^3.27.1",
-
"humanize-duration-ts": "^2.1.1",
-
"js-yaml": "^4.1.0",
-
"jsdom": "^16.6.0",
-
"lru-cache": "^11.0.1",
-
"matrix-appservice-bridge": "10.3.1",
-
"nsfwjs": "^4.1.0",
-
"parse-duration": "^1.0.2",
-
"pg": "^8.8.0",
-
"prom-client": "^14.1.0",
-
"shell-quote": "^1.7.3",
-
"ulidx": "^0.3.0",
-
"yaml": "^2.2.2"
-
},
-
"engines": {
-
"node": ">=20.0.0"
-
},
-
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
-
}
+26 -29
pkgs/by-name/mj/mjolnir/package.nix
···
{
lib,
-
mkYarnPackage,
+
stdenv,
+
yarnConfigHook,
+
yarnBuildHook,
+
yarnInstallHook,
+
nodejs,
fetchFromGitHub,
fetchYarnDeps,
matrix-sdk-crypto-nodejs,
makeWrapper,
-
nodejs,
nixosTests,
}:
-
mkYarnPackage rec {
+
stdenv.mkDerivation (finalAttrs: {
pname = "mjolnir";
-
version = "1.9.1";
+
version = "1.9.2";
src = fetchFromGitHub {
owner = "matrix-org";
repo = "mjolnir";
-
tag = "v${version}";
-
hash = "sha256-LK2CgMLDJHfr1+ejHYeJNw2ekCnUA8GHufZ6vbifzGQ=";
+
tag = "v${finalAttrs.version}";
+
hash = "sha256-OxHnCMP6IP0EaAs4YQgmV04tq6IdAYmKQX8O9Q48CPk=";
};
patches = [
···
./001-disable-nsfwprotection.patch
];
-
packageJSON = ./package.json;
-
offlineCache = fetchYarnDeps {
-
yarnLock = src + "/yarn.lock";
+
yarnLock = "${finalAttrs.src}/yarn.lock";
hash = "sha256-1V7ooONt9j+4hk/3w6Dsv/SdWwa1xsLk97EwhuPegNo=";
};
-
packageResolutions = {
-
"@matrix-org/matrix-sdk-crypto-nodejs" =
-
"${matrix-sdk-crypto-nodejs}/lib/node_modules/@matrix-org/matrix-sdk-crypto-nodejs";
-
};
+
nativeBuildInputs = [
+
yarnConfigHook
+
yarnBuildHook
+
yarnInstallHook
+
nodejs
+
makeWrapper
+
];
-
nativeBuildInputs = [ makeWrapper ];
-
-
buildPhase = ''
-
runHook preBuild
+
postInstall = ''
+
cp -r lib/* $out/lib/node_modules/mjolnir/lib/
-
pushd deps/${pname}
-
yarn run build
-
popd
+
rm -rf $out/lib/node_modules/mjolnir/node_modules/@matrix-org/matrix-sdk-crypto-nodejs
+
ln -s ${matrix-sdk-crypto-nodejs}/lib/node_modules/@matrix-org/matrix-sdk-crypto-nodejs $out/lib/node_modules/mjolnir/node_modules/@matrix-org/matrix-sdk-crypto-nodejs
-
runHook postBuild
-
'';
-
-
postInstall = ''
makeWrapper ${nodejs}/bin/node "$out/bin/mjolnir" \
-
--add-flags "$out/libexec/mjolnir/deps/mjolnir/lib/index.js"
+
--add-flags "$out/lib/node_modules/mjolnir/lib/index.js"
'';
passthru = {
···
};
};
-
meta = with lib; {
+
meta = {
description = "Moderation tool for Matrix";
homepage = "https://github.com/matrix-org/mjolnir";
longDescription = ''
···
A Synapse module is also available to apply the same rulesets the bot
uses across an entire homeserver.
'';
-
license = licenses.asl20;
-
maintainers = with maintainers; [ jojosch ];
+
license = lib.licenses.asl20;
+
maintainers = with lib.maintainers; [ jojosch ];
mainProgram = "mjolnir";
};
-
}
+
})