diff --git a/patches/400952.patch b/patches/400952.patch new file mode 100644 index 00000000..7eefa4ac --- /dev/null +++ b/patches/400952.patch @@ -0,0 +1,260 @@ +diff --git a/pkgs/by-name/ma/matrix-appservice-slack/package.json b/pkgs/by-name/ma/matrix-appservice-slack/package.json +deleted file mode 100644 +index d4a27436aea1ea..00000000000000 +--- a/pkgs/by-name/ma/matrix-appservice-slack/package.json ++++ /dev/null +@@ -1,96 +0,0 @@ +-{ +- "name": "matrix-appservice-slack", +- "version": "2.1.2", +- "description": "A Matrix <--> Slack bridge", +- "engines": { +- "node": ">=16 <=18" +- }, +- "main": "app.js", +- "scripts": { +- "prepare": "yarn build", +- "start": "node ./lib/app.js", +- "build": "yarn build:app && yarn build:widget", +- "build:app": "tsc --build", +- "build:widget": "vite build --config widget/vite.config.ts", +- "test": "yarn test:unit && yarn test:integration", +- "test:unit": "mocha --require ts-node/register --recursive tests/unit/*.ts", +- "test:integration": "mocha --exit --reporter list --ui bdd --require ts-node/register --recursive tests/integration/*.ts", +- "test:postgres": "SLACKBRIDGE_TEST_ENABLEPG=yes mocha --reporter list --ui bdd --require ts-node/register --recursive tests/integration/PgDatastoreTest.ts", +- "lint": "eslint -c .eslintrc.js ./src && eslint -c ./widget/.eslintrc.js 'widget/src/**/*.{ts,tsx}'" +- }, +- "repository": { +- "type": "git", +- "url": "git+https://github.com/matrix-org/matrix-appservice-slack.git" +- }, +- "keywords": [ +- "matrix-org", +- "slack" +- ], +- "author": "Matrix.org", +- "license": "Apache-2.0", +- "bugs": { +- "url": "https://github.com/matrix-org/matrix-appservice-slack/issues" +- }, +- "homepage": "https://github.com/matrix-org/matrix-appservice-slack#readme", +- "dependencies": { +- "@alloc/quick-lru": "^5.2.0", +- "@slack/logger": "^3.0.0", +- "@slack/rtm-api": "^6.0.0", +- "@slack/web-api": "^6.7.2", +- "Slackdown": "git+https://Half-Shot@github.com/half-shot/slackdown.git", +- "ajv": "^8.12.0", +- "axios": "^0.27.2", +- "classnames": "^2.3.2", +- "escape-string-regexp": "^4.0.0", +- "https-proxy-agent": "^5.0.1", +- "matrix-appservice-bridge": "^8.1.2", +- "matrix-widget-api": "^1.1.1", +- "minimist": "^1.2.6", +- "nedb": "^1.8.0", +- "node-emoji": "^1.10.0", +- "nunjucks": "^3.2.4", +- "p-queue": "^6.0.0", +- "pg-promise": "^10.11.1", +- "randomstring": "^1.2.1", +- "react": "^18.2.0", +- "react-dom": "^18.2.0", +- "url-join": "^5.0.0", +- "uuid": "^8.3.2", +- "yargs": "17.5.1" +- }, +- "devDependencies": { +- "@tailwindcss/forms": "^0.5.3", +- "@tsconfig/node16": "^1.0.3", +- "@types/chai": "^4.2.21", +- "@types/js-yaml": "^4.0.2", +- "@types/mocha": "^9.1.1", +- "@types/nedb": "^1.8.12", +- "@types/node": "^18.6.1", +- "@types/node-emoji": "^1.8.1", +- "@types/nunjucks": "^3.1.5", +- "@types/randomstring": "^1.1.7", +- "@types/react": "^18.0.27", +- "@types/react-dom": "^18.0.10", +- "@types/uuid": "^8.3.1", +- "@types/yargs": "17.0.10", +- "@typescript-eslint/eslint-plugin": "^5.0.0", +- "@typescript-eslint/parser": "^5.50.0", +- "@vitejs/plugin-react": "^3.1.0", +- "autoprefixer": "^10.4.13", +- "chai": "^4.3.4", +- "eslint": "^8.20.0", +- "eslint-plugin-jsdoc": "^39.3.3", +- "eslint-plugin-prefer-arrow": "^1.2.3", +- "eslint-plugin-react": "^7.32.2", +- "eslint-plugin-react-hooks": "^4.6.0", +- "js-yaml": "^4.1.0", +- "mocha": "^10.0.0", +- "postcss": "^8.4.21", +- "prom-client": "^14.0.1", +- "source-map-support": "^0.5.19", +- "tailwindcss": "^3.2.4", +- "ts-node": "^10.1.0", +- "typescript": "^4.4.3", +- "vite": "^4.1.1" +- } +-} +diff --git a/pkgs/by-name/ma/matrix-appservice-slack/package.nix b/pkgs/by-name/ma/matrix-appservice-slack/package.nix +index b37ebccbf2f275..480bd57ba3c8bb 100644 +--- a/pkgs/by-name/ma/matrix-appservice-slack/package.nix ++++ b/pkgs/by-name/ma/matrix-appservice-slack/package.nix +@@ -1,55 +1,74 @@ + { + lib, ++ stdenv, + fetchFromGitHub, + fetchYarnDeps, ++ yarnConfigHook, ++ yarnBuildHook, ++ nodejs_20, + makeWrapper, +- mkYarnPackage, +- nodejs_18, + callPackage, + }: + + let +- data = lib.importJSON ./pin.json; +- nodejs = nodejs_18; ++ nodejs = nodejs_20; + matrix-sdk-crypto-nodejs = callPackage ./matrix-sdk-crypto-nodejs-0_1_0-beta_3/package.nix { }; + in +-mkYarnPackage rec { +- inherit nodejs; +- ++stdenv.mkDerivation rec { + pname = "matrix-appservice-slack"; +- version = data.version; ++ version = "2.1.2"; + +- packageJSON = ./package.json; + src = fetchFromGitHub { + owner = "matrix-org"; + repo = "matrix-appservice-slack"; +- rev = data.version; +- hash = data.srcHash; ++ rev = version; ++ hash = "sha256-e9k+5xvgHkVt/fKAr0XhYjbEzHYwdGRdqiPWWbT0T5M="; + }; + +- offlineCache = fetchYarnDeps { ++ nativeBuildInputs = [ ++ makeWrapper ++ nodejs ++ yarnConfigHook ++ yarnBuildHook ++ ]; ++ ++ postPatch = '' ++ # upstream locks the supported node version range down, which we don't want ++ substituteInPlace package.json \ ++ --replace-fail '"node": ">=16 <=18"' '"node": ">=16"' ++ ''; ++ ++ yarnOfflineCache = fetchYarnDeps { + yarnLock = src + "/yarn.lock"; +- sha256 = data.yarnHash; +- }; +- packageResolutions = { +- "@matrix-org/matrix-sdk-crypto-nodejs" = +- "${matrix-sdk-crypto-nodejs}/lib/node_modules/@matrix-org/matrix-sdk-crypto-nodejs"; ++ hash = "sha256-fw4gXh4wfzHFgUYiEAvbhVrjno/E70iMhdk60F3Oxgg="; + }; + +- nativeBuildInputs = [ makeWrapper ]; ++ preBuild = '' ++ # matrix-sdk-crypto-nodejs needs rust to be built from source, which we can achieve in a separate derivation + +- buildPhase = '' +- runHook preBuild +- yarn run build +- runHook postBuild ++ # first, we ensure the separately built module's version is actually the same as the version in the lockfile ++ diff ${matrix-sdk-crypto-nodejs}/lib/node_modules/@matrix-org/matrix-sdk-crypto-nodejs/package.json node_modules/@matrix-org/matrix-sdk-crypto-nodejs/package.json ++ ++ # then we copy it into node_modules ++ rm -r node_modules/@matrix-org/matrix-sdk-crypto-nodejs ++ ln -s ${matrix-sdk-crypto-nodejs}/lib/node_modules/@matrix-org/matrix-sdk-crypto-nodejs node_modules/@matrix-org/matrix-sdk-crypto-nodejs + ''; + +- postInstall = '' +- makeWrapper '${nodejs}/bin/node' "$out/bin/matrix-appservice-slack" --add-flags \ +- "$out/libexec/matrix-appservice-slack/deps/matrix-appservice-slack/lib/app.js" ++ installPhase = '' ++ runHook preInstall ++ ++ mkdir -p "$out"/libexec/matrix-appservice-slack ++ cp -r package.json lib node_modules "$out"/libexec/matrix-appservice-slack ++ ++ makeWrapper '${lib.getExe nodejs}' "$out/bin/matrix-appservice-slack" --add-flags \ ++ "$out/libexec/matrix-appservice-slack/lib/app.js" ++ ++ runHook postInstall + ''; + +- doDist = false; ++ passthru = { ++ inherit matrix-sdk-crypto-nodejs; ++ }; + + meta = with lib; { + description = "Matrix <--> Slack bridge"; +diff --git a/pkgs/by-name/ma/matrix-appservice-slack/pin.json b/pkgs/by-name/ma/matrix-appservice-slack/pin.json +deleted file mode 100644 +index 3adfcbabae62b4..00000000000000 +--- a/pkgs/by-name/ma/matrix-appservice-slack/pin.json ++++ /dev/null +@@ -1,5 +0,0 @@ +-{ +- "version": "2.1.2", +- "srcHash": "sha256-e9k+5xvgHkVt/fKAr0XhYjbEzHYwdGRdqiPWWbT0T5M=", +- "yarnHash": "0266rrfx0fnrhn64ivy4iygf6nl5vc5i08j6h72k2zrh3rg203kz" +-} +diff --git a/pkgs/by-name/ma/matrix-appservice-slack/update.sh b/pkgs/by-name/ma/matrix-appservice-slack/update.sh +deleted file mode 100755 +index dc3bab3311f21c..00000000000000 +--- a/pkgs/by-name/ma/matrix-appservice-slack/update.sh ++++ /dev/null +@@ -1,36 +0,0 @@ +-#!/usr/bin/env nix-shell +-#!nix-shell -I nixpkgs=../../../../ -i bash -p nix curl jq prefetch-yarn-deps nix-prefetch-github nix-prefetch-git +- +-if [ "$#" -gt 1 ] || [[ "$1" == -* ]]; then +- echo "Regenerates packaging data for matrix-appservice-slack." +- echo "Usage: $0 [git release tag]" +- exit 1 +-fi +- +-version="$1" +- +-set -euo pipefail +- +-if [ -z "$version" ]; then +- version="$(curl "https://api.github.com/repos/matrix-org/matrix-appservice-slack/releases?per_page=1" | jq -r '.[0].tag_name')" +-fi +- +-src="https://raw.githubusercontent.com/matrix-org/matrix-appservice-slack/$version" +-src_hash=$(nix-prefetch-github matrix-org matrix-appservice-slack --rev ${version} | jq -r .hash) +- +-tmpdir=$(mktemp -d) +-trap 'rm -rf "$tmpdir"' EXIT +- +-pushd $tmpdir +-curl -O "$src/yarn.lock" +-yarn_hash=$(prefetch-yarn-deps yarn.lock) +-popd +- +-curl -O "$src/package.json" +-cat > pin.json << EOF +-{ +- "version": "$version", +- "srcHash": "$src_hash", +- "yarnHash": "$yarn_hash" +-} +-EOF