diff --git a/.gitignore b/.gitignore index 92b2793..2bbdbfe 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .direnv +result diff --git a/flake.nix b/flake.nix index e4379ba..fede805 100644 --- a/flake.nix +++ b/flake.nix @@ -18,13 +18,26 @@ let pkgs = import inputs.nixpkgs { inherit system; - overlays = [ inputs.rust-overlay.overlays.default ]; + overlays = [ + inputs.rust-overlay.overlays.default + ]; }; - lib = import ./lib { inherit inputs; }; + rustTarget = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml; + craneLib = (inputs.crane.mkLib pkgs).overrideToolchain rustTarget; + + lib = import ./lib { + inherit + inputs + craneLib + pkgs + ; + }; in { - inherit lib; + packages = lib // { + rust = rustTarget; + }; devShells.default = pkgs.mkShell { nativeBuildInputs = [ diff --git a/lib/cargo-dylint.nix b/lib/cargo-dylint.nix index aeb7798..8c6aa17 100644 --- a/lib/cargo-dylint.nix +++ b/lib/cargo-dylint.nix @@ -1,7 +1,39 @@ { - inputs, + pkgs, + craneLib, + + pkg-config, + openssl, }: -{ +let + pname = "cargo-dylint"; + version = "4.0.0"; + src = pkgs.fetchFromGitHub { + owner = "trailofbits"; + repo = "dylint"; + tag = "v${version}"; + sha256 = "sha256-Z8uuewp7Buoadayc0oTafmfvwNT36KukWKiHxL/mQfI="; + }; +in + +craneLib.buildPackage { + inherit + pname + version + src + ; + + buildInputs = [ + openssl + ]; + + nativeBuildInputs = [ + pkg-config + ]; + + RUSTUP_TOOLCHAIN = "nightly-2025-02-28"; + + doCheck = false; } diff --git a/lib/default.nix b/lib/default.nix index 6109231..ef77125 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -1,5 +1,15 @@ { - + pkgs, + inputs, + craneLib, + ... }: +let + callPackage = pkgs.lib.callPackageWith (pkgs // packages // { inherit inputs craneLib; }); + packages = { + cargo-dylint = callPackage ./cargo-dylint.nix { }; + }; +in +packages diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 0000000..168d4fd --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "nightly-2025-03-01"