From efa3978fe52b1b71ae7acf32088657dc5414452e Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Sat, 10 May 2025 09:56:40 -0700 Subject: add flake-checker to pre-commit hooks Refactor the configuration to ensure we generate the configuration for pre-commit hooks properly in the devShell. --- flake.nix | 90 +++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 47 insertions(+), 43 deletions(-) diff --git a/flake.nix b/flake.nix index 8e55e18..207192b 100644 --- a/flake.nix +++ b/flake.nix @@ -83,60 +83,62 @@ mkSystem = import ./nix/lib/mkSystem.nix { inherit nixpkgs inputs overlays; }; - in - { - # nix fmt - formatter = forAllSystems ( + + # Create a treefmt-nix evaluation for a system + mkTreefmtEval = system: let pkgs = getPkgs system; - treefmtEval = treefmt-nix.lib.evalModule pkgs { - projectRootFile = "flake.nix"; - programs = { - nixfmt.enable = true; - actionlint.enable = true; - deadnix.enable = true; - }; - }; in - treefmtEval.config.build.wrapper - ); + treefmt-nix.lib.evalModule pkgs { + projectRootFile = "flake.nix"; + programs = { + nixfmt.enable = true; + actionlint.enable = true; + deadnix.enable = true; + }; + }; - # Checks for each system - checks = forAllSystems ( - system: + # Create pre-commit hooks for a system and source + mkPreCommitHooks = + system: src: let - pkgs = getPkgs system; - treefmtEval = treefmt-nix.lib.evalModule pkgs { - projectRootFile = "flake.nix"; - programs = { - nixfmt.enable = true; - actionlint.enable = true; - deadnix.enable = true; - }; - }; + treefmtEval = mkTreefmtEval system; in - { - pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run { - src = ./.; - hooks = { - actionlint.enable = true; - check-merge-conflicts.enable = true; - deadnix.enable = true; - detect-private-keys.enable = true; - end-of-file-fixer.enable = true; - mixed-line-endings.enable = true; - shellcheck.enable = true; - treefmt = { - enable = true; - entry = "${treefmtEval.config.build.wrapper}/bin/treefmt --ci"; - }; - trim-trailing-whitespace.enable = true; + inputs.pre-commit-hooks.lib.${system}.run { + inherit src; + hooks = { + actionlint.enable = true; + check-merge-conflicts.enable = true; + deadnix.enable = true; + detect-private-keys.enable = true; + end-of-file-fixer.enable = true; + mixed-line-endings.enable = true; + shellcheck.enable = true; + flake-checker.enable = true; + treefmt = { + enable = true; + entry = "${treefmtEval.config.build.wrapper}/bin/treefmt --ci"; }; + trim-trailing-whitespace.enable = true; }; - } + }; + in + { + # nix fmt + formatter = forAllSystems ( + system: + let + treefmtEval = mkTreefmtEval system; + in + treefmtEval.config.build.wrapper ); + # nix flake check + checks = forAllSystems (system: { + pre-commit-check = mkPreCommitHooks system ./.; + }); + # my personal MacBook Air darwinConfigurations.mba-m2 = mkSystem "mba-m2" { system = "aarch64-darwin"; @@ -156,6 +158,7 @@ system: let pkgs = getPkgs system; + pre-commit-check = mkPreCommitHooks system ./.; # Scripts that are specific to darwin darwinScripts = @@ -208,6 +211,7 @@ in { default = pkgs.mkShellNoCC { + inherit (pre-commit-check) shellHook; # This is the key line packages = with pkgs; [ -- cgit v1.2.3