Add abstraction to use multiple toolchains
Signed-off-by: Marcel Müller <neikos@neikos.email>
This commit is contained in:
parent
e62f5cce80
commit
385529d568
7 changed files with 83 additions and 39 deletions
40
lib/mk-dylint.nix
Normal file
40
lib/mk-dylint.nix
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
{
|
||||
pkgs,
|
||||
|
||||
cargo-dylint,
|
||||
|
||||
mkCargoDylintDriver,
|
||||
}:
|
||||
|
||||
{ lints }:
|
||||
|
||||
let
|
||||
inherit (pkgs) lib;
|
||||
driver_names = lib.groupBy (v: v.toolchain) lints;
|
||||
driverMap = builtins.mapAttrs (
|
||||
name: _:
|
||||
mkCargoDylintDriver "nightly-${name}" (
|
||||
pkgs.rust-bin.nightly."${name}".default.override {
|
||||
extensions = [
|
||||
"rustc-dev"
|
||||
];
|
||||
}
|
||||
)
|
||||
) driver_names;
|
||||
drivers = pkgs.runCommandLocal "dylint-drivers" { } (
|
||||
lib.strings.concatMapAttrsStringSep "\n" (name: driver: ''
|
||||
mkdir -p $out/nightly-${name}
|
||||
ln -s ${driver}/bin/dylint_driver-nix $out/nightly-${name}/dylint-driver
|
||||
'') driverMap
|
||||
);
|
||||
in
|
||||
pkgs.runCommandLocal "cargo-dylint-wrapped"
|
||||
{
|
||||
nativeBuildInputs = [ pkgs.makeWrapper ];
|
||||
meta.mainProgram = "cargo-dylint";
|
||||
}
|
||||
''
|
||||
makeWrapper ${cargo-dylint}/bin/cargo-dylint $out/bin/cargo-dylint \
|
||||
--set DYLINT_LIBRARY_PATH ${lib.strings.makeLibraryPath (builtins.map (v: v.package) lints)} \
|
||||
--set DYLINT_DRIVER_PATH ${drivers};
|
||||
''
|
||||
Loading…
Add table
Add a link
Reference in a new issue