From cf4c84d7c9ccb9e057a736f778eb8f71fef048bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?m=C3=BCde?= Date: Thu, 14 May 2026 23:01:13 +0200 Subject: [PATCH] flake clippy: override build phase to bypass naersk mode --- flake.nix | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/flake.nix b/flake.nix index 029ab70..1bb82f5 100644 --- a/flake.nix +++ b/flake.nix @@ -126,24 +126,38 @@ checks = forAllSystems ( { treefmt-eval, + pkgs, naersk-lib, ... }: { formatting = treefmt-eval.config.build.check self; - clippy = naersk-lib.buildPackage { - src = ./.; - mode = "clippy"; - cargoBuildOptions = - orig: - orig - ++ [ - "--workspace" - "--" - "-D" - "warnings" - ]; - }; + # Clippy as a check: reuse naersk's vendored-deps environment but + # replace the build phase with `cargo clippy --workspace --all-targets + # -- -D warnings`. Naersk's own `mode = "clippy"` mangles the `--` + # separator, so we go through overrideAttrs instead. + clippy = + (naersk-lib.buildPackage { + src = ./.; + # Skip the actual build; we only care about the clippy lint. + doCheck = false; + copyTarget = false; + }).overrideAttrs + (old: { + pname = "${old.pname}-clippy"; + nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.clippy ]; + buildPhase = '' + runHook preBuild + cargo clippy --workspace --all-targets -- -D warnings + runHook postBuild + ''; + installPhase = '' + runHook preInstall + mkdir -p $out + touch $out/.clippy-passed + runHook postInstall + ''; + }); } ); };