49 lines
1.2 KiB
Nix
49 lines
1.2 KiB
Nix
{
|
|
self,
|
|
pkgs,
|
|
host,
|
|
}:
|
|
pkgs.writeShellScriptBin "nixcommit" ''
|
|
#!/run/current-system/sw/bin/bash
|
|
|
|
scheck && runbg aplay ${self}/media/sound/nixswitch-start.wav
|
|
pushd "${self}" || exit
|
|
|
|
if [ -n "$2" ]; then
|
|
echo "too many arguments"
|
|
exit
|
|
fi
|
|
|
|
diffcheck=$(git status | grep "working tree clean")
|
|
if [ -n "$diffcheck" ]; then
|
|
scheck && runbg aplay ${self}/media/sound/warning.wav
|
|
echo "Nothing to commit"
|
|
exit
|
|
fi
|
|
|
|
alejandra . &> /dev/null
|
|
git add .
|
|
|
|
# Automatic fixup commit to the most recent commit (HEAD~1)
|
|
if [ -z "$1" ]; then
|
|
commits=$(git log origin/$(git rev-parse --abbrev-ref HEAD)..HEAD --oneline)
|
|
if [ -n "$commits" ]; then
|
|
git commit --fixup HEAD
|
|
echo "No commit message given"
|
|
echo "Squashing into most recent commit"
|
|
git rebase --autosquash master
|
|
else
|
|
echo "No prior local commits to squash into, please provide a commit message"
|
|
exit
|
|
fi
|
|
else
|
|
# Generate the system generation number
|
|
gen=$(readlink /nix/var/nix/profiles/system | sed 's/.*system-\([0-9]*\)-link/\1/')
|
|
gen=$((gen + 1))
|
|
git commit -m "(${host}) Gen $gen: $1"
|
|
fi
|
|
|
|
scheck && runbg aplay ${self}/media/sound/gitcommit.wav
|
|
popd || exit
|
|
''
|