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;
|
|
};
|
|
};
|
|
}
|
|
)
|