Add transform script for existing Arch+Wayland systems

Extract shared helpers into lib.sh (log, err, confirm, path constants)
and refactor post-install.sh + update.sh to source it.

New transform.sh converts an existing Arch+Wayland system to Moonarch:
pre-flight summary, config backup, DM conflict resolution, PulseAudio
removal, full package install, and hard overwrite of all configs.

Also migrate kanshi from niri spawn-at-startup to systemd user service.
This commit is contained in:
2026-03-29 15:03:44 +02:00
parent 24d70db2cf
commit 9d26f04af6
7 changed files with 489 additions and 62 deletions
+19 -28
View File
@@ -4,37 +4,12 @@
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
OFFICIAL_PACKAGES="$PROJECT_DIR/packages/official.txt"
AUR_PACKAGES="$PROJECT_DIR/packages/aur.txt"
DEFAULTS_DIR="$PROJECT_DIR/defaults"
# --- Helper functions ---
log() {
echo -e "\e[1;34m[Moonarch]\e[0m $*"
}
err() {
echo -e "\e[1;31m[Moonarch ERROR]\e[0m $*" >&2
}
read_packages() {
grep -v '^\s*#' "$1" | grep -v '^\s*$'
}
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/lib.sh"
# --- Prerequisites ---
if [[ $EUID -eq 0 ]]; then
err "Do NOT run as root. The script uses sudo where needed."
exit 1
fi
if ! command -v pacman &>/dev/null; then
err "pacman not found — is this really Arch Linux?"
exit 1
fi
check_not_root
check_pacman
# --- Install official packages ---
@@ -251,6 +226,22 @@ if [[ -d "$USER_DEFAULTS_DIR" ]]; then
done
fi
# --- Enable systemd user services ---
log "Enabling systemd user services..."
USER_SERVICES=(
"kanshi"
)
for service in "${USER_SERVICES[@]}"; do
if systemctl --user list-unit-files "${service}.service" &>/dev/null; then
systemctl --user enable "$service"
log " + $service (user)"
else
log " ~ $service (user) not found, skipped."
fi
done
# --- Screenshots directory ---
mkdir -p "$HOME/Pictures/Screenshots"