40 lines
924 B
Bash
Executable File
40 lines
924 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Unix-style config backup - does one thing well
|
|
set -e
|
|
|
|
backup_config() {
|
|
local backup_dir="${1:-}"
|
|
local timestamp=$(date +%Y%m%d-%H%M%S)
|
|
|
|
# Default backup location
|
|
if [[ -z "$backup_dir" ]]; then
|
|
backup_dir="/etc/nixos.backup.$timestamp"
|
|
fi
|
|
|
|
# Only backup if source exists
|
|
if [[ ! -d /etc/nixos ]]; then
|
|
[[ "${OMNIXY_QUIET:-}" != "1" ]] && echo "No existing configuration to backup"
|
|
exit 0
|
|
fi
|
|
|
|
# Create backup
|
|
sudo cp -r /etc/nixos "$backup_dir"
|
|
|
|
# Output backup location for piping/scripting
|
|
echo "$backup_dir"
|
|
}
|
|
|
|
main() {
|
|
case "${1:-}" in
|
|
--help|-h)
|
|
echo "Usage: omnixy-backup-config [backup-directory]"
|
|
echo "Backs up /etc/nixos to specified directory (or timestamped default)"
|
|
exit 0
|
|
;;
|
|
*)
|
|
backup_config "$1"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
main "$@" |