diff options
Diffstat (limited to 'nix/pre-commit-checks.nix')
-rw-r--r-- | nix/pre-commit-checks.nix | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/nix/pre-commit-checks.nix b/nix/pre-commit-checks.nix new file mode 100644 index 0000000..bd6df7c --- /dev/null +++ b/nix/pre-commit-checks.nix @@ -0,0 +1,95 @@ +{ pkgs }: +rec { + src = ../.; + hooks = { + gotest.enable = true; + golangci-lint.enable = true; + staticcheck = + let + wrapper = pkgs.symlinkJoin { + name = "staticcheck-wrapped"; + paths = [ pkgs.go-tools ]; + nativeBuildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/staticcheck \ + --prefix PATH : ${pkgs.lib.makeBinPath [ pkgs.go ]} + ''; + }; + in + { + enable = true; + package = wrapper; + entry = + let + script = pkgs.writeShellScript "precommit-staticcheck" '' + err=0 + for dir in $(echo "$@" | xargs -n1 dirname | sort -u); do + ${hooks.staticcheck.package}/bin/staticcheck ./"$dir" + code="$?" + if [[ "$err" -eq 0 ]]; then + err="$code" + fi + done + exit $err + ''; + in + builtins.toString script; + }; + + statix = { + enable = true; + settings.ignore = [ "nix/*" ]; + }; + deadnix = { + enable = true; + excludes = [ "nix/.*" ]; + }; + nixpkgs-fmt = { + enable = true; + excludes = [ "nix/.*" ]; + }; + + convco.enable = true; + + check-case-conflicts.enable = true; + check-symlinks.enable = true; + editorconfig-checker.enable = true; + prettier = { + enable = true; + types_or = [ "plain-text" "yaml" "gotmpl" "javascript" ]; + settings = { + plugins = with pkgs.nodePackages; [ + "${prettier-plugin-go-template}/lib/node_modules/prettier-plugin-go-template/lib/index.js" + ]; + }; + }; + + yamllint = { + enable = true; + }; + golines = { + enable = true; + name = "golines"; + description = "A golang formatter that fixes long lines"; + types_or = [ "go" ]; + entry = "${pkgs.golines}/bin/golines --write-output"; + pass_filenames = 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; + }; + }; +} |