workflows/editorconfig: drop and move to treefmt

We already have treefmt running for nixfmt, so it's easy to just add
another formatter to it. This gives a much better UX, because all
formatting errors are reported through the same channel.

It also saves us one CI job, which takes most of the time to just set up
the machine, clone the repo and download Nix - while doing a minimum of
actual work.

Total execution time for treefmt is ~10% slower:
- 38s only nixfmt
- 43s nixfmt + editorconfig-checker
This commit is contained in:
Wolfgang Walther
2025-05-09 20:56:58 +02:00
parent d11eec2278
commit ba4fe10465
4 changed files with 12 additions and 60 deletions

View File

@@ -1,7 +1,4 @@
# NOTE: Formatting with the RFC-style nixfmt command is not yet stable. name: Check that files are formatted
# See https://github.com/NixOS/rfcs/pull/166.
name: Check that Nix files are formatted
on: on:
pull_request_target: pull_request_target:
@@ -14,7 +11,7 @@ jobs:
uses: ./.github/workflows/get-merge-commit.yml uses: ./.github/workflows/get-merge-commit.yml
nixos: nixos:
name: nixfmt-check name: fmt-check
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
needs: get-merge-commit needs: get-merge-commit
if: needs.get-merge-commit.outputs.mergedSha if: needs.get-merge-commit.outputs.mergedSha
@@ -27,13 +24,13 @@ jobs:
with: with:
extra_nix_config: sandbox = true extra_nix_config: sandbox = true
- name: Check that Nix files are formatted - name: Check that files are formatted
run: | run: |
# Note that it's fine to run this on untrusted code because: # Note that it's fine to run this on untrusted code because:
# - There's no secrets accessible here # - There's no secrets accessible here
# - The build is sandboxed # - The build is sandboxed
if ! nix-build ci -A fmt.check; then if ! nix-build ci -A fmt.check; then
echo "Some Nix files are not properly formatted" echo "Some files are not properly formatted"
echo "Please format them by going to the Nixpkgs root directory and running one of:" echo "Please format them by going to the Nixpkgs root directory and running one of:"
echo " nix-shell --run treefmt" echo " nix-shell --run treefmt"
echo " nix develop --command treefmt" echo " nix develop --command treefmt"

View File

@@ -1,52 +0,0 @@
name: "Checking EditorConfig v2"
on:
pull_request_target:
permissions: {}
jobs:
get-merge-commit:
uses: ./.github/workflows/get-merge-commit.yml
tests:
name: editorconfig-check
runs-on: ubuntu-24.04
needs: get-merge-commit
if: "needs.get-merge-commit.outputs.mergedSha && !contains(github.event.pull_request.title, '[skip treewide]')"
steps:
- name: Get list of changed files from PR
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api \
repos/${{ github.repository }}/pulls/${{ github.event.number }}/files --paginate \
| jq '.[] | select(.status != "removed") | .filename' \
> "$HOME/changed_files"
- name: print list of changed files
run: |
cat "$HOME/changed_files"
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
ref: ${{ needs.get-merge-commit.outputs.mergedSha }}
- name: Get Nixpkgs revision for editorconfig-checker
run: |
# Pin to a commit from nixpkgs-unstable to avoid building from e.g. staging.
# This should not be a URL, because it would allow PRs to run arbitrary code in CI!
rev=$(jq -r .rev ci/pinned-nixpkgs.json)
echo "url=https://github.com/NixOS/nixpkgs/archive/$rev.tar.gz" >> "$GITHUB_ENV"
- uses: cachix/install-nix-action@526118121621777ccd86f79b04685a9319637641 # v31
with:
nix_path: nixpkgs=${{ env.url }}
- name: Checking EditorConfig
run: |
< "$HOME/changed_files" nix-shell -p editorconfig-checker --run 'xargs -r editorconfig-checker -disable-indent-size'
- if: ${{ failure() }}
run: |
echo "::error :: Hey! It looks like your changes don't follow our editorconfig settings. Read https://editorconfig.org/#download to configure your editor so you never see this error again."

View File

@@ -16,7 +16,7 @@
# CI # CI
/.github/*_TEMPLATE* @SigmaSquadron /.github/*_TEMPLATE* @SigmaSquadron
/.github/workflows @NixOS/Security @Mic92 @zowoq @infinisil @azuwis @wolfgangwalther /.github/workflows @NixOS/Security @Mic92 @zowoq @infinisil @azuwis @wolfgangwalther
/.github/workflows/check-nix-format.yml @infinisil @wolfgangwalther /.github/workflows/check-format.yml @infinisil @wolfgangwalther
/.github/workflows/codeowners-v2.yml @infinisil @wolfgangwalther /.github/workflows/codeowners-v2.yml @infinisil @wolfgangwalther
/.github/workflows/nixpkgs-vet.yml @infinisil @philiptaron @wolfgangwalther /.github/workflows/nixpkgs-vet.yml @infinisil @philiptaron @wolfgangwalther
/ci @infinisil @philiptaron @NixOS/Security @wolfgangwalther /ci @infinisil @philiptaron @NixOS/Security @wolfgangwalther

View File

@@ -48,6 +48,13 @@ let
# the default formatter for Nix code. # the default formatter for Nix code.
# See https://github.com/NixOS/nixfmt # See https://github.com/NixOS/nixfmt
programs.nixfmt.enable = true; programs.nixfmt.enable = true;
settings.formatter.editorconfig-checker = {
command = "${pkgs.lib.getExe pkgs.editorconfig-checker}";
options = [ "-disable-indent-size" ];
includes = [ "*" ];
priority = 1;
};
}; };
fs = pkgs.lib.fileset; fs = pkgs.lib.fileset;
nixFilesSrc = fs.toSource { nixFilesSrc = fs.toSource {