treefmt - the formatter multiplexer

If you work in a project with multiple programming languages, you'll have to use multiple formatters - such as PHPCS Fixer, Prettier or gofmt.

treefmt is a formatter multiplexer - one tool that manages multiple formatters.

There are currently 126 supported formatters and it's easy to add custom ones if needed.

It also integrates nicely with Nix via treefmt-nix.

Here is my module for this website that runs the appropriate formatters:

{ inputs, ... }:

{
imports = [
inputs.treefmt-nix.flakeModule
];

perSystem =
{ config, ... }:
{
treefmt = {
projectRootFile = "flake.nix";

programs = {
mdformat = {
enable = true;

plugins = ps: [
ps.mdformat-frontmatter
];
};

nixfmt.enable = true;
yamlfmt.enable = true;
};
};

formatter = config.treefmt.build.wrapper;
};
}

Any time I run nix flake check, the formatters are run to check the code.

If any code is not formatted correctly, the check will fail.

To fix any formatting issues, I just need to run nix fmt and it will run all the formatters and make the required changes.