diff --git a/flake-parts/checks.nix b/flake-parts/checks.nix new file mode 100644 index 0000000..980b2f6 --- /dev/null +++ b/flake-parts/checks.nix @@ -0,0 +1,20 @@ +{ inputs, self, ... }: +{ + perSystem = + { inputs', pkgs, ... }: + { + checks = { + formatting = (inputs.treefmt.lib.evalModule pkgs "${self}/treefmt.nix").config.build.check self; + + statix = pkgs.runCommand "statix" { buildInputs = [ inputs'.statix.packages.statix ]; } '' + statix check ${self} + touch $out + ''; + + deadnix = pkgs.runCommand "deadnix" { buildInputs = [ pkgs.deadnix ]; } '' + deadnix --fail ${self} + touch $out + ''; + }; + }; +} diff --git a/flake-parts/formatter.nix b/flake-parts/formatter.nix index c2350b8..e8ac02a 100644 --- a/flake-parts/formatter.nix +++ b/flake-parts/formatter.nix @@ -1,16 +1,8 @@ -{ inputs, ... }: +{ inputs, self, ... }: { perSystem = { pkgs, ... }: { - formatter = - (inputs.treefmt.lib.evalModule pkgs { - projectRootFile = "flake.nix"; - programs = { - nixfmt.enable = true; - prettier.enable = true; - just.enable = true; - }; - }).config.build.wrapper; + formatter = (inputs.treefmt.lib.evalModule pkgs "${self}/treefmt.nix").config.build.wrapper; }; } diff --git a/flake.lock b/flake.lock index 35f1b99..a0ddfe5 100644 --- a/flake.lock +++ b/flake.lock @@ -114,6 +114,27 @@ "type": "github" } }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "statix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1754487366, + "narHash": "sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "af66ad14b28a127c5c0f3bbb298218fc63528a18", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -284,6 +305,7 @@ "nixpkgs-unstable": "nixpkgs-unstable", "radicale-birthday-calendar": "radicale-birthday-calendar", "sops": "sops", + "statix": "statix", "treefmt": "treefmt", "vscode-extensions": "vscode-extensions" } @@ -308,6 +330,44 @@ "type": "github" } }, + "statix": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems" + }, + "locked": { + "lastModified": 1760596293, + "narHash": "sha256-duH6Il124g+CdYX+HCqOGnpJxyxOCgWYcrcK0CBnA2M=", + "owner": "oppiliappan", + "repo": "statix", + "rev": "e9df54ce918457f151d2e71993edeca1a7af0132", + "type": "github" + }, + "original": { + "owner": "oppiliappan", + "repo": "statix", + "type": "github" + } + }, + "systems": { + "flake": false, + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "treefmt": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index 3233b49..3667723 100644 --- a/flake.nix +++ b/flake.nix @@ -35,6 +35,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + statix = { + url = "github:oppiliappan/statix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + vscode-extensions = { url = "github:nix-community/nix-vscode-extensions"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/treefmt.nix b/treefmt.nix new file mode 100644 index 0000000..d81baf4 --- /dev/null +++ b/treefmt.nix @@ -0,0 +1,8 @@ +{ + projectRootFile = "flake.nix"; + programs = { + nixfmt.enable = true; + prettier.enable = true; + just.enable = true; + }; +}