From 2126268791fdf9001c2b7f6b96f05c98e222f8a7 Mon Sep 17 00:00:00 2001 From: David Arnold Date: Wed, 27 Jan 2021 10:31:17 -0500 Subject: [PATCH] shell: use devshell-native pre-commit hooks --- .pre-commit-config.yaml | 5 ----- flake.lock | 6 +++--- shell/default.nix | 29 +++++++++++++++++++++++------ 3 files changed, 26 insertions(+), 14 deletions(-) delete mode 100644 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index f1ed697..0000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,5 +0,0 @@ -repos: -- repo: https://github.com/nix-community/nixpkgs-fmt - rev: master - hooks: - - id: nixpkgs-fmt diff --git a/flake.lock b/flake.lock index dfab41b..67f47de 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ }, "devshell": { "locked": { - "lastModified": 1607956014, - "narHash": "sha256-kcmh1ZO56GFYStDeM2VngJSvx/e8aKhFSYqLwfiq+Es=", + "lastModified": 1611739118, + "narHash": "sha256-QjLEfLSiiWDdURFMkke/W7iJsA0unI3pg+91ubvmjbI=", "owner": "numtide", "repo": "devshell", - "rev": "17f46732ce299daa2977be2978f60d258c2d1b41", + "rev": "d7a5ebc22aa89a40a96b413a8fc616178920567c", "type": "github" }, "original": { diff --git a/shell/default.nix b/shell/default.nix index 31e01c2..8a795ea 100644 --- a/shell/default.nix +++ b/shell/default.nix @@ -34,7 +34,7 @@ let name = "flk"; in -pkgs.mkDevShell { +pkgs.devshell.mkShell { inherit name; packages = with pkgs; with installPkgs; [ @@ -48,6 +48,28 @@ pkgs.mkDevShell { env = { inherit name; }; + git.hooks = with pkgs; { + enable = true; + pre-commit.text = '' + if ${git}/bin/git rev-parse --verify HEAD >/dev/null 2>&1 + then + against=HEAD + else + # Initial commit: diff against an empty tree object + against=$(${git}/bin/git hash-object -t tree /dev/null) + fi + # Redirect output to stderr. + exec 1>&2 + + # Format staged nix files. + exec ${nixpkgs-fmt}/bin/nixpkgs-fmt \ + $( + ${git}/bin/git diff-index --name-only --cached $against -- \ + | ${ripgrep}/bin/rg '\.nix$' + ) + ''; + }; + commands = with pkgs; [ { name = nixpkgs-fmt.pname; @@ -61,11 +83,6 @@ pkgs.mkDevShell { category = "main"; package = flk; } - { - name = "hooks"; - help = "install git hooks"; - command = "pre-commit install"; - } { name = "grip"; help = python38Packages.grip.meta.description;