forcebot_rs/flake.nix
2024-04-08 15:30:11 -04:00

74 lines
1.7 KiB
Nix

{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
fenix.url = "github:nix-community/fenix/monthly";
crane = {
url = "github:ipetkov/crane";
inputs.nixpkgs.follows = "nixpkgs";
};
flake-utils.url = "github:numtide/flake-utils";
};
outputs = {
self,
nixpkgs,
crane,
fenix,
flake-utils,
...
} @ inputs:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
inherit system overlays;
};
overlays = [fenix.overlays.default];
craneLib = crane.lib.${system};
forcebot_rs = craneLib.buildPackage {
src = craneLib.cleanCargoSource (craneLib.path ./.);
strictDeps = true;
nativeBuildInputs = [pkgs.pkg-config];
buildInputs = [pkgs.openssl];
};
in {
checks = {
inherit forcebot_rs;
};
packages.default = forcebot_rs;
apps.default = flake-utils.lib.mkApp {
drv = forcebot_rs;
};
devShells.default = craneLib.devShell {
checks = self.checks.${system};
packages = with pkgs; [
nil
alejandra
rust-analyzer-nightly
(fenix.packages.${system}.complete.withComponents [
"cargo"
"clippy"
"rust-src"
"rustc"
"rustfmt"
])
];
};
nixosModules.forcebot_rs = import ./nix/module.nix;
nixosModules.default = self.nixosModules.forcebot_rs;
RUST_BACKTRACE = 1;
RUST_SRC_PATH = "${fenix.packages.${system}.complete.rust-src}/lib/rustlib/src/rust/library";
})
// {
overlays.default = final: prev: {
forcebot_rs = self.packages."${final.system}".default;
};
};
}