feat: improve rust template

This commit is contained in:
Moritz Böhme 2024-01-21 14:53:56 +01:00
parent b0951b6805
commit 45a1190af7
Signed by: moritz
GPG key ID: 970C6E89EB0547A9

View file

@ -1,58 +1,59 @@
{ {
inputs = { inputs = {
crane = { crane.url = "github:ipetkov/crane";
url = "github:ipetkov/crane"; crane.inputs.nixpkgs.follows = "nixpkgs";
inputs = { fenix.url = "github:nix-community/fenix";
flake-utils.follows = "flake-utils"; fenix.inputs.nixpkgs.follows = "nixpkgs";
nixpkgs.follows = "nixpkgs";
};
};
fenix = {
url = "github:nix-community/fenix";
inputs.nixpkgs.follows = "nixpkgs";
};
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
nixpkgs.url = "nixpkgs/nixos-unstable"; nixpkgs.url = "nixpkgs/nixos-unstable";
}; };
outputs = { self, crane, fenix, flake-utils, nixpkgs }: outputs = { self, crane, flake-utils, nixpkgs, ... }@inputs:
flake-utils.lib.eachDefaultSystem (system: flake-utils.lib.eachDefaultSystem (system:
let let
pkgs = (import nixpkgs) { inherit (pkgs) lib;
inherit system; pkgs = import nixpkgs { inherit system; };
}; fenix = inputs.fenix.packages.${system};
toolchain = fenix.packages.${system}.stable;
craneLib = crane.lib.${system}.overrideToolchain toolchain.toolchain; craneLib = crane.lib.${system}.overrideToolchain toolchain.toolchain;
mkSrc = extraPaths: with lib.fileset; let
root = ./.;
rustFiles = fromSource (craneLib.cleanCargoSource root);
fileset = union rustFiles (unions extraPaths);
in
toSource { inherit root fileset; };
## Customize here ##
toolchain = fenix.complete; # or fenix.stable;
stdenv = pkgs.stdenvAdapters.useMoldLinker pkgs.stdenv; stdenv = pkgs.stdenvAdapters.useMoldLinker pkgs.stdenv;
in in
{ {
packages = packages.default = craneLib.buildPackage {
let inherit stdenv;
inherit (pkgs.lib) fileset; src = mkSrc [ ];
without = fs: fileset.difference ./. fs; strictDeps = true;
nixFiles = fileset.unions [ ./flake.nix ./flake.lock ./.envrc ]; buildInputs = [
gitFiles = fileset.gitTracked ./.; # Add additional build inputs here
src = fileset.toSource { ] ++ lib.optionals pkgs.stdenv.isDarwin [
root = ./.; # Additional darwin specific inputs can be set here
fileset = fileset.intersection (without nixFiles) gitFiles; pkgs.libiconv
}; ];
in # Additional environment variables can be set directly
{ # MY_CUSTOM_VAR = "some value";
default = };
craneLib.buildPackage {
inherit src stdenv;
};
};
devShell = pkgs.mkShell.override devShells.default = pkgs.mkShell.override { inherit stdenv; }
{ {
inherit stdenv; nativeBuildInputs = with pkgs; [
} # Add additional build inputs here
{ ] ++ (with toolchain; [
nativeBuildInputs = with toolchain; cargo
[ rustc cargo rust-analyzer clippy ] ++ (with pkgs; clippy
[ ] rustfmt
); rustc
fenix.rust-analyzer
]);
RUST_SRC_PATH = "${toolchain.rust-src}/lib/rustlib/src/rust/library";
}; };
}); }
);
} }