From 1182bd00bdf877f1c61f592790a1925a4610ccee Mon Sep 17 00:00:00 2001 From: Dominique Martinet Date: Sat, 23 Nov 2024 14:29:32 +0900 Subject: [PATCH 1/2] rmfakecloud: 0.0.21 -> 0.0.23 0.0.22 - fix regression in 0.0.21 for old remarkable tablet versions (see https://github.com/ddvk/rmfakecloud/issues/330 ) - fix build with new UI... 0.0.23 - fix other regression with 0.0.22... --- pkgs/by-name/rm/rmfakecloud/package.nix | 9 +++-- pkgs/by-name/rm/rmfakecloud/webui.nix | 45 +++++++++++++++---------- 2 files changed, 31 insertions(+), 23 deletions(-) diff --git a/pkgs/by-name/rm/rmfakecloud/package.nix b/pkgs/by-name/rm/rmfakecloud/package.nix index f68229b10a162b..dfd9269f764e4b 100644 --- a/pkgs/by-name/rm/rmfakecloud/package.nix +++ b/pkgs/by-name/rm/rmfakecloud/package.nix @@ -9,13 +9,13 @@ buildGoModule rec { pname = "rmfakecloud"; - version = "0.0.21"; + version = "0.0.23"; src = fetchFromGitHub { owner = "ddvk"; - repo = pname; + repo = "rmfakecloud"; rev = "v${version}"; - hash = "sha256-Opx39FUo4Kzezi96D9iraA8gkqCPVfMf4LhxtVpsuNQ="; + hash = "sha256-XlKqh6GKGreWLPjS8XfEUJCMMxiOw8pP2qX8otD+RCo="; }; vendorHash = "sha256-9tfxE03brUvCYusmewiqNpCkKyIS9qePqylrzDWrJLY="; @@ -25,8 +25,7 @@ buildGoModule rec { postPatch = if enableWebui then '' - mkdir -p ui/build - cp -r ${ui}/* ui/build + cp -a ${ui} ui/dist '' else '' diff --git a/pkgs/by-name/rm/rmfakecloud/webui.nix b/pkgs/by-name/rm/rmfakecloud/webui.nix index 928a624cba2b42..bdfa8bfc41c685 100644 --- a/pkgs/by-name/rm/rmfakecloud/webui.nix +++ b/pkgs/by-name/rm/rmfakecloud/webui.nix @@ -1,37 +1,46 @@ -{ version, src, stdenv, lib, fetchYarnDeps, fixup-yarn-lock, yarn, nodejs }: +{ + version, + src, + stdenv, + lib, + pnpm_9, + nodejs, +}: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { inherit version src; pname = "rmfakecloud-webui"; - yarnOfflineCache = fetchYarnDeps { - yarnLock = "${src}/ui/yarn.lock"; - hash = "sha256-9//uQ4ZLLTf2N1WSwsOwFjBuDmThuMtMXU4SzMljAMM="; + pnpmDeps = pnpm_9.fetchDeps { + inherit (finalAttrs) pname version src; + sourceRoot = "${finalAttrs.src.name}/ui"; + pnpmLock = "${src}/ui/pnpm-lock.yaml"; + hash = "sha256-VNmCT4um2W2ii8jAm+KjQSjixYEKoZkw7CeRwErff/o="; }; - - nativeBuildInputs = [ fixup-yarn-lock yarn nodejs ]; + pnpmRoot = "ui"; buildPhase = '' - export HOME=$(mktemp -d) cd ui - fixup-yarn-lock yarn.lock - yarn config --offline set yarn-offline-mirror ${yarnOfflineCache} - yarn install --offline --frozen-lockfile --ignore-engines --ignore-scripts --no-progress - patchShebangs node_modules - export PATH=$PWD/node_modules/.bin:$PATH - ./node_modules/.bin/react-scripts build - mkdir -p $out - cd .. + + # using sass-embedded fails at executing node_modules/sass-embedded-linux-x64/dart-sass/src/dart + rm -r node_modules/sass-embedded node_modules/.pnpm/sass-embedded* + + pnpm build ''; installPhase = '' - cp -r ui/build/* $out + cp -a dist/. $out ''; + nativeBuildInputs = [ + nodejs + pnpm_9.configHook + ]; + meta = with lib; { description = "Only the webui files for rmfakecloud"; homepage = "https://ddvk.github.io/rmfakecloud/"; license = licenses.agpl3Only; }; -} +}) From de4a766794e72248d0c3ef23a2dab7843e564e15 Mon Sep 17 00:00:00 2001 From: Dominique Martinet Date: Sat, 23 Nov 2024 19:29:29 +0900 Subject: [PATCH 2/2] rmfakecloud: build the webui together with the app This avoids maintaining an artificial derivation for the web UI, and hopefully will allow the auto-update bot to make PRs for further updates --- pkgs/by-name/rm/rmfakecloud/package.nix | 41 +++++++++++++++------- pkgs/by-name/rm/rmfakecloud/webui.nix | 46 ------------------------- 2 files changed, 29 insertions(+), 58 deletions(-) delete mode 100644 pkgs/by-name/rm/rmfakecloud/webui.nix diff --git a/pkgs/by-name/rm/rmfakecloud/package.nix b/pkgs/by-name/rm/rmfakecloud/package.nix index dfd9269f764e4b..e57dc8350084ae 100644 --- a/pkgs/by-name/rm/rmfakecloud/package.nix +++ b/pkgs/by-name/rm/rmfakecloud/package.nix @@ -2,8 +2,9 @@ lib, fetchFromGitHub, buildGoModule, - callPackage, enableWebui ? true, + pnpm_9, + nodejs, nixosTests, }: @@ -20,17 +21,33 @@ buildGoModule rec { vendorHash = "sha256-9tfxE03brUvCYusmewiqNpCkKyIS9qePqylrzDWrJLY="; - ui = callPackage ./webui.nix { inherit version src; }; - - postPatch = - if enableWebui then - '' - cp -a ${ui} ui/dist - '' - else - '' - sed -i '/go:/d' ui/assets.go - ''; + # if using webUI build it + # use env because of https://github.com/NixOS/nixpkgs/issues/358844 + env.pnpmRoot = "ui"; + env.pnpmDeps = pnpm_9.fetchDeps { + inherit pname version src; + sourceRoot = "${src.name}/ui"; + pnpmLock = "${src}/ui/pnpm-lock.yaml"; + hash = "sha256-VNmCT4um2W2ii8jAm+KjQSjixYEKoZkw7CeRwErff/o="; + }; + preBuild = lib.optionals enableWebui '' + # using sass-embedded fails at executing node_modules/sass-embedded-linux-x64/dart-sass/src/dart + rm -r ui/node_modules/sass-embedded ui/node_modules/.pnpm/sass-embedded* + + # avoid re-running pnpm i... + touch ui/pnpm-lock.yaml + + make ui/dist + ''; + nativeBuildInputs = lib.optionals enableWebui [ + nodejs + pnpm_9.configHook + ]; + + # ... or don't embed it in the server + postPatch = lib.optionals (!enableWebui) '' + sed -i '/go:/d' ui/assets.go + ''; ldflags = [ "-s" diff --git a/pkgs/by-name/rm/rmfakecloud/webui.nix b/pkgs/by-name/rm/rmfakecloud/webui.nix deleted file mode 100644 index bdfa8bfc41c685..00000000000000 --- a/pkgs/by-name/rm/rmfakecloud/webui.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ - version, - src, - stdenv, - lib, - pnpm_9, - nodejs, -}: - -stdenv.mkDerivation (finalAttrs: { - inherit version src; - - pname = "rmfakecloud-webui"; - - pnpmDeps = pnpm_9.fetchDeps { - inherit (finalAttrs) pname version src; - sourceRoot = "${finalAttrs.src.name}/ui"; - pnpmLock = "${src}/ui/pnpm-lock.yaml"; - hash = "sha256-VNmCT4um2W2ii8jAm+KjQSjixYEKoZkw7CeRwErff/o="; - }; - pnpmRoot = "ui"; - - buildPhase = '' - cd ui - - # using sass-embedded fails at executing node_modules/sass-embedded-linux-x64/dart-sass/src/dart - rm -r node_modules/sass-embedded node_modules/.pnpm/sass-embedded* - - pnpm build - ''; - - installPhase = '' - cp -a dist/. $out - ''; - - nativeBuildInputs = [ - nodejs - pnpm_9.configHook - ]; - - meta = with lib; { - description = "Only the webui files for rmfakecloud"; - homepage = "https://ddvk.github.io/rmfakecloud/"; - license = licenses.agpl3Only; - }; -})