77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   inputs,
 | |
|   forEachSystem,
 | |
|   formatter,
 | |
|   ...
 | |
| }:
 | |
| forEachSystem (
 | |
|   system:
 | |
|   let
 | |
|     pkgs = inputs.nixpkgs.legacyPackages.${system};
 | |
|   in
 | |
|   {
 | |
|     pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run {
 | |
|       src = ./.;
 | |
|       hooks = {
 | |
|         # nix checks
 | |
|         # Example custom hook for nix formatting
 | |
|         fmt-check = {
 | |
|           enable = true;
 | |
| 
 | |
|           # The command to execute (mandatory):
 | |
|           entry = "${formatter.${system}}/bin/nixfmt --check";
 | |
| 
 | |
|           # The pattern of files to run on (default: "" (all))
 | |
|           # see also https://pre-commit.com/#hooks-files
 | |
|           files = "\\.nix$";
 | |
|         };
 | |
|         ## static analysis checks for nix
 | |
|         nil.enable = true;
 | |
|         statix.enable = true;
 | |
|         deadnix = {
 | |
|           enable = true;
 | |
|           settings = {
 | |
|             noUnderscore = true; # ignore variables starting with underscore
 | |
|             # ignore lambda patterns (useful for passing args from ({}@args)
 | |
|             # to other functions)
 | |
|             noLambdaPatternNames = true;
 | |
|           };
 | |
|         };
 | |
| 
 | |
|         # json hooks
 | |
|         check-json = {
 | |
|           enable = true;
 | |
|           # exclude vscode json files as they allow comments and check-json doesn't
 | |
|           excludes = [ "settings.json$" ];
 | |
|         };
 | |
| 
 | |
|         # toml hooks
 | |
|         check-toml.enable = true;
 | |
| 
 | |
|         # markdown hooks
 | |
|         mdl = {
 | |
|           enable = true;
 | |
|           settings.style =
 | |
|             (pkgs.writeText ".mdl_style.rb" ''
 | |
|               #!/usr/bin/env ruby
 | |
| 
 | |
|               all
 | |
|               rule 'MD013', :tables => false
 | |
|             '').outPath;
 | |
|         };
 | |
| 
 | |
|         # git hooks
 | |
|         check-merge-conflicts.enable = true;
 | |
|         ## prevents committing to main
 | |
|         no-commit-to-branch.enable = true;
 | |
| 
 | |
|         # misc hooks
 | |
|         check-added-large-files.enable = true;
 | |
|         ## prevents two similarly named files for case sensitive systems
 | |
|         check-case-conflicts.enable = true;
 | |
|         detect-private-keys.enable = true;
 | |
|       };
 | |
|     };
 | |
|   }
 | |
| )
 |