75 lines
1.7 KiB
Bash
Executable File
75 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
PKGLIST="pkglist.txt"
|
|
SYSTEMD_SYSTEM="systemd_enabled.txt"
|
|
SYSTEMD_USER="systemd_user_enabled.txt"
|
|
|
|
show_help() {
|
|
echo "Usage: $0 [OPTION]"
|
|
echo ""
|
|
echo "Options:"
|
|
echo " -b, --backup Create backup files of packages and systemd units"
|
|
echo " -r, --restore Restore packages and systemd units from backup files"
|
|
echo " -h, --help Show this help message"
|
|
}
|
|
|
|
backup() {
|
|
echo "Creating package list..."
|
|
paru -Qqe > "$PKGLIST"
|
|
echo "Created $PKGLIST"
|
|
|
|
echo "Creating system unit list..."
|
|
systemctl list-unit-files --state=enabled --no-pager | awk '{print $1}' > "$SYSTEMD_SYSTEM"
|
|
echo "Created $SYSTEMD_SYSTEM"
|
|
|
|
echo "Creating user unit list..."
|
|
systemctl --user list-unit-files --state=enabled --no-pager | awk '{print $1}' > "$SYSTEMD_USER"
|
|
echo "Created $SYSTEMD_USER"
|
|
|
|
echo "Backup complete."
|
|
}
|
|
|
|
restore() {
|
|
if [[ ! -f "$PKGLIST" ]]; then
|
|
echo "Error: $PKGLIST not found"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Installing packages..."
|
|
paru -S --needed - < "$PKGLIST"
|
|
|
|
if [[ -f "$SYSTEMD_SYSTEM" ]]; then
|
|
echo "Enabling system units..."
|
|
while read unit; do
|
|
sudo systemctl enable "$unit" 2>/dev/null || echo "Skipping $unit"
|
|
done < "$SYSTEMD_SYSTEM"
|
|
fi
|
|
|
|
if [[ -f "$SYSTEMD_USER" ]]; then
|
|
echo "Enabling user units..."
|
|
while read unit; do
|
|
systemctl --user enable "$unit" 2>/dev/null || echo "Skipping $unit"
|
|
done < "$SYSTEMD_USER"
|
|
fi
|
|
|
|
echo "Restore complete."
|
|
}
|
|
|
|
case "$1" in
|
|
-b|--backup)
|
|
backup
|
|
;;
|
|
-r|--restore)
|
|
restore
|
|
;;
|
|
-h|--help)
|
|
show_help
|
|
;;
|
|
*)
|
|
show_help
|
|
exit 1
|
|
;;
|
|
esac
|