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