flake.nix 1.7 KB

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