diff --git a/media/sound/gitcommit.wav b/media/sound/gitcommit.wav new file mode 100644 index 0000000..c01b7a4 Binary files /dev/null and b/media/sound/gitcommit.wav differ diff --git a/modules/home/scripts/default.nix b/modules/home/scripts/default.nix index fe1b1b8..157c258 100644 --- a/modules/home/scripts/default.nix +++ b/modules/home/scripts/default.nix @@ -25,7 +25,7 @@ let toggle_float = (import ./wm-controls/toggle_float.nix { self = self; pkgs = pkgs;}); toggle_oppacity = (import ./wm-controls/toggle_oppacity.nix { self = self; pkgs = pkgs;}); toggle_waybar = (import ./wm-controls/toggle_waybar.nix { self = self; pkgs = pkgs;}); - nixswitch = (import ./nix/nixswitch.nix { host = host; self = self; pkgs = pkgs;}); + rebuild = (import ./nix/rebuild.nix { host = host; self = self; pkgs = pkgs;}); nixcommit = (import ./nix/nixcommit.nix { host = host; self = self; pkgs = pkgs;}); in { @@ -45,7 +45,7 @@ in nixcommit nixp nixr - nixswitch + rebuild nsp runbg scheck diff --git a/modules/home/scripts/nix/nixcommit.nix b/modules/home/scripts/nix/nixcommit.nix index 05b3398..e861d58 100644 --- a/modules/home/scripts/nix/nixcommit.nix +++ b/modules/home/scripts/nix/nixcommit.nix @@ -7,23 +7,37 @@ pkgs.writeShellScriptBin "nixcommit" ('' scheck && runbg aplay ${self}/media/sound/nixswitch-start.wav builtin cd "$HOME/sysflakes" || exit nix flake update + if [ -n "$2" ]; then echo "too many arguments" exit fi -gen=$(readlink /nix/var/nix/profiles/system | sed 's/.*system-\([0-9]*\)-link/\1/') -gen=$((gen + 1)) - 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 + git add . -git commit -m "(${host}) Gen $gen: $1" -git push -scheck && runbg aplay ${self}/media/sound/gitpush.wav + +# 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 + 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 builtin cd - || exit '') diff --git a/modules/home/scripts/nix/nixpush.nix b/modules/home/scripts/nix/nixpush.nix new file mode 100644 index 0000000..c458a7d --- /dev/null +++ b/modules/home/scripts/nix/nixpush.nix @@ -0,0 +1,24 @@ +{ self, pkgs }: + + +pkgs.writeShellScriptBin "nixpush" ('' +#!/run/current-system/sw/bin/bash + +scheck && runbg aplay ${self}/media/sound/nixswitch-start.wav +set -e +pushd "$HOME/sysflakes" + +commits=$(git log origin/$(git rev-parse --abbrev-ref HEAD)..HEAD --oneline) +if [ -z "$commits" ]; then + scheck && runbg aplay ${self}/media/sound/warning.wav + echo "Nothing to push" + exit +fi + +echo "Pushing the following commits upstream on branch '$(git branch | rg "\*" | awk '{print $2}')'" +echo "$commits" + +git push +scheck && runbg aplay ${self}/media/sound/gitpush.wav +popd + '') diff --git a/modules/home/scripts/nix/nixswitch.nix b/modules/home/scripts/nix/rebuild.nix similarity index 76% rename from modules/home/scripts/nix/nixswitch.nix rename to modules/home/scripts/nix/rebuild.nix index 8905cf7..791beda 100644 --- a/modules/home/scripts/nix/nixswitch.nix +++ b/modules/home/scripts/nix/rebuild.nix @@ -1,18 +1,20 @@ { host, self, pkgs }: -pkgs.writeShellScriptBin "nixswitch" ('' +pkgs.writeShellScriptBin "rebuild" ('' #!/run/current-system/sw/bin/bash scheck && runbg aplay ${self}/media/sound/nixswitch-start.wav -builtin cd "$HOME/sysflakes" || exit +set -e +pushd "$HOME/sysflakes" nix flake update +git diff sudo nixos-rebuild switch --flake "$HOME/sysflakes#${host}" if [ $? -eq 0 ]; then scheck && runbg aplay ${self}/media/sound/update.wav else scheck && runbg aplay ${self}/media/sound/error.wav fi -builtin cd "$OLDPWD" || exit +popd '')