flake.nix 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. {
  2. inputs = {
  3. nixpkgs.url = "github:NixOS/nixpkgs";
  4. flake-utils.url = "github:numtide/flake-utils";
  5. mkCli.url = "github:cprussin/mkCli";
  6. };
  7. outputs = {
  8. nixpkgs,
  9. flake-utils,
  10. mkCli,
  11. ...
  12. }: (
  13. flake-utils.lib.eachDefaultSystem
  14. (
  15. system: let
  16. cli-overlay = _: prev: {
  17. cli = prev.lib.mkCli "cli" {
  18. _noAll = true;
  19. start = "${prev.lib.getExe prev.pnpm} start:dev";
  20. test = {
  21. nix = {
  22. lint = "${prev.statix}/bin/statix check --ignore node_modules .";
  23. dead-code = "${prev.deadnix}/bin/deadnix --exclude ./node_modules .";
  24. format = "${prev.alejandra}/bin/alejandra --exclude ./node_modules --check .";
  25. };
  26. turbo = "${prev.lib.getExe prev.pnpm} test -- --ui stream";
  27. };
  28. fix = {
  29. nix = {
  30. lint = "${prev.statix}/bin/statix fix --ignore node_modules .";
  31. dead-code = "${prev.deadnix}/bin/deadnix --exclude ./node_modules -e .";
  32. format = "${prev.alejandra}/bin/alejandra --exclude ./node_modules .";
  33. };
  34. turbo = "${prev.lib.getExe prev.pnpm} fix -- --ui stream";
  35. };
  36. };
  37. };
  38. pkgs = import nixpkgs {
  39. inherit system;
  40. overlays = [mkCli.overlays.default cli-overlay];
  41. config = {};
  42. };
  43. in {
  44. devShells.default = pkgs.mkShell {
  45. buildInputs = [
  46. pkgs.cargo
  47. pkgs.cli
  48. pkgs.git
  49. pkgs.libusb1
  50. pkgs.nodejs
  51. pkgs.pkg-config
  52. pkgs.pnpm
  53. pkgs.pre-commit
  54. pkgs.python3
  55. pkgs.python3Packages.distutils
  56. pkgs.graphviz
  57. pkgs.anchor
  58. ];
  59. };
  60. }
  61. )
  62. );
  63. }