{ inputs, ... }: { imports = [ inputs.treefmt-nix.flakeModule ]; perSystem = { config, pkgs, ... }: { ci.buildbot = { inherit (config.checks) treefmt; }; treefmt.config = { projectRootFile = "flake.nix"; flakeCheck = true; programs = { # keep-sorted start block=yes newline_separated=no isort.enable = true; keep-sorted.enable = true; nixfmt = { enable = true; package = pkgs.nixfmt-rfc-style; }; prettier = { enable = true; excludes = [ "**.md" ]; }; ruff = { check = true; format = true; }; shfmt.enable = true; statix = { enable = true; disabled-lints = [ # We often use `nullable == true` "bool_comparison" ]; }; stylua.enable = true; # FIXME: re-enable on darwin, currently broken: taplo with options '[format]' failed to apply: exit status 101 taplo.enable = pkgs.stdenv.isLinux; # keep-sorted end }; settings = { global.excludes = [ ".editorconfig" ".envrc" ".git-blame-ignore-revs" ".gitignore" "LICENSE" "flake.lock" "**.md" "**.scm" "**.svg" "**/man/*.5" # Those files are generated by pytest-regression, which then `diff`s them. # Formatting them will make the tests fail. "docs/gfm-alerts-to-admonitions/tests/**/*.yml" ]; formatter.ruff-format.options = [ "--isolated" ]; }; }; }; }