1
0

flake.nix 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. {
  2. inputs = {
  3. flake-utils.url = "github:numtide/flake-utils";
  4. naersk.url = "github:nix-community/naersk";
  5. nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
  6. treefmt-nix.url = "github:numtide/treefmt-nix";
  7. rust-overlay.url = "github:oxalica/rust-overlay";
  8. };
  9. outputs = {
  10. self,
  11. flake-utils,
  12. naersk,
  13. nixpkgs,
  14. treefmt-nix,
  15. rust-overlay,
  16. }:
  17. flake-utils.lib.eachDefaultSystem (
  18. system: let
  19. overlays = [(import rust-overlay)];
  20. pkgs = (import nixpkgs) {
  21. inherit system overlays;
  22. };
  23. toolchain = pkgs.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
  24. naersk' = pkgs.callPackage naersk {
  25. cargo = toolchain;
  26. rustc = toolchain;
  27. clippy = toolchain;
  28. };
  29. treefmtEval = treefmt-nix.lib.evalModule pkgs ./treefmt.nix;
  30. in rec {
  31. # For `nix fmt`
  32. formatter = treefmtEval.config.build.wrapper;
  33. packages = {
  34. # For `nix build` & `nix run`:
  35. default = naersk'.buildPackage {
  36. src = ./.;
  37. doCheck = true; # run `cargo test` on build
  38. };
  39. # Run `nix build .#check` to check code
  40. check = naersk'.buildPackage {
  41. src = ./.;
  42. mode = "check";
  43. };
  44. # Run `nix build .#test` to run tests
  45. test = naersk'.buildPackage {
  46. src = ./.;
  47. mode = "test";
  48. };
  49. # Run `nix build .#clippy` to lint code
  50. clippy = naersk'.buildPackage {
  51. src = ./.;
  52. mode = "clippy";
  53. };
  54. };
  55. # For `nix develop`:
  56. devShells.default = pkgs.mkShell {
  57. nativeBuildInputs = with pkgs; [toolchain];
  58. };
  59. # for `nix flake check`
  60. checks = {
  61. formatting = treefmtEval.config.build.check self;
  62. build = packages.check;
  63. test = packages.test;
  64. lint = packages.clippy;
  65. };
  66. }
  67. );
  68. }