-
-
Notifications
You must be signed in to change notification settings - Fork 15.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Full treewide Nix format and enforcement [skip treewide] #380990
base: master
Are you sure you want to change the base?
Conversation
f203d08
to
347838f
Compare
347838f
to
240326d
Compare
240326d
to
0d75762
Compare
92a93af
to
e52125c
Compare
Can you point me to the instructions for that? I can't seem to find them. |
This pull request has been mentioned on NixOS Discourse. There might be relevant details there: https://discourse.nixos.org/t/nix-formatting-team-full-nixpkgs-reformat/61867/1 |
@SuperSandro2000 It's really just doing As per the above-linked announcement, we have now scheduled this PR for final review and merging in the meeting on Tuesday 2025-04-01 19:00 CEST (Jitsi), anybody is free to join! Note that I'll need to rebase it and merge it right after to avoid merge conflicts. If anybody sees any issues with this PR, let me know in advance :) |
Introduces treefmt with a simple nixfmt-rfc-style configuration to format all Nix files. This is only practically usable with the following commit that formats all files accordingly.
This enables `nix fmt`, though it won't be practically usable without also reformatting all files, which is done in a following commit.
Changes the Nix format checking workflow to now strictly enforce formatting of all Nix files using the treefmt setup introduced in the pre-previous commit. This is in [accordance with the approved RFC 166](https://github.com/NixOS/rfcs/blob/master/rfcs/0166-nix-formatting.md#reformat-nixpkgs). Note that the "skip treewide" thing is no longer necessary, already before, because there's nothing that would fail for treewide changes. Previously the problem was that the GitHub API would be bombarded.
Format all Nix files using the officially approved formatter, making the CI check introduced in the previous commit succeed: nix-build ci -A fmt.check This is the next step of the of the [implementation](NixOS/nixfmt#153) of the accepted [RFC 166](NixOS/rfcs#166). This commit will lead to merge conflicts for a number of PRs, up to an estimated ~1100 (~33%) among the PRs with activity in the past 2 months, but that should be lower than what it would be without the previous [partial treewide format](NixOS#322537). Merge conflicts caused by this commit can now automatically be resolved while rebasing using the [auto-rebase script](https://github.com/NixOS/nixpkgs/tree/8616af08d915377bd930395f3b700a0e93d08728/maintainers/scripts/auto-rebase). If you run into any problems regarding any of this, please reach out to the [formatting team](https://nixos.org/community/teams/formatting/) by pinging @NixOS/nix-formatting.
And enable use of the auto-rebase script: https://github.com/NixOS/nixpkgs/tree/master/maintainers/scripts/auto-rebase
Note
A merge party for final review and merge will be held on 2025-04-01 19:00 CEST in this Jitsi, anybody is free to join! 🎉
See https://discourse.nixos.org/t/nix-formatting-team-full-nixpkgs-reformat/61867 for more info
This is a huge step towards the full implementation of NixOS/rfcs#166 (ref NixOS/nixfmt#153)! Highlights:
treefmt
insidenix-shell
/nix develop
ornix fmt
to get the right formatting on all files, no more "these particular files need to be formatted"nixfmt
on auto-save or set up a pre commit hook to runtreefmt
This PR will lead to merge conflicts for a number of PRs, up to an estimated ~1100 (~33%) among the PRs with activity in the past 2 months, but that should be lower than what it would be without the previous partial reformat (#322537).
Merge conflicts caused by this commit can now also automatically be resolved while rebasing using the auto-rebase script.
This PR should be reviewed and approved by the @NixOS/nix-formatting team. Once ready, I'd like to schedule a merge party for this PR for the final review and merge. 🚀 🎉
Things done
treefmt
innix-shell
/nix develop
nix fmt
.git-blame-ignore-revs
(also needs constant updating)scripts/nixfmt-mergetool
nixfmt#277 -> Implement --mergetool mode nixfmt#283pkgs.nixfmt-rfc-style
to include the above: nixfmt-rfc-style: 2024-12-04 -> 2025-03-03 #387047Potential follow-up: There are cases where new files could be committed with the wrong formatting. If this becomes a sufficiently annoying problem, we should have some automation to automatically fix this. But let's see about that when we get there.
This work is funded by Tweag and Antithesis ✨
Add a 👍 reaction to pull requests you find important.