#!/usr/bin/env bash set -euo pipefail #echo "searching generations" # your hostname (flake target) hostname="$(hostname)" #old_gen=$(nixos-rebuild list-generations | grep current | awk '{print $1}') #gen=$((old_gen + 1)) #echo "gen $old_gen --> gen $gen" timestamp=$(date '+%Y-%m-%d %H:%M:%S') nix_dir="$HOME/.nix" logfile="$nix_dir/.nixos-switch-log" pushd "$nix_dir" >/dev/null # function to get current nixos generation #get_current_generation() { # nixos-rebuild list-generations #} echo "diffs:" git diff echo "" echo "files:" git status --short read -rp "commit message: " commit_msg echo "rebuilding nixos with flake.nix..." #if ! sudo nixos-rebuild switch --flake .#"$hostname" 2>&1 | tee "$logfile"; then #if ! nh os switch 2>&1 | tee "$logfile"; then if ! sudo nixos-rebuild switch --flake .#"$hostname" 2>&1 | tee "$logfile"; then echo "rebuild failed; exited with no commit" exit 1 fi #if sed -n '3p' flake.nix | grep -q '^# generation:'; then # # replace the comment on line 3 # sed -i "3s|^# generation:.*|# generation: $gen, timestamp: $timestamp|" flake.nix #else # # insert comment on line 3 # sed -i "3i# generation: $gen, timestamp: $timestamp" flake.nix #fi echo "committing..." git add $nix_dir git commit -m "$commit_msg" echo "flake rebuild and commit fin"