Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
- 'system'

have been removed. Instead use the arguments 'pkgs' and
'modules'. See the 22.11 release notes for more: https://nix-community.github.io/home-manager/release-notes.html#sec-release-22.11-highlights
'modules'. See the 22.11 release notes for more: https://nix-community.github.io/home-manager/release-notes.html#sec-release-22.11-highlights
'';

throwForRemovedArgs = v:
Expand Down Expand Up @@ -93,6 +93,13 @@
tests = import ./tests { inherit pkgs; };
in tests.run);

formatter = forAllSystems (system:
let pkgs = nixpkgs.legacyPackages.${system};
in pkgs.linkFarm "format" [{
name = "bin/format";
path = ./format;
}]);

packages = forAllSystems (system:
let
pkgs = nixpkgs.legacyPackages.${system};
Expand Down
66 changes: 45 additions & 21 deletions format
Original file line number Diff line number Diff line change
@@ -1,27 +1,51 @@
#! /usr/bin/env nix-shell
#! nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/6616de389ed55fba6eeba60377fc04732d5a207c.tar.gz -i bash -p findutils nixfmt
#! nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/6616de389ed55fba6eeba60377fc04732d5a207c.tar.gz -i bash -p git gnugrep gnused findutils nixfmt

CHECK_ARG=
nixfmt_args=()
files=()

case $1 in
-h)
echo "$0 [-c]"
;;
-c)
CHECK_ARG=-c
;;
esac
for arg do
case $arg in
-h)
echo "$0 [-c]"
exit
;;
-c)
nixfmt_args+=("$arg")
;;
-*)
echo "unrecognised flag: $arg" >&2
exit 1
;;
*)
files+=("$arg")
;;
esac
done

# The excludes are for files touched by open pull requests and we want
# to avoid merge conflicts.
find . -name '*.nix' \
! -path ./modules/default.nix \
! -path ./modules/files.nix \
! -path ./modules/home-environment.nix \
! -path ./modules/lib/default.nix \
! -path ./modules/lib/file-type.nix \
! -path ./modules/misc/news.nix \
! -path ./modules/programs/ssh.nix \
! -path ./modules/programs/zsh.nix \
! -path ./tests/default.nix \
-exec nixfmt $CHECK_ARG {} +
excludes=(
modules/default.nix
modules/files.nix
modules/home-environment.nix
modules/lib/default.nix
modules/lib/file-type.nix
modules/misc/news.nix
modules/programs/ssh.nix
modules/programs/zsh.nix
tests/default.nix
)

exclude_args=()
for e in "${excludes[@]}"; do
exclude_args+=(-e "$e")
done

git_root=$(git rev-parse --show-toplevel)

git ls-files -z --cached --others --full-name -- "${files[@]}" |
grep -z '\.nix$' |
grep -z -v "${exclude_args[@]}" |
sed -z "s|^|$git_root/|" |
xargs -0 nixfmt "${nixfmt_args[@]}"