From 73bd9906eabab61c180fbb31173b3d6173dddc0f Mon Sep 17 00:00:00 2001 From: Defelo Date: Tue, 1 Apr 2025 19:09:41 +0200 Subject: [PATCH 1/3] synapse-admin: 0.10.0 -> 0.10.3 --- pkgs/by-name/sy/synapse-admin/package.json | 91 -------------- pkgs/by-name/sy/synapse-admin/package.nix | 134 ++++++++++++++++----- 2 files changed, 104 insertions(+), 121 deletions(-) delete mode 100644 pkgs/by-name/sy/synapse-admin/package.json diff --git a/pkgs/by-name/sy/synapse-admin/package.json b/pkgs/by-name/sy/synapse-admin/package.json deleted file mode 100644 index 851fba613b30..000000000000 --- a/pkgs/by-name/sy/synapse-admin/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "name": "synapse-admin", - "version": "0.10.0", - "description": "Admin GUI for the Matrix.org server Synapse", - "type": "module", - "author": "Awesome Technologies Innovationslabor GmbH", - "license": "Apache-2.0", - "homepage": ".", - "repository": { - "type": "git", - "url": "https://github.com/Awesome-Technologies/synapse-admin" - }, - "devDependencies": { - "@babel/preset-env": "^7.24.4", - "@babel/preset-react": "^7.24.1", - "@testing-library/jest-dom": "^6.0.0", - "@testing-library/react": "^15.0.2", - "@testing-library/user-event": "^14.5.2", - "@vitejs/plugin-react": "^4.0.0", - "babel-jest": "^29.7.0", - "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", - "eslint-config-react-app": "^7.0.1", - "eslint-plugin-prettier": "^5.1.3", - "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", - "jest-fetch-mock": "^3.0.3", - "prettier": "^3.2.5", - "react-test-renderer": "^18.2.0", - "vite": "^5.0.0", - "vite-plugin-version-mark": "^0.0.13" - }, - "dependencies": { - "@haleos/ra-language-german": "^1.0.0", - "@haxqer/ra-language-chinese": "^4.16.2", - "@mui/icons-material": "^5.15.15", - "@mui/material": "^5.15.15", - "@mui/styles": "^5.15.15", - "papaparse": "^5.4.1", - "ra-language-farsi": "^4.2.0", - "ra-language-french": "^4.16.15", - "ra-language-italian": "^3.13.1", - "react": "^18.0.0", - "react-admin": "^4.16.15", - "react-dom": "^18.0.0" - }, - "scripts": { - "start": "vite serve", - "build": "vite build", - "fix:other": "yarn prettier --write", - "fix:code": "yarn test:lint --fix", - "fix": "yarn fix:code && yarn fix:other", - "prettier": "prettier --ignore-path .gitignore \"**/*.{js,jsx,json,md,scss,yaml,yml}\"", - "test:code": "jest", - "test:lint": "eslint --ignore-path .gitignore --ext .js,.jsx .", - "test:style": "yarn prettier --list-different", - "test": "yarn test:style && yarn test:lint && yarn test:code" - }, - "babel": { - "presets": [ - "@babel/preset-env", - [ - "@babel/preset-react", - { - "runtime": "automatic" - } - ] - ] - }, - "eslintConfig": { - "extends": "react-app" - }, - "jest": { - "testEnvironment": "jsdom", - "setupFilesAfterEnv": [ - "/src/setupTests.js" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - } -} diff --git a/pkgs/by-name/sy/synapse-admin/package.nix b/pkgs/by-name/sy/synapse-admin/package.nix index 4c2e5bfce656..6142b758f89c 100644 --- a/pkgs/by-name/sy/synapse-admin/package.nix +++ b/pkgs/by-name/sy/synapse-admin/package.nix @@ -1,67 +1,141 @@ { lib, + stdenv, fetchFromGitHub, - fetchYarnDeps, - mkYarnPackage, + nodejs, + yarn-berry, + cacert, + formats, baseUrl ? null, - writeShellScriptBin, }: -mkYarnPackage rec { +let + config = lib.optionalAttrs (baseUrl != null) { restrictBaseUrl = baseUrl; }; + configFormat = formats.json { }; + configFile = configFormat.generate "synapse-admin-config" config; +in + +stdenv.mkDerivation (finalAttrs: { pname = "synapse-admin"; - version = "0.10.0"; + version = "0.10.3"; + src = fetchFromGitHub { owner = "Awesome-Technologies"; repo = "synapse-admin"; - tag = version; - sha256 = "sha256-3MC5PCEwYfZzJy9AW9nHTpvU49Lk6wbYC4Rcv9J9MEg="; + tag = finalAttrs.version; + hash = "sha256-o2HzGuKjmIeJ+Kxd9KiFWmQgGVtvRdydiQJlr6P0+s8="; }; - packageJSON = ./package.json; + # we cannot use fetchYarnDeps because that doesn't support yarn 2/berry lockfiles + yarnOfflineCache = stdenv.mkDerivation { + pname = "yarn-deps"; + inherit (finalAttrs) version src; - offlineCache = fetchYarnDeps { - yarnLock = "${src}/yarn.lock"; - hash = "sha256-vpCwPL1B+hbIaVSHtlkGjPAteu9BFNNmCTE66CSyFkg="; + nativeBuildInputs = [ yarn-berry ]; + + dontInstall = true; + + env = { + YARN_ENABLE_TELEMETRY = 0; + NODE_EXTRA_CA_CERTS = "${cacert}/etc/ssl/certs/ca-bundle.crt"; + }; + + supportedArchitectures = builtins.toJSON { + os = [ + "darwin" + "linux" + ]; + cpu = [ + "arm" + "arm64" + "ia32" + "x64" + ]; + libc = [ + "glibc" + "musl" + ]; + }; + + configurePhase = '' + runHook preConfigure + + export HOME="$NIX_BUILD_TOP" + yarn config set enableGlobalCache false + yarn config set cacheFolder $out + yarn config set --json supportedArchitectures "$supportedArchitectures" + + runHook postConfigure + ''; + + buildPhase = '' + runHook preBuild + + mkdir -p $out + yarn install --immutable --mode skip-build + + runHook postBuild + ''; + + outputHash = "sha256-hIz+tWaDiq9qslEKjRyNzC0z1zA5TFgVr/hf3/T6YGw="; + outputHashMode = "recursive"; }; nativeBuildInputs = [ - (writeShellScriptBin "git" "echo ${version}") + nodejs + yarn-berry ]; - NODE_ENV = "production"; - ${if baseUrl != null then "REACT_APP_SERVER" else null} = baseUrl; + env = { + NODE_ENV = "production"; + }; - # error:0308010C:digital envelope routines::unsupported - NODE_OPTIONS = "--openssl-legacy-provider"; + postPatch = '' + substituteInPlace vite.config.ts \ + --replace-fail "git describe --tags" "echo ${finalAttrs.version}" + ''; + + configurePhase = '' + runHook preConfigure + + export HOME="$NIX_BUILD_TOP" + yarn config set enableGlobalCache false + yarn config set cacheFolder $yarnOfflineCache + + runHook postConfigure + ''; buildPhase = '' runHook preBuild - export HOME=$(mktemp -d) - yarn --offline run build + yarn install --immutable --immutable-cache + yarn build runHook postBuild ''; - distPhase = '' - runHook preDist + installPhase = '' + runHook preInstall - cp -r deps/synapse-admin/dist $out + cp -r dist $out + cp ${configFile} $out/config.json - runHook postDist + runHook postInstall ''; - dontFixup = true; - dontInstall = true; - - meta = with lib; { + meta = { description = "Admin UI for Synapse Homeservers"; homepage = "https://github.com/Awesome-Technologies/synapse-admin"; - license = licenses.asl20; - platforms = platforms.all; - maintainers = with maintainers; [ + license = lib.licenses.asl20; + platforms = [ + "x86_64-linux" + "aarch64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + maintainers = with lib.maintainers; [ mkg20001 ma27 ]; }; -} +}) From bdcdeb7111490f682ffbdced5e94c996593ac853 Mon Sep 17 00:00:00 2001 From: Defelo Date: Tue, 1 Apr 2025 19:13:54 +0200 Subject: [PATCH 2/3] synapse-admin: add updateScript --- pkgs/by-name/sy/synapse-admin/package.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/by-name/sy/synapse-admin/package.nix b/pkgs/by-name/sy/synapse-admin/package.nix index 6142b758f89c..6fdb92e96d17 100644 --- a/pkgs/by-name/sy/synapse-admin/package.nix +++ b/pkgs/by-name/sy/synapse-admin/package.nix @@ -5,6 +5,7 @@ nodejs, yarn-berry, cacert, + nix-update-script, formats, baseUrl ? null, }: @@ -123,6 +124,8 @@ stdenv.mkDerivation (finalAttrs: { runHook postInstall ''; + passthru.updateScript = nix-update-script { }; + meta = { description = "Admin UI for Synapse Homeservers"; homepage = "https://github.com/Awesome-Technologies/synapse-admin"; From 7c0b894e3d9d98cdda81ca9eb131708339a77182 Mon Sep 17 00:00:00 2001 From: Defelo Date: Tue, 1 Apr 2025 21:14:48 +0200 Subject: [PATCH 3/3] synapse-admin: add meta.changelog --- pkgs/by-name/sy/synapse-admin/package.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/by-name/sy/synapse-admin/package.nix b/pkgs/by-name/sy/synapse-admin/package.nix index 6fdb92e96d17..b7d050e645ef 100644 --- a/pkgs/by-name/sy/synapse-admin/package.nix +++ b/pkgs/by-name/sy/synapse-admin/package.nix @@ -129,6 +129,7 @@ stdenv.mkDerivation (finalAttrs: { meta = { description = "Admin UI for Synapse Homeservers"; homepage = "https://github.com/Awesome-Technologies/synapse-admin"; + changelog = "https://github.com/Awesome-Technologies/synapse-admin/releases/tag/${finalAttrs.version}"; license = lib.licenses.asl20; platforms = [ "x86_64-linux"