diff --git a/pkgs/by-name/af/affine/package.nix b/pkgs/by-name/af/affine/package.nix index addcc46a57d9..057f3729ff63 100644 --- a/pkgs/by-name/af/affine/package.nix +++ b/pkgs/by-name/af/affine/package.nix @@ -32,6 +32,16 @@ let yarn-berry = yarn-berry_4.override { inherit nodejs; }; productName = if buildType != "stable" then "AFFiNE-${buildType}" else "AFFiNE"; binName = lib.toLower productName; + electron-dist-zip = stdenvNoCC.mkDerivation { + pname = "electron-dist-zip"; + version = electron.version; + src = electron.dist; + nativeBuildInputs = [ zip ]; + buildPhase = '' + zip --recurse-paths - . > $out + ''; + dontInstall = true; + }; in stdenv.mkDerivation (finalAttrs: { pname = binName; @@ -48,6 +58,8 @@ stdenv.mkDerivation (finalAttrs: { inherit (finalAttrs) pname version src; hash = "sha256-tdg0Ti+QWsIx64+WV0fPoyE/t3GlsUxXzU9qFHYfpt0="; }; + + # keep yarnOfflineCache same output style with offlineCache = yarn-berry.fetchYarnBerryDeps { inherit (finalAttrs) src missingHashes; hash = "" }; yarnOfflineCache = stdenvNoCC.mkDerivation { name = "yarn-offline-cache"; inherit (finalAttrs) src; @@ -79,19 +91,22 @@ stdenv.mkDerivation (finalAttrs: { '' runHook preBuild - mkdir -p $out + mkdir -p $out/cache + yarn config set enableTelemetry false - yarn config set cacheFolder $out + yarn config set cacheFolder $out/cache yarn config set enableGlobalCache false yarn config set supportedArchitectures --json '${supportedArchitectures}' yarn install --immutable --mode=skip-build + cp yarn.lock $out/yarn.lock + runHook postBuild ''; dontInstall = true; outputHashMode = "recursive"; - outputHash = "sha256-wMfjlxHs1pS8QEnIgn9IZTNShKkLeVVpGFkZ2ICtiNA="; + outputHash = "sha256-iULgio5zpmJhKofkUxA98Ze7Qy+kRfbbi5oEHYw5vzY="; }; buildInputs = lib.optionals hostPlatform.isDarwin [ @@ -133,6 +148,7 @@ stdenv.mkDerivation (finalAttrs: { echo "$BACKEND_SERVER_PACKAGE_JSON" > packages/backend/server/package.json ''; + # FIXME: use `yarn config set cacheFolder $offlineCache/cache` configurePhase = '' runHook preConfigure @@ -144,14 +160,13 @@ stdenv.mkDerivation (finalAttrs: { # yarn config yarn config set enableTelemetry false yarn config set enableGlobalCache false - yarn config set cacheFolder $yarnOfflineCache + yarn config set cacheFolder $yarnOfflineCache/cache # electron config ELECTRON_VERSION_IN_LOCKFILE=$(yarn why electron --json | tail --lines 1 | jq --raw-output '.children | to_entries | first | .key ' | cut -d : -f 2) - rsync --archive --chmod=u+w "${electron.dist}/" $HOME/.electron-prebuilt-zip-tmp export ELECTRON_FORGE_ELECTRON_ZIP_DIR=$PWD/.electron_zip_dir mkdir -p $ELECTRON_FORGE_ELECTRON_ZIP_DIR - (cd $HOME/.electron-prebuilt-zip-tmp && zip --recurse-paths - .) > $ELECTRON_FORGE_ELECTRON_ZIP_DIR/electron-v$ELECTRON_VERSION_IN_LOCKFILE-${nodePlatform}-${nodeArch}.zip + cp ${electron-dist-zip} $ELECTRON_FORGE_ELECTRON_ZIP_DIR/electron-v$ELECTRON_VERSION_IN_LOCKFILE-${nodePlatform}-${nodeArch}.zip export ELECTRON_SKIP_BINARY_DOWNLOAD=1 runHook postConfigure