aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml1
-rw-r--r--CONTRIBUTING.md17
-rwxr-xr-xformat70
3 files changed, 81 insertions, 7 deletions
diff --git a/.travis.yml b/.travis.yml
index df9c468be64..e0712e1e41f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,5 +8,6 @@ before_script:
- mkdir -m 0755 -p /nix/var/nix/{profiles,gcroots}/per-user/$USER
script:
+ - ./format -c
- nix-shell . -A install
- nix-shell tests -A run.all
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index d441aef0627..8e64b3b45f9 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -91,12 +91,15 @@ In addition to the above commit message guidelines, try to follow the
### Style guidelines ###
-The code in Home Manager should follow the [Nixpkgs syntax
-guidelines][]. Note, we prefer `lowerCamelCase` for variable and
-attribute names with the accepted exception of variables directly
-referencing packages in Nixpkgs which use a hyphenated style. For
-example, the Home Manager option `services.gpg-agent.enableSshSupport`
-references the `gpg-agent` package in Nixpkgs.
+The code in Home Manager is formatted by the [nixfmt][] tool and the
+formatting is checked in the pull request tests. Run the `format` tool
+inside the project repository before submitting your pull request.
+
+Note, we prefer `lowerCamelCase` for variable and attribute names with
+the accepted exception of variables directly referencing packages in
+Nixpkgs which use a hyphenated style. For example, the Home Manager
+option `services.gpg-agent.enableSshSupport` references the
+`gpg-agent` package in Nixpkgs.
### News ###
@@ -158,4 +161,4 @@ If you do have a change worthy of a news entry then please add one in
[create a pull request]: https://help.github.com/articles/creating-a-pull-request/
[seven rules]: https://chris.beams.io/posts/git-commit/#seven-rules
[`news.nix`]: https://github.com/rycee/home-manager/blob/master/modules/misc/news.nix
-[Nixpkgs syntax guidelines]: https://nixos.org/nixpkgs/manual/#sec-syntax
+[nixfmt]: https://github.com/serokell/nixfmt/
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 {} +