Add dotfiles integration module (fedora-dots)
New modules/user/dotfiles.sh behind a menu question ('Clone personal
dotfiles?', default no) and --dotfiles=yes|no flag.
Does a --bare clone of yuri/fedora-dots into ~/.cfg.git, checks the repo
out into $HOME with status.showUntrackedFiles=no, and handles an empty
repo gracefully (configures the alias, skips checkout). Existing
~/.cfg.git is left untouched (idempotent).
Fix proven in the harness: the module originally used a plain git clone,
which creates a working copy and breaks the git-dir alias — the same
failure YuKu hit manually; --bare is required.
Dispatch runs the dotfiles module before DE/TWM so configs are in place
when sessions are installed.
This commit is contained in:
@@ -21,6 +21,7 @@ DE=""
|
||||
TWM=""
|
||||
SELINUX_OPT=""
|
||||
SNAPPER_OPT=""
|
||||
DOTFILES_OPT=""
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
@@ -36,6 +37,7 @@ Options:
|
||||
--twm=NAME chadwm | hyprland | mango | niri | none
|
||||
--selinux=X keep | disabled (asked, default keep)
|
||||
--snapper=X yes | no (asked when / is btrfs, default yes)
|
||||
--dotfiles=X yes | no (clone personal dotfiles, default no)
|
||||
-y, --yes never prompt (requires --de and --twm)
|
||||
-d, --debug pause after each section instead of aborting on error
|
||||
-h, --help show this help
|
||||
@@ -59,6 +61,7 @@ for arg in "$@"; do
|
||||
--de=*) DE="${arg#*=}" ;;
|
||||
--selinux=*) SELINUX_OPT="${arg#*=}" ;;
|
||||
--snapper=*) SNAPPER_OPT="${arg#*=}" ;;
|
||||
--dotfiles=*) DOTFILES_OPT="${arg#*=}" ;;
|
||||
--twm=*) TWM="${arg#*=}" ;;
|
||||
-h|--help) usage; exit 0 ;;
|
||||
*)
|
||||
@@ -256,9 +259,23 @@ case "${SELINUX_OPT:-}" in
|
||||
esac
|
||||
case "${SNAPPER_OPT:-}" in
|
||||
yes) BTRFS_SNAPPER=true ;;
|
||||
no|"") : ;;
|
||||
no) BTRFS_SNAPPER=false ;; # explicit flag beats the interactive default
|
||||
""|keep) : ;;
|
||||
*) err "Unknown --snapper value: '$SNAPPER_OPT' (yes|no)"; exit 2 ;;
|
||||
esac
|
||||
|
||||
DOTFILES=false
|
||||
if [[ -z "$DOTFILES_OPT" ]]; then
|
||||
printf "\n"
|
||||
choice=$(ask_yes_no "Clone personal dotfiles (fedora-dots) into \$HOME?" "no")
|
||||
[[ "$choice" == "yes" ]] && DOTFILES=true
|
||||
else
|
||||
case "$DOTFILES_OPT" in
|
||||
yes) DOTFILES=true ;;
|
||||
no) : ;;
|
||||
*) err "Unknown --dotfiles value: '$DOTFILES_OPT' (yes|no)"; exit 2 ;;
|
||||
esac
|
||||
fi
|
||||
pause_if_debug
|
||||
|
||||
#------------------------------------------
|
||||
@@ -361,6 +378,11 @@ if [[ "$BTRFS_SNAPPER" == "true" ]]; then
|
||||
pause_if_debug
|
||||
fi
|
||||
|
||||
if [[ "$DOTFILES" == "true" ]]; then
|
||||
run_module "$SCRIPT_DIR/modules/user/dotfiles.sh"
|
||||
pause_if_debug
|
||||
fi
|
||||
|
||||
if [[ "$DE" != "none" ]]; then
|
||||
run_module "$SCRIPT_DIR/modules/de/${DE}.sh"
|
||||
pause_if_debug
|
||||
@@ -378,7 +400,9 @@ step "7 Summary"
|
||||
rule
|
||||
ok "DE: $DE"
|
||||
ok "TWM: $TWM"
|
||||
ok "SELinux: $([[ "$SELINUX_DISABLED" == "true" ]] && echo disabled || echo keeping)"; ok "Btrfs snapshots: $([[ "$BTRFS_SNAPPER" == "true" ]] && echo yes || echo skipped)"
|
||||
ok "SELinux: $([[ "$SELINUX_DISABLED" == "true" ]] && echo disabled || echo keeping)"
|
||||
ok "Btrfs snapshots: $([[ "$BTRFS_SNAPPER" == "true" ]] && echo yes || echo skipped)"
|
||||
ok "Dotfiles: $([[ "$DOTFILES" == "true" ]] && echo clone || echo no)"
|
||||
DM=$(detect_display_manager)
|
||||
ok "Display manager: ${DM:-none}"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user