{
  projectRootFile = "flake.nix";

  programs = {
    actionlint.enable = false;
    biome = {
      enable = false;
      settings.formatter.formatWithErrors = true;
    };
    clang-format.enable = false;
    deadnix = {
      enable = true;
    };
    deno = {
      enable = false;
      # Using biome for these
      excludes = [
        "*.ts"
        "*.js"
        "*.json"
        "*.jsonc"
      ];
    };
    fantomas.enable = false;
    fish_indent.enable = false;
    gofmt.enable = false;
    isort.enable = false;
    nixfmt.enable = true;
    # nufmt.enable = true;
    ruff-check.enable = false;
    ruff-format.enable = false;
    rustfmt.enable = false;
    shfmt = {
      enable = false;
      indent_size = 4;
    };
    statix.enable = false;
    stylua.enable = false;
    taplo.enable = false;
    yamlfmt.enable = true;
  };

  settings = {
    fail-on-change = false;
    no-cache = true;
    global.excludes = [
      "*.editorconfig"
      "*.envrc"
      "*.gitconfig"
      "*.git-blame-ignore-revs"
      "*.gitignore"
      "*.gitattributes"
      "*.luacheckrc"
      "*CODEOWNERS"
      "*LICENSE"
      "*flake.lock"
      "*.conf"
      "*.gif"
      "*.ico"
      "*.ini"
      "*.micro"
      "*.png"
      "*.svg"
      "*.tmux"
      "*/config"
      # TODO: formatters?
      "*.ac"
      "*.css" # Exclude CSS files from formatting since we use Nix template variables
      "*.csproj"
      "*.fsproj"
      "*.in"
      "*.kdl"
      "*.kvconfig"
      "*.rasi"
      "*.sln"
      "*.xml"
      "*.zsh"
      "*Makefile"
      "*makefile"
    ];

    #formatter.ruff-format.options = [ "--isolated" ];
  };
}
