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:
Executable
+45
@@ -0,0 +1,45 @@
|
||||
#!/bin/bash
|
||||
# ABOUTME: Shared helper functions and constants for Moonarch scripts.
|
||||
# ABOUTME: Sourced by post-install.sh, update.sh and transform.sh.
|
||||
|
||||
# Path constants — BASH_SOURCE[1] resolves to the calling script, not lib.sh itself.
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[1]}")" && 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*$'
|
||||
}
|
||||
|
||||
confirm() {
|
||||
read -r -p "$1 [y/N] " response
|
||||
[[ "$response" =~ ^[yY]$ ]]
|
||||
}
|
||||
|
||||
# --- Prerequisite checks ---
|
||||
|
||||
check_not_root() {
|
||||
if [[ $EUID -eq 0 ]]; then
|
||||
err "Do NOT run as root. The script uses sudo where needed."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_pacman() {
|
||||
if ! command -v pacman &>/dev/null; then
|
||||
err "pacman not found — is this really Arch Linux?"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user