about summary refs log tree commit diff stats
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix25
1 files changed, 24 insertions, 1 deletions
diff --git a/flake.nix b/flake.nix
index 85f7915..1f605d5 100644
--- a/flake.nix
+++ b/flake.nix
@@ -11,8 +11,9 @@
     inputs.nixpkgs.follows = "nixpkgs";
     inputs.flake-utils.follows = "utils";
   };
+  inputs.pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix";
 
-  outputs = { self, nixpkgs, utils, gomod2nix, ... }:
+  outputs = { self, nixpkgs, utils, gomod2nix, pre-commit-hooks, ... }:
     utils.lib.eachDefaultSystem
       (system:
         let
@@ -37,6 +38,7 @@
             };
             default = pkgs.mkShell {
               inputsFrom = [ packages.builder ];
+              inherit (self.checks.${system}.pre-commit-check) shellHook;
               packages = with pkgs; [
                 gopls
                 gotools
@@ -54,6 +56,27 @@
               ${pkgs.hyperlink}/bin/hyperlink ${packages.website}/website/public
               touch $out
             '';
+            pre-commit-check = pre-commit-hooks.lib.${system}.run {
+              src = ./.;
+              hooks = {
+                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 --outdir nix";
+                  pass_filenames = false;
+                };
+              };
+            };
           };
         });
 }