#! /usr/bin/env nix-shell #! nix-shell -I nixpkgs=https://github.com/NixOS/nixpkgs/archive/6616de389ed55fba6eeba60377fc04732d5a207c.tar.gz -i bash -p git gnugrep gnused findutils nixfmt nixfmt_args=() files=() 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. 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[@]}"