From be8e419f66e11d983f1b07dfb01c365287f5c0e6 Mon Sep 17 00:00:00 2001 From: Ananth Venkatesh Date: Sat, 1 Feb 2025 03:42:40 -0500 Subject: [PATCH] chore(nix): add pre-commit checks --- .pre-commit-config.yaml | 1 + flake.lock | 86 ++++++++++++++++++++++++++++++++++++++--- flake.nix | 19 ++++++++- 3 files changed, 99 insertions(+), 7 deletions(-) create mode 120000 .pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 120000 index 0000000..0b5ed9b --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1 @@ +/nix/store/gnnangzf73g2b665rmhwblqydx18hjlm-pre-commit-config.json \ No newline at end of file diff --git a/flake.lock b/flake.lock index 2a83f74..58b8568 100644 --- a/flake.lock +++ b/flake.lock @@ -44,6 +44,43 @@ "type": "github" } }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "mkElmDerivation": { "inputs": { "elm-spa": "elm-spa", @@ -51,11 +88,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1737249952, - "narHash": "sha256-bWOrcJUIW5q9BEmdeaE5XPnHiWuhujeFM23EweNMuO0=", + "lastModified": 1737854574, + "narHash": "sha256-GIh8IAIjJ3BkqSKifdXcnrkJgY4diipcMZ1itmwiFyw=", "owner": "jeslie0", "repo": "mkElmDerivation", - "rev": "dd8538d8bcddcb7245cfdffffdf8118b0013dc64", + "rev": "88b3923af364826b39428aff3431857a2b9d8699", "type": "github" }, "original": { @@ -82,11 +119,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1737632463, - "narHash": "sha256-38J9QfeGSej341ouwzqf77WIHAScihAKCt8PQJ+NH28=", + "lastModified": 1738142207, + "narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "0aa475546ed21629c4f5bbf90e38c846a99ec9e9", + "rev": "9d3ae807ebd2981d593cddd0080856873139aa40", "type": "github" }, "original": { @@ -96,6 +133,22 @@ "type": "github" } }, + "nixpkgs_3": { + "locked": { + "lastModified": 1730768919, + "narHash": "sha256-8AKquNnnSaJRXZxc5YmF/WfmxiHX6MMZZasRP6RRQkE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a04d33c0c3f1a59a2c1cb0c6e34cd24500e5a1dc", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "npm-fix": { "inputs": { "nixpkgs": [ @@ -134,10 +187,31 @@ "type": "github" } }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "mkElmDerivation": "mkElmDerivation", "nixpkgs": "nixpkgs_2", + "pre-commit-hooks": "pre-commit-hooks", "utils": "utils" } }, diff --git a/flake.nix b/flake.nix index 9a17dba..d327044 100644 --- a/flake.nix +++ b/flake.nix @@ -5,6 +5,7 @@ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; utils.url = "github:numtide/flake-utils"; mkElmDerivation.url = "github:jeslie0/mkElmDerivation"; + pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; }; outputs = @@ -13,6 +14,7 @@ nixpkgs, utils, mkElmDerivation, + pre-commit-hooks, }: utils.lib.eachDefaultSystem ( system: @@ -26,10 +28,13 @@ devShells.default = with pkgs; mkShell { - buildInputs = [ + inherit (self.checks.${system}.pre-commit-check) shellHook; + + buildInputs = self.checks.${system}.pre-commit-check.enabledPackages ++ [ elmPackages.elm elmPackages.elm-test elmPackages.elm-format + elmPackages.elm-review entr ]; }; @@ -50,6 +55,18 @@ }; }; + checks = { + pre-commit-check = pre-commit-hooks.lib.${system}.run { + src = ./.; + hooks = { + nixfmt-rfc-style.enable = true; + elm-format.enable = true; + # elm-review.enable = true; + # elm-test.enable = true; + }; + }; + }; + formatter = nixpkgs.legacyPackages.${system}.nixfmt-rfc-style; } );