From e9732eb1ecfef0cd2abf11566242566adc697250 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20M=C3=BCller?= Date: Tue, 4 Mar 2025 15:02:53 +0100 Subject: [PATCH 1/2] Passthru lints MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marcel Müller --- lib/mk-dylint.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/mk-dylint.nix b/lib/mk-dylint.nix index 1f9d7f1..a0fad8d 100644 --- a/lib/mk-dylint.nix +++ b/lib/mk-dylint.nix @@ -32,6 +32,7 @@ pkgs.runCommandLocal "cargo-dylint-wrapped" nativeBuildInputs = [ pkgs.makeWrapper ]; meta.mainProgram = "cargo-dylint"; passthru = { + inherit lints; DYLINT_LIBRARY_PATH = lib.strings.makeLibraryPath (builtins.map (v: v.package) lints); DYLINT_DRIVER_PATH = drivers; }; From aa5eda3c9a1747214bffc7b11267b95fdd1b1791 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcel=20M=C3=BCller?= Date: Tue, 4 Mar 2025 15:22:01 +0100 Subject: [PATCH 2/2] Give cargo dylint the correct toolchain if it asks for it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marcel Müller --- lib/mk-dylint.nix | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/mk-dylint.nix b/lib/mk-dylint.nix index a0fad8d..9f9cf85 100644 --- a/lib/mk-dylint.nix +++ b/lib/mk-dylint.nix @@ -26,6 +26,31 @@ let ln -s ${driver}/bin/dylint_driver-nix $out/${name}/dylint-driver '') driverMap} ''; + cargo-wrapper = pkgs.writeShellScriptBin "cargo" '' + case "$RUSTUP_TOOLCHAIN" in + ${lib.strings.concatMapAttrsStringSep "\n" ( + name: driver: + let + toolchain = + (pkgs.rust-bin.fromRustupToolchainFile (pkgs.writeText "${name}-toolchain.toml" name)).override + { + extensions = [ + "rustc-dev" + ]; + }; + + in + '' + ${name}) + exec ${toolchain}/bin/cargo "$@" + ;; + '' + ) driverMap} + *) + exec cargo "$@" + ;; + esac + ''; in pkgs.runCommandLocal "cargo-dylint-wrapped" { @@ -42,7 +67,8 @@ pkgs.runCommandLocal "cargo-dylint-wrapped" --set-default DYLINT_LIBRARY_PATH "${ lib.strings.makeLibraryPath (builtins.map (v: v.package) lints) }" \ - --set DYLINT_DRIVER_PATH ${drivers}; + --set DYLINT_DRIVER_PATH ${drivers} \ + --prefix PATH : ${lib.makeBinPath [ cargo-wrapper ]} ln -s ${cargo-dylint}/bin/dylint-link $out/bin/dylint-link ''