aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2025-05-10 09:56:40 -0700
committerFranck Cuny <franck@fcuny.net>2025-05-10 10:33:46 -0700
commitefa3978fe52b1b71ae7acf32088657dc5414452e (patch)
tree6a93f4ede0519faf3a27f31f0a7a0db72e162f4e
parentadd utmctl to path (diff)
downloadinfra-efa3978fe52b1b71ae7acf32088657dc5414452e.tar.gz
add flake-checker to pre-commit hooks
Refactor the configuration to ensure we generate the configuration for pre-commit hooks properly in the devShell.
-rw-r--r--flake.nix90
1 files 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;
[