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 = let
  18. pnpm = "${prev.pnpm}/bin/pnpm i && ${prev.pnpm}/bin/pnpm";
  19. in
  20. prev.lib.mkCli "cli" {
  21. _noAll = true;
  22. install = "${pnpm} i";
  23. start = "${pnpm} lerna run start:dev";
  24. test = {
  25. nix = {
  26. lint = "${prev.statix}/bin/statix check --ignore node_modules .";
  27. dead-code = "${prev.deadnix}/bin/deadnix --exclude ./node_modules .";
  28. format = "${prev.alejandra}/bin/alejandra --exclude ./node_modules --check .";
  29. };
  30. };
  31. fix = {
  32. nix = {
  33. lint = "${prev.statix}/bin/statix fix --ignore node_modules .";
  34. dead-code = "${prev.deadnix}/bin/deadnix --exclude ./node_modules -e .";
  35. format = "${prev.alejandra}/bin/alejandra --exclude ./node_modules .";
  36. };
  37. };
  38. };
  39. };
  40. pkgs = import nixpkgs {
  41. inherit system;
  42. overlays = [mkCli.overlays.default cli-overlay];
  43. config = {};
  44. };
  45. in {
  46. devShells.default = pkgs.mkShell {
  47. buildInputs = [
  48. pkgs.cargo
  49. pkgs.cli
  50. pkgs.git
  51. pkgs.libusb
  52. pkgs.nodejs
  53. pkgs.pkg-config
  54. pkgs.pnpm
  55. pkgs.pre-commit
  56. pkgs.python3
  57. pkgs.python3Packages.distutils
  58. ];
  59. };
  60. }
  61. )
  62. );
  63. }