ci/treefmt: add markdown-code-runner

This was run as a test in `doc/tests/check-nix-code-blocks.nix` before,
but its DX can be improved: By including it in `treefmt` we get better
error reporting and auto-fixing, as well as running it on *all* markdown
files (including READMEs etc.) for free.
This commit is contained in:
Wolfgang Walther 2025-07-22 16:12:42 +02:00
parent fed181fac1
commit a7b3b2584a
No known key found for this signature in database
GPG Key ID: B39893FA5F65CAE1
4 changed files with 17 additions and 36 deletions

View File

@ -75,6 +75,23 @@ let
includes = [ "*" ];
priority = 1;
};
# TODO: Upstream this into treefmt-nix eventually:
# https://github.com/numtide/treefmt-nix/issues/387
settings.formatter.markdown-code-runner = {
command = pkgs.lib.getExe pkgs.markdown-code-runner;
options =
let
config = pkgs.writers.writeTOML "markdown-code-runner-config" {
presets.nixfmt = {
language = "nix";
command = [ (pkgs.lib.getExe pkgs.nixfmt) ];
};
};
in
[ "--config=${config}" ];
includes = [ "*.md" ];
};
};
fs = pkgs.lib.fileset;
nixFilesSrc = fs.toSource {

View File

@ -137,7 +137,6 @@ stdenvNoCC.mkDerivation (
tests = {
manpage-urls = callPackage ../tests/manpage-urls.nix { };
check-nix-code-blocks = callPackage ../tests/check-nix-code-blocks.nix { };
};
};
}

View File

@ -1,32 +0,0 @@
{
runCommand,
markdown-code-runner,
nixfmt-rfc-style,
}:
runCommand "manual_check-nix-code-blocks"
{
nativeBuildInputs = [
markdown-code-runner
nixfmt-rfc-style
];
}
''
set +e
mdcr --check --config ${./mdcr-config.toml} ${./..}
if [ $? -ne 0 ]; then
cat <<EOF
Error: `mdcr` command failed. Please make sure the Nix code snippets in Markdown files are correctly formatted.
Run this command from the Nixpkgs repository root for automatic formatting:
mdcr --log debug --config ${toString ./..}/tests/mdcr-config.toml ${toString ./..}
EOF
exit 1
fi
touch "$out"
''

View File

@ -1,3 +0,0 @@
[presets.nixfmt]
language = "nix"
command = ["nixfmt"]