From 098bfcc0d663967df14e1e7ab81b559c80417500 Mon Sep 17 00:00:00 2001 From: gapul <92638132+gapul@users.noreply.github.com> Date: Fri, 11 Sep 2026 15:16:34 +0900 Subject: [PATCH] =?UTF-8?q?fix(homeserver):=20=E3=83=A9=E3=83=B3=E3=83=8A?= =?UTF-8?q?=E3=83=BC=E3=81=AE=20node20=20=E3=82=92=20node24=20=E3=81=B8?= =?UTF-8?q?=E5=90=91=E3=81=91=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit nixpkgs が EOL の node20 を落としたので externals/node24 しか無く、 node20 と書いてある action がステップ開始前に ENOENT で死ぬ。 #586 の env は効かなかったので、実体を張る。 --- nix/homelab/ci-runner.nix | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/nix/homelab/ci-runner.nix b/nix/homelab/ci-runner.nix index 41e0113f..5c23342f 100644 --- a/nix/homelab/ci-runner.nix +++ b/nix/homelab/ci-runner.nix @@ -62,11 +62,20 @@ which ]; - # This runner ships only externals/node24, while pinned actions still declare - # `using: node20` — the JS step then dies with ENOENT on a node that was never - # installed. GitHub's hosted runners remap it; this makes ours do the same instead - # of pinning every action to a version GitHub is retiring anyway. - extraEnvironment.ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION = "node24"; + # Node 20 reached EOL, so nixpkgs dropped it and this package ships only + # externals/node24. Several actions we pin still declare `using: node20`, and the + # runner looks the runtime up by that literal name: the step dies before it starts, + # with ENOENT on externals/node20/bin/node. GitHub's own runners no longer honour + # ACTIONS_RUNNER_FORCE_ACTIONS_NODE_VERSION either (tried in #586, no effect) — + # they just run those actions on 24. So point node20 at node24 and do the same. + # + # Chasing every action to a node24 release instead would be a moving target: the + # installer and cachix actions are pinned by SHA on purpose. + package = pkgs.github-runner.overrideAttrs (prev: { + postInstall = prev.postInstall + '' + ln -s ${pkgs.nodejs_24} $out/lib/externals/node20 + ''; + }); serviceOverrides = { # Half the machine, at most, for everything outside the daemon.