diff --git a/flake-parts/formatting.nix b/flake-parts/formatting.nix new file mode 100644 index 00000000..63e6ff91 --- /dev/null +++ b/flake-parts/formatting.nix @@ -0,0 +1,15 @@ +{self, inputs, ...}: { + imports = [ + inputs.treefmt-nix.flakeModule + ]; + perSystem = { + pkgs, + ... + }: { + treefmt.projectRootFile = "flake.nix"; + treefmt.flakeCheck = true; + treefmt.flakeFormatter = true; + treefmt.programs.alejandra.enable = true; + treefmt.programs.shellcheck.enable = true; + }; +} diff --git a/flake-parts/pre-commit.nix b/flake-parts/pre-commit.nix new file mode 100644 index 00000000..d44afc88 --- /dev/null +++ b/flake-parts/pre-commit.nix @@ -0,0 +1,4 @@ +{ self, ... }: { + pre-commit.settings.hooks.alejandra.enable = true; + pre-commit.settings.hooks.shellcheck.enable = true; +} diff --git a/flake.lock b/flake.lock index 8a273cdd..d230d18a 100644 --- a/flake.lock +++ b/flake.lock @@ -76,7 +76,28 @@ "inputs": { "flake-parts": "flake-parts", "nixos-generators": "nixos-generators", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "treefmt-nix": "treefmt-nix" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1689070229, + "narHash": "sha256-99VU2FTkEdO3/1Qr78fHWWlN5GaOGLaXDi26PNiUf+I=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "3c54278bf7b8642eba174a22ca02d5552c21dc0b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" } } }, diff --git a/flake.nix b/flake.nix index 7c19b6cc..6d8286f5 100644 --- a/flake.nix +++ b/flake.nix @@ -7,6 +7,8 @@ nixos-generators.inputs.nixpkgs.follows = "nixpkgs"; flake-parts.url = "github:hercules-ci/flake-parts"; flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs"; + treefmt-nix.url = "github:numtide/treefmt-nix"; + treefmt-nix.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = inputs@{ flake-parts, ... }: @@ -14,6 +16,7 @@ systems = lib.systems.flakeExposed; imports = [ ./flake-parts/packages.nix + ./flake-parts/formatting.nix ]; flake = { nixosConfigurations.installer = lib.nixosSystem {