flake.nix 1.9 KB

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