diff --git a/.gitignore b/.gitignore index cd098b8..65c12c2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ _build/ _coverage/ -result \ No newline at end of file +result +/.pre-commit-config.yaml \ No newline at end of file diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 120000 index 0000000..2a19533 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1 @@ +/nix/store/y3cj5g3rd064bxpi3r2i1k2nzhk9qrdw-pre-commit-config.json \ No newline at end of file diff --git a/flake.lock b/flake.lock index a1e8315..24f924c 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,21 @@ { "nodes": { + "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" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -20,6 +36,45 @@ "type": "github" } }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1703887061, + "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "nix-filter": { "locked": { "lastModified": 1701697642, @@ -51,11 +106,81 @@ "type": "github" } }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1704874635, + "narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3dc440faeee9e889fe2d1b4d25ad0f430d449356", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1704842529, + "narHash": "sha256-OTeQA+F8d/Evad33JMfuXC89VMetQbsU4qcaePchGr4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "eabe8d3eface69f5bb16c18f8662a702f50c20d5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "gitignore": "gitignore", + "nixpkgs": "nixpkgs_2", + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1705229514, + "narHash": "sha256-itILy0zimR/iyUGq5Dgg0fiW8plRDyxF153LWGsg3Cw=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "ffa9a5b90b0acfaa03b1533b83eaf5dead819a05", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "flake-parts": "flake-parts", "nix-filter": "nix-filter", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "pre-commit-hooks": "pre-commit-hooks" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" } } }, diff --git a/flake.nix b/flake.nix index 46b9ebb..4caf913 100644 --- a/flake.nix +++ b/flake.nix @@ -6,30 +6,43 @@ url = "github:hercules-ci/flake-parts"; inputs.nixpkgs-lib.follows = "nixpkgs"; }; - nix-filter = { - url = "github:numtide/nix-filter"; - }; + pre-commit-hooks = { url = "github:cachix/pre-commit-hooks.nix"; }; + nix-filter = { url = "github:numtide/nix-filter"; }; }; - outputs = inputs @ { flake-parts, nix-filter, ... }: - flake-parts.lib.mkFlake { inherit inputs; } - ({ lib, ... }: { - systems = [ - "aarch64-linux" - "x86_64-linux" + outputs = + inputs @ { flake-parts + , nix-filter + , pre-commit-hooks + , ... + }: + flake-parts.lib.mkFlake { inherit inputs; } ({ lib, ... }: { + systems = [ + "aarch64-linux" + "x86_64-linux" - "x86_64-darwin" - "aarch64-darwin" - ]; - perSystem = { config, pkgs, self', ... }: { + "x86_64-darwin" + "aarch64-darwin" + ]; + imports = [ pre-commit-hooks.flakeModule ]; + perSystem = + { config + , pkgs + , self' + , ... + }: { packages = { - flake_env = pkgs.ocamlPackages.callPackage ./default.nix { inherit nix-filter; }; + flake_env = pkgs.ocamlPackages.callPackage ./default.nix { + inherit nix-filter; + }; default = config.packages.flake_env; }; devShells.default = pkgs.mkShell { inputsFrom = [ self'.packages.default ]; packages = [ pkgs.just + pkgs.rnix-lsp + pkgs.pre-commit pkgs.ocamlPackages.alcotest pkgs.ocamlPackages.bisect_ppx pkgs.ocamlPackages.dune_3 @@ -39,12 +52,22 @@ pkgs.ocamlPackages.ocamlformat pkgs.ocamlPackages.ocamlformat-rpc-lib ]; + shellHook = config.pre-commit.installationScript; + }; + pre-commit = { + check.enable = true; + settings.hooks = { + nixpkgs-fmt.enable = true; + dune-fmt.enable = true; + }; }; }; - flake = { - overlays.default = final: _prev: { - flake_env = final.ocamlPackages.callPackage ./default.nix { inherit nix-filter; }; + flake = { + overlays.default = final: _prev: { + flake_env = final.ocamlPackages.callPackage ./default.nix { + inherit nix-filter; }; }; - }); + }; + }); }