git-hooks.nix
git-hooks.nix copied to clipboard
[question] Can I use this to override a hook while leaving `pre-commit-hooks.yaml` alone for my non-nix-using colleagues?
I see that there is already an issue for documenting how to "override" a hook. I also want to override a hook, but I think we mean "override" in different ways.
Most of my team doesn't use nix, so they run pre-commit against a .pre-commit-hooks.yaml which I would be frowned at if I deleted and .gitignored as this warning recommends:
pre-commit-hooks.nix: WARNING: Refusing to install because of pre-existing .pre-commit-config.yaml
1. Translate .pre-commit-config.yaml contents to the new syntax in your Nix file
see https://github.com/cachix/pre-commit-hooks.nix#getting-started
2. remove .pre-commit-config.yaml
3. add .pre-commit-config.yaml to .gitignore
I maintain a flake.nix in my team's repo because I appreciate the determinism, especially when switching between machines. This comes with certain headaches like this one. Since charliermarsh/ruff-pre-commit breaks on NixOS but works for my non-nix coworkers, I'd like to do the following.
A: contribute a ruff pre-commit hook to pre-commit-hooks.nix
B: configure pre-commit-hooks.nix to run the nix-friendly hook instead of charliermarsh/ruff-pre-commit, but otherwise conform to the existing hooks
C: commit this configuration to my repo in a way that does not break my non-nix coworker's workflows
So when I say "override" I mean:
leave the traditional pre-commit configuration intact but have
pre-commit-hooks.nix"take over" for certain hooks.
Can I get some advice on whether pre-commit-hooks.nix is capable of supporting B and C? If so, how would I configure it?
A more general application of this pattern would be to override cases like this:
- repo: local
hooks:
- id: foo
language: system
entry: python ./somescript.py
So that you can map them to declared environments, rather than using whatever pre-commit comes up with for "system"
Has anyone found a solution for this already? I don't want to necessarily overwrite, but at least keep the existing .pre-commit-hook.yaml for non-nix collaborators
It's currently hardcoded, but I suppose with some hacking (on this repo) the location could be turned into an option
https://github.com/cachix/git-hooks.nix/blob/8d6a17d0cdf411c55f12602624df6368ad86fac1/modules/pre-commit.nix#L62
I think you can pass an alternate config location to pre-commit as well.