develop #28

Merged
sid merged 6 commits from develop into release-25.11 2026-05-02 20:42:50 +02:00
3 changed files with 55 additions and 35 deletions
Showing only changes of commit bd5d09aaa6 - Show all commits

View file

@ -7,6 +7,8 @@
hostname, hostname,
nix, nix,
nixos-rebuild-ng, nixos-rebuild-ng,
nix-output-monitor,
dix,
... ...
}: }:
@ -26,5 +28,7 @@ writeShellApplication {
hostname hostname
nix nix
nixos-rebuild-ng nixos-rebuild-ng
nix-output-monitor
dix
]; ];
} }

View file

@ -11,6 +11,11 @@ UPDATE_INPUTS="" # Default list of inputs to update. Empty means
ROLLBACK=0 # Default to not rollback ROLLBACK=0 # Default to not rollback
SHOW_TRACE=0 # Default to not show detailed error messages SHOW_TRACE=0 # Default to not show detailed error messages
# Output functions
_status() { echo -e "\033[0;34m> $1\033[0m"; }
success() { echo -e "\033[0;32m$1\033[0m"; }
error() { echo -e "\033[0;31mError: $1\033[0m" >&2; exit 1; }
# Function to display the help message # Function to display the help message
Help() { Help() {
echo "Wrapper script for 'nixos-rebuild switch' and 'home-manager switch' commands." echo "Wrapper script for 'nixos-rebuild switch' and 'home-manager switch' commands."
@ -37,12 +42,6 @@ Help() {
echo " -u, --user <user> Specify the username (as in 'homeConfigurations.<user>@<host>'). Default: $HOME_USER" echo " -u, --user <user> Specify the username (as in 'homeConfigurations.<user>@<host>'). Default: $HOME_USER"
} }
# Function to handle errors
error() {
echo "Error: $1"
exit 1
}
# Function to rebuild NixOS configuration # Function to rebuild NixOS configuration
Rebuild_nixos() { Rebuild_nixos() {
local FLAKE="$FLAKE_PATH#$NIXOS_HOST" local FLAKE="$FLAKE_PATH#$NIXOS_HOST"
@ -56,20 +55,31 @@ Rebuild_nixos() {
[ -n "$BUILD_HOST" ] && CMD+=("--build-host" "$BUILD_HOST") [ -n "$BUILD_HOST" ] && CMD+=("--build-host" "$BUILD_HOST")
if [ "$NIXOS_HOST" != "$(hostname)" ] && [ -z "$TARGET_HOST" ]; then if [ "$NIXOS_HOST" != "$(hostname)" ] && [ -z "$TARGET_HOST" ]; then
TARGET_HOST="$NIXOS_HOST" TARGET_HOST="$NIXOS_HOST"
echo "Using '$TARGET_HOST' as target host." _status "Using '$TARGET_HOST' as target host."
fi fi
[ -n "$TARGET_HOST" ] && CMD+=("--target-host" "$TARGET_HOST") [ -n "$TARGET_HOST" ] && CMD+=("--target-host" "$TARGET_HOST")
# Rebuild NixOS configuration # Build config first so we can diff it
local BUILD_CMD=("nixos-rebuild" "build" "--flake" "$FLAKE")
[ "$SHOW_TRACE" = 1 ] && BUILD_CMD+=("--show-trace")
[ -n "$BUILD_HOST" ] && BUILD_CMD+=("--build-host" "$BUILD_HOST")
if [ "$ROLLBACK" = 0 ]; then if [ "$ROLLBACK" = 0 ]; then
echo "Rebuilding NixOS configuration '$FLAKE'..." _status "Building NixOS configuration '$FLAKE'..."
_status "Executing command: ${BUILD_CMD[*]}"
"${BUILD_CMD[@]}" |&nom || error "NixOS build failed"
_status "Package diff:"
dix /run/current-system result
rm result
else else
echo "Rolling back to last NixOS generation..." _status "Rolling back to last NixOS generation..."
fi fi
echo "Executing command: ${CMD[*]}" _status "Switching to new NixOS configuration"
"${CMD[@]}" || error "NixOS rebuild failed" sudo -v
echo "NixOS rebuild completed successfully." _status "Executing command: ${CMD[*]}"
"${CMD[@]}" |& nom || error "NixOS rebuild failed"
success "NixOS rebuild completed successfully."
} }
# Function to rebuild Home Manager configuration # Function to rebuild Home Manager configuration
@ -91,21 +101,29 @@ Rebuild_home() {
[ "$SHOW_TRACE" = 1 ] && CMD+=("--show-trace") [ "$SHOW_TRACE" = 1 ] && CMD+=("--show-trace")
fi fi
# Rebuild Home Manager configuration # Build config first so we can diff it
if [ "$ROLLBACK" = 0 ]; then if [ "$ROLLBACK" = 0 ]; then
echo "Rebuilding Home Manager configuration '$FLAKE'..." local BUILD_CMD=("home-manager" "build" "--flake" "$FLAKE")
[ "$SHOW_TRACE" = 1 ] && BUILD_CMD+=("--show-trace")
_status "Building Home Manager configuration '$FLAKE'..."
_status "Executing command: ${BUILD_CMD[*]}"
"${BUILD_CMD[@]}" |& nom || error "Home Manager build failed"
_status "Package diff:"
dix /run/current-system result
rm result
else else
echo "Rolling back to last Home Manager generation..." _status "Rolling back to last Home Manager generation..."
fi fi
echo "Executing command: ${CMD[*]}" _status "Switching to new Home Manager configuration"
"${CMD[@]}" || error "Home Manager rebuild failed" _status "Executing command: ${CMD[*]}"
echo "Home Manager rebuild completed successfully." "${CMD[@]}" |& nom || error "Home Manager rebuild failed"
success "Home Manager rebuild completed successfully."
} }
# Function to Update flake repositories # Function to update flake repositories
Update() { Update() {
echo "Updating flake inputs..." _status "Updating flake inputs..."
# Construct update command as an array # Construct update command as an array
local CMD=("nix" "flake" "update" "--flake" "$FLAKE_PATH") local CMD=("nix" "flake" "update" "--flake" "$FLAKE_PATH")
@ -117,17 +135,18 @@ Update() {
done done
fi fi
echo "Executing command: ${CMD[*]}" _status "Executing command: ${CMD[*]}"
"${CMD[@]}" || error "Failed to update flake repositories" "${CMD[@]}" || error "Failed to update flake repositories"
echo "Flake repositories updated successfully." success "Flake repositories updated successfully."
} }
# Parse command-line options # Parse command-line options
if [[ -z "${1:-}" ]]; then if [[ -z "${1:-}" ]]; then
echo "Error: No command specified. Printing help page." echo -e "\033[0;31mError: No command specified. Printing help page.\033[0m" >&2
Help Help
exit 1 exit 1
fi fi
COMMAND=$1 COMMAND=$1
shift shift
@ -198,9 +217,7 @@ while [ $# -gt 0 ]; do
fi fi
;; ;;
*) *)
echo "Error: Unknown option '$1'" error "Unknown option '$1'"
Help
exit 1
;; ;;
esac esac
done done
@ -227,10 +244,10 @@ fi
[ "$UPDATE" = 1 ] && Update [ "$UPDATE" = 1 ] && Update
case "$COMMAND" in case "$COMMAND" in
nixos) nixos|os)
Rebuild_nixos Rebuild_nixos
;; ;;
home) home|hm)
Rebuild_home Rebuild_home
;; ;;
all) all)
@ -238,9 +255,6 @@ case "$COMMAND" in
Rebuild_home Rebuild_home
;; ;;
*) *)
echo "Error: Unknown command '$COMMAND'" error "Unknown command '$COMMAND'"
echo "Printing help page:"
Help
exit 1
;; ;;
esac esac

View file

@ -32,6 +32,8 @@ in
}; };
}; };
nix.settings.warn-dirty = mkDefault false;
# fallback quickly if substituters are not available. # fallback quickly if substituters are not available.
nix.settings.connect-timeout = mkDefault 5; nix.settings.connect-timeout = mkDefault 5;
nix.settings.fallback = true; nix.settings.fallback = true;