Commit c6d52f52c11 for nodejs

commit c6d52f52c11fdc6a45077408f8d1d0d56f5059fa
Author: Filip Skokan <panva.ip@gmail.com>
Date:   Sat Oct 3 16:08:27 2026 +0200

    tools: share CI and benchmark build configuration

    Benchmark builds kept Temporal enabled on macOS after the Nix default
    changed, while shared-library CI disabled it. This forced benchmarks
    to rebuild V8 instead of reusing the cached derivation.

    Define the common build defaults in a Nix shell used by CI, benchmark
    builds, and the V8 cache job to keep their configurations aligned.

    Signed-off-by: Filip Skokan <panva.ip@gmail.com>
    Assisted-by: Codex
    PR-URL: https://github.com/nodejs/node/pull/66351
    Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
    Reviewed-By: Colin Ihrig <cjihrig@gmail.com>

diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml
index a5cebb3ca89..0e901de78d9 100644
--- a/.github/workflows/benchmark.yml
+++ b/.github/workflows/benchmark.yml
@@ -121,15 +121,11 @@ jobs:
             --pure --keep TAR_DIR --keep FLAKY_TESTS \
             --keep SCCACHE_GHA_ENABLED --keep SCCACHE_GHA_RW_MODE \
             --keep ACTIONS_CACHE_SERVICE_V2 --keep ACTIONS_RESULTS_URL --keep ACTIONS_RUNTIME_TOKEN \
-            --arg useSeparateDerivationForV8 true \
             --arg withPerfetto ${{ matrix.perfetto || false }} \
-            --arg loadJSBuiltinsDynamically false \
             --arg ccache '(import <nixpkgs> {}).sccache' \
-            --arg devTools '[]' \
-            --arg benchmarkTools '[]' \
             --run '
               make build-ci -j4 V=1 && sccache --stop-server
-            '
+            ' tools/nix/ci-shell.nix
           mv out/Release/node base_node

       - name: Checkout the merge commit
@@ -141,15 +137,11 @@ jobs:
           nix-shell \
             -I nixpkgs=./tools/nix/pkgs.nix \
             --pure --keep SCCACHE_LOCAL_RW_MODE \
-            --arg useSeparateDerivationForV8 true \
             --arg withPerfetto ${{ matrix.perfetto || false }} \
-            --arg loadJSBuiltinsDynamically false \
             --arg ccache '(import <nixpkgs> {}).sccache' \
-            --arg devTools '[]' \
-            --arg benchmarkTools '[]' \
             --run '
                 make build-ci -j4 V=1
-            '
+            ' tools/nix/ci-shell.nix
         env:
           SCCACHE_LOCAL_RW_MODE: READ_ONLY

diff --git a/.github/workflows/build-shared.yml b/.github/workflows/build-shared.yml
index 7d77c13e568..73f7ec6afbb 100644
--- a/.github/workflows/build-shared.yml
+++ b/.github/workflows/build-shared.yml
@@ -85,12 +85,9 @@ jobs:
             -I "nixpkgs=$TAR_DIR/tools/nix/pkgs.nix" \
             --pure --keep TAR_DIR --keep FLAKY_TESTS \
             --keep SCCACHE_GHA_ENABLED --keep ACTIONS_CACHE_SERVICE_V2 --keep ACTIONS_RESULTS_URL --keep ACTIONS_RUNTIME_TOKEN \
-            --arg loadJSBuiltinsDynamically false \
             --arg ccache "${NIX_SCCACHE:-null}" \
-            --arg devTools '[]' \
-            --arg benchmarkTools '[]' \
             --arg pkcs11 ${{ inputs.pkcs11-store-test }} \
             ${{ inputs.extra-nix-flags }} \
             --run '
                 make -C "$TAR_DIR" run-ci -j4 V=1 TEST_CI_ARGS="-p actions --measure-flakiness 9 --skip-tests=$CI_SKIP_TESTS"
-            ' "$TAR_DIR/shell.nix"
+            ' "$TAR_DIR/tools/nix/ci-shell.nix"
diff --git a/.github/workflows/test-shared.yml b/.github/workflows/test-shared.yml
index 110c13e9e15..8292ac253fd 100644
--- a/.github/workflows/test-shared.yml
+++ b/.github/workflows/test-shared.yml
@@ -167,19 +167,7 @@ jobs:
     with:
       runner: ${{ matrix.runner }}
       with-sccache: ${{ github.base_ref == 'main' || github.ref_name == 'main' }}
-      extra-nix-flags: |
-        --arg useSeparateDerivationForV8 true \
-        ${{ matrix.perfetto && '--arg withPerfetto true \' || '\' }}
-        ${{ endsWith(matrix.system, '-darwin') && '\
-          --arg withAmaro false \
-          --arg withFFI false \
-          --arg withLief false \
-          --arg withSQLite false \
-          --arg withTemporal false \
-          --arg extraConfigFlags ''[
-            "--without-inspector"
-            "--without-node-options"
-          ]'' \' || '\' }}
+      extra-nix-flags: ${{ matrix.perfetto && '--arg withPerfetto true' || '' }}
     secrets:
       CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }}

@@ -211,7 +199,7 @@ jobs:
         id: v8-drv
         run: |
           V8_DRV=$(
-            nix-instantiate -E "builtins.filter (p: p.pname == ''v8'') (import $TAR_DIR/shell.nix { useSeparateDerivationForV8=true; }).buildInputs"
+            nix-instantiate -E "builtins.filter (p: p.pname == ''v8'') (import $TAR_DIR/tools/nix/ci-shell.nix {}).buildInputs"
           )
           V8_STORE_PATH=$(nix-store -q --outputs "$V8_DRV")
           echo "V8_DRV=$V8_DRV" >> "$GITHUB_OUTPUT"
diff --git a/tools/nix/ci-shell.nix b/tools/nix/ci-shell.nix
new file mode 100644
index 00000000000..b446c9e33d3
--- /dev/null
+++ b/tools/nix/ci-shell.nix
@@ -0,0 +1,29 @@
+args@{
+  pkgs ? import ./pkgs.nix { },
+  ...
+}:
+import ../../shell.nix (
+  {
+    inherit pkgs;
+    useSeparateDerivationForV8 = true;
+    loadJSBuiltinsDynamically = false;
+    devTools = [ ];
+    benchmarkTools = [ ];
+  }
+  // pkgs.lib.optionalAttrs pkgs.stdenv.hostPlatform.isDarwin (
+    # Disable optional features on Darwin for coverage and faster CI.
+    builtins.mapAttrs (n: v: false) (
+      pkgs.lib.filterAttrs (n: v: builtins.match "with[A-Z].+" n != null) (
+        builtins.functionArgs (import ../../shell.nix)
+      )
+    )
+    // {
+      withSSL = true; # no-SSL coverage is ensured by Jenkins
+      extraConfigFlags = [
+        "--without-inspector"
+        "--without-node-options"
+      ];
+    }
+  )
+  // args
+)