From 4e69eebf9d95451f6a15c4c3b846e6de2ebf9e36 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Thu, 10 Sep 2026 14:36:35 +0200 Subject: [PATCH 1/3] tools: do not download build tools when linting Nix files Signed-off-by: Antoine du Hamel --- .github/workflows/nix-changes.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/nix-changes.yml b/.github/workflows/nix-changes.yml index a56cea0936c4..40ab1874cb10 100644 --- a/.github/workflows/nix-changes.yml +++ b/.github/workflows/nix-changes.yml @@ -111,9 +111,9 @@ jobs: - uses: cachix/install-nix-action@13d8dd58da0234aa297dedd986986ccb8e7f3e24 # v31.11.1 - name: Lint Nix files run: | - nix-shell -I nixpkgs=./tools/nix/pkgs.nix -p 'nixfmt-tree' --run ' - treefmt --quiet --ci - ' && EXIT_CODE="$?" || EXIT_CODE="$?" + LINTER='(import {}).nixfmt-tree' + nix-build -I nixpkgs=./tools/nix/pkgs.nix --no-out-link -E "$LINTER" + "$(nix-instantiate -I nixpkgs=./tools/nix/pkgs.nix --eval --raw -E "(import {}).lib.getExe $LINTER")" --quiet --ci && EXIT_CODE="$?" || EXIT_CODE="$?" if [ "$EXIT_CODE" != "0" ] then git --no-pager diff || true From 93d155a05b4df6d72bc73a73a48d9b96b45559b9 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Thu, 10 Sep 2026 15:06:41 +0200 Subject: [PATCH 2/3] fixup! tools: do not download build tools when linting Nix files --- .github/workflows/nix-changes.yml | 6 +++--- shell.nix | 8 ++++++++ tools/nix/devTools.nix | 1 + tools/nix/list-requisites.sh | 2 +- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/workflows/nix-changes.yml b/.github/workflows/nix-changes.yml index 40ab1874cb10..35a7de3bb103 100644 --- a/.github/workflows/nix-changes.yml +++ b/.github/workflows/nix-changes.yml @@ -111,9 +111,9 @@ jobs: - uses: cachix/install-nix-action@13d8dd58da0234aa297dedd986986ccb8e7f3e24 # v31.11.1 - name: Lint Nix files run: | - LINTER='(import {}).nixfmt-tree' - nix-build -I nixpkgs=./tools/nix/pkgs.nix --no-out-link -E "$LINTER" - "$(nix-instantiate -I nixpkgs=./tools/nix/pkgs.nix --eval --raw -E "(import {}).lib.getExe $LINTER")" --quiet --ci && EXIT_CODE="$?" || EXIT_CODE="$?" + NIX_LINTER=$(nix-instantiate --eval --raw -E '(import ./shell.nix {}).NIX_LINTER') + nix-store --realise "${NIX_LINTER%/bin/*}" + "$NIX_LINTER" --quiet --ci && EXIT_CODE="$?" || EXIT_CODE="$?" if [ "$EXIT_CODE" != "0" ] then git --no-pager diff || true diff --git a/shell.nix b/shell.nix index 1829c1efd21b..6f50142046e9 100644 --- a/shell.nix +++ b/shell.nix @@ -167,6 +167,14 @@ pkgs.mkShell { YAMLLINT = pkgs.lib.getExe yamllint; } ) + // ( + let + treefmt = pkgs.lib.lists.findFirst (p: p.meta.mainProgram == "treefmt") null devTools; + in + pkgs.lib.optionalAttrs (treefmt != null) { + NIX_LINTER = pkgs.lib.getExe treefmt; + } + ) // pkgs.lib.optionalAttrs (!withSQLite) { NOSQLITE = "1"; } diff --git a/tools/nix/devTools.nix b/tools/nix/devTools.nix index e33ae720785c..2fd96b279662 100644 --- a/tools/nix/devTools.nix +++ b/tools/nix/devTools.nix @@ -7,6 +7,7 @@ pkgs.gh pkgs.git pkgs.jq + pkgs.nixfmt-tree pkgs.ruff pkgs.shellcheck pkgs.yamllint diff --git a/tools/nix/list-requisites.sh b/tools/nix/list-requisites.sh index 92aa91794326..a66a89eb7def 100755 --- a/tools/nix/list-requisites.sh +++ b/tools/nix/list-requisites.sh @@ -45,7 +45,7 @@ DRV=$( ++ builtins.attrValues ( { # Additional packages we are using across the codebase - inherit (pkgs) nixfmt-tree sccache; + inherit (pkgs) sccache; } // import ./tools/nix/openssl-matrix.nix { } // sharedLibDepsFn ( From dd88f0d014c63d9610ef6e4634cc4e175b0d17cd Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Thu, 10 Sep 2026 15:36:31 +0200 Subject: [PATCH 3/3] fixup! tools: do not download build tools when linting Nix files --- .github/workflows/nix-changes.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/nix-changes.yml b/.github/workflows/nix-changes.yml index 35a7de3bb103..6baf34afe3e0 100644 --- a/.github/workflows/nix-changes.yml +++ b/.github/workflows/nix-changes.yml @@ -112,7 +112,8 @@ jobs: - name: Lint Nix files run: | NIX_LINTER=$(nix-instantiate --eval --raw -E '(import ./shell.nix {}).NIX_LINTER') - nix-store --realise "${NIX_LINTER%/bin/*}" + # Attempt to get it from cache, and fallback to building `devTools.nix` otherwise. + nix-store --realise "${NIX_LINTER%/bin/*}" || nix-build -I nixpkgs=tools/nix/pkgs.nix ./tools/nix/devTools.nix --no-out-link "$NIX_LINTER" --quiet --ci && EXIT_CODE="$?" || EXIT_CODE="$?" if [ "$EXIT_CODE" != "0" ] then