aboutsummaryrefslogtreecommitdiff
path: root/format
diff options
context:
space:
mode:
authorRobert Helgesson <robert@rycee.net>2020-02-01 20:59:49 +0100
committerRobert Helgesson <robert@rycee.net>2020-02-02 01:19:35 +0100
commit70af3b126a0ca281526e328f32c4009a2804aa21 (patch)
tree2ce7681e75d471a39d63a110fc914d2dca9ae48e /format
parent45abf3d38a2b51c00c347cab6950f3734e023bba (diff)
ci: add format script and use in CI pipeline
The format script can be used to automatically format the Nix source files and also verify that the files are formatted using the `-c` command argument. At the moment some files are exempt from the formatting to avoid causing merge conflicts in active pull requests. Finally, update the contribution guidelines to note that `nixfmt` should be used.
Diffstat (limited to 'format')
-rwxr-xr-xformat70
1 files changed, 70 insertions, 0 deletions
diff --git a/format b/format
new file mode 100755
index 00000000000..539ae60de22
--- /dev/null
+++ b/format
@@ -0,0 +1,70 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash -p findutils nixfmt
+
+CHECK_ARG=
+
+case $1 in
+ -h)
+ echo "$0 [-c]"
+ ;;
+ -c)
+ CHECK_ARG=-c
+ ;;
+esac
+
+# The first block of excludes are files where nixfmt does a poor job,
+# IMHO. The second block of excludes are files touched by open pull
+# requests and we want to avoid merge conflicts.
+find . -name '*.nix' \
+ ! -path ./modules/programs/irssi.nix \
+ \
+ ! -path ./home-manager/default.nix \
+ ! -path ./home-manager/home-manager.nix \
+ ! -path ./modules/accounts/email.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/lib/types.nix \
+ ! -path ./modules/manual.nix \
+ ! -path ./modules/misc/dconf.nix \
+ ! -path ./modules/misc/gtk.nix \
+ ! -path ./modules/misc/news.nix \
+ ! -path ./modules/misc/nixpkgs.nix \
+ ! -path ./modules/misc/xdg.nix \
+ ! -path ./modules/modules.nix \
+ ! -path ./modules/programs/afew.nix \
+ ! -path ./modules/programs/alot.nix \
+ ! -path ./modules/programs/bash.nix \
+ ! -path ./modules/programs/emacs.nix \
+ ! -path ./modules/programs/firefox.nix \
+ ! -path ./modules/programs/fish.nix \
+ ! -path ./modules/programs/gpg.nix \
+ ! -path ./modules/programs/lesspipe.nix \
+ ! -path ./modules/programs/neovim.nix \
+ ! -path ./modules/programs/ssh.nix \
+ ! -path ./modules/programs/tmux.nix \
+ ! -path ./modules/programs/vscode.nix \
+ ! -path ./modules/programs/zsh.nix \
+ ! -path ./modules/services/gpg-agent.nix \
+ ! -path ./modules/services/kbfs.nix \
+ ! -path ./modules/services/keybase.nix \
+ ! -path ./modules/services/mpd.nix \
+ ! -path ./modules/services/sxhkd.nix \
+ ! -path ./modules/services/window-managers/i3.nix \
+ ! -path ./modules/systemd.nix \
+ ! -path ./nix-darwin/default.nix \
+ ! -path ./tests/default.nix \
+ ! -path ./tests/modules/home-environment/default.nix \
+ ! -path ./tests/modules/home-environment/session-variables.nix \
+ ! -path ./tests/modules/programs/gpg/override-defaults.nix \
+ ! -path ./tests/modules/programs/tmux/default.nix \
+ ! -path ./tests/modules/programs/tmux/disable-confirmation-prompt.nix \
+ ! -path ./tests/modules/programs/tmux/secure-socket-enabled.nix \
+ ! -path ./tests/modules/programs/zsh/session-variables.nix \
+ ! -path ./tests/modules/services/sxhkd/service.nix \
+ ! -path ./tests/modules/systemd/default.nix \
+ ! -path ./tests/modules/systemd/services.nix \
+ ! -path ./tests/modules/systemd/session-variables.nix \
+ -exec nixfmt $CHECK_ARG {} +