flake.nix 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. };
  28. treefmtEval = treefmt-nix.lib.evalModule pkgs ./treefmt.nix;
  29. in {
  30. # For `nix fmt`
  31. formatter = treefmtEval.config.build.wrapper;
  32. # packages.default = naersk'.buildPackage {
  33. # src = ./.;
  34. # };
  35. packages = {
  36. # For `nix build` & `nix run`:
  37. default = naersk'.buildPackage {
  38. src = ./.;
  39. };
  40. # Run `nix build .#check` to check code
  41. check = naersk'.buildPackage {
  42. src = ./.;
  43. mode = "check";
  44. };
  45. # Run `nix build .#test` to run tests
  46. test = naersk'.buildPackage {
  47. src = ./.;
  48. mode = "test";
  49. };
  50. # Run `nix build .#clippy` to lint code
  51. clippy = naersk'.buildPackage {
  52. src = ./.;
  53. mode = "clippy";
  54. };
  55. };
  56. # For `nix develop`:
  57. devShells.default = pkgs.mkShell {
  58. nativeBuildInputs = with pkgs; [toolchain];
  59. };
  60. # for `nix flake check`
  61. checks = {
  62. formatting = treefmtEval.config.build.check self;
  63. };
  64. }
  65. );
  66. }