nix/pre-commit-checks.nix (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | { pkgs, treefmtEval }:
{
src = ../.;
hooks = {
gotest.enable = false;
golangci-lint = {
enable = true;
extraPackages = [ pkgs.go ];
};
statix = {
enable = true;
# ignore is a glob
settings.ignore = [ "nix/overlays/*" ];
};
deadnix = {
enable = true;
# excludes is a regex
excludes = [ "nix/overlays/.*" ];
};
convco.enable = true;
check-case-conflicts.enable = true;
check-symlinks.enable = true;
editorconfig-checker = {
enable = true;
excludes = [
"\.md$"
"\.ya?ml$"
];
};
prettier = {
enable = true;
package = pkgs.prettier;
types_or = [
"plain-text"
"yaml"
"javascript"
];
excludes = [ "CHANGELOG\.md$" ];
};
yamllint = {
enable = true;
};
go-mod-tidy = {
enable = true;
name = "go-mod-tidy";
description = "Run `go mod tidy`";
types_or = [
"go"
"go-mod"
];
entry = "${pkgs.go}/bin/go mod tidy";
pass_filenames = false;
};
gomod2nix = {
enable = true;
name = "gomod2nix";
description = "Import go.mod updates to nix";
types_or = [ "go-sum" ];
entry = "${pkgs.gomod2nix}/bin/gomod2nix";
pass_filenames = false;
};
generate-default-config = {
enable = true;
name = "generate-default-config";
description = "Ensure default configuration file is up-to-date";
files = "^defaults.toml|internal/config/";
types_or = [
"go"
"toml"
];
entry =
let
script = pkgs.writeShellScript "generate-default-config" ''
${pkgs.go}/bin/go run ./cmd/searchix-web defaults > defaults.toml
'';
in
builtins.toString script;
};
treefmt = {
enable = true;
packageOverrides.treefmt = treefmtEval.config.build.wrapper;
};
};
}
|