diff --git a/flake.nix b/flake.nix index 398bb91..0d5e752 100644 --- a/flake.nix +++ b/flake.nix @@ -29,8 +29,6 @@ ]; imports = [ - inputs.treefmt.flakeModule - ./assets ./hosts ./modules @@ -39,31 +37,7 @@ flake.devShells = transpose (builtins.mapAttrs (_: shell: shell.result) nilla.shells); flake.packages = transpose (builtins.mapAttrs (_: pkg: pkg.result) nilla.packages); - - perSystem = { - treefmt = { - programs.deadnix.enable = true; - programs.nixfmt.enable = true; - programs.statix.enable = true; - programs.fish_indent.enable = true; - programs.deno.enable = true; - programs.stylua.enable = true; - programs.shfmt.enable = true; - settings.global.excludes = [ - # agenix - "*.age" - - # racket - "*.rkt" - "**/rashrc" - - # custom assets - "*.png" - "*.svg" - ]; - settings.on-unmatched = "fatal"; - }; - }; + flake.formatter = nilla.packages.formatter.result; }; inputs = { diff --git a/modules/nilla/builders/custom-load.nix b/modules/nilla/builders/custom-load.nix index b89bc36..b340dec 100644 --- a/modules/nilla/builders/custom-load.nix +++ b/modules/nilla/builders/custom-load.nix @@ -1,12 +1,7 @@ { lib }: { config.builders.custom-load = { - settings.type = lib.types.submodule { - options.args = lib.options.create { - type = lib.types.null; - default.value = null; - }; - }; + settings.type = lib.types.submodule { }; settings.default = { }; build = pkg: lib.attrs.generate pkg.systems (system: pkg.package { inherit system; }); }; diff --git a/nilla.nix b/nilla.nix index 70446e8..af9de9a 100644 --- a/nilla.nix +++ b/nilla.nix @@ -61,6 +61,16 @@ ]; } ); + formatter = { + inherit systems; + builder = "custom-load"; + package = + { system }: + let + eval = inputs.treefmt.lib.evalModule inputs.nixpkgs.legacyPackages.${system} ./treefmt.nix; + in + eval.config.build.wrapper; + }; }; config.shells.default = { diff --git a/treefmt.nix b/treefmt.nix new file mode 100644 index 0000000..93590a2 --- /dev/null +++ b/treefmt.nix @@ -0,0 +1,23 @@ +{ + projectRootFile = "nilla.nix"; + programs.deadnix.enable = true; + programs.nixfmt.enable = true; + programs.statix.enable = true; + programs.fish_indent.enable = true; + programs.deno.enable = true; + programs.stylua.enable = true; + programs.shfmt.enable = true; + settings.global.excludes = [ + # agenix + "*.age" + + # racket + "*.rkt" + "**/rashrc" + + # custom assets + "*.png" + "*.svg" + ]; + settings.on-unmatched = "fatal"; +}