From c08d276d949fe609fed01b555a5047df06d6971e Mon Sep 17 00:00:00 2001 From: "Aaron D. Lee" Date: Fri, 26 Dec 2025 19:59:25 -0500 Subject: [PATCH] Dotfiles update 2025-12-26 19:59 --- install.sh | 142 +++++++++++++++++++++++++++++-- setup/setup-wizard.sh | 175 -------------------------------------- zsh/.zshrc | 7 ++ zsh/lib/bootstrap.zsh.zwc | Bin 7560 -> 0 bytes zsh/lib/colors.zsh.zwc | Bin 5864 -> 0 bytes zsh/lib/config.zsh.zwc | Bin 11328 -> 0 bytes zsh/lib/machines.zsh.zwc | Bin 15352 -> 0 bytes zsh/lib/plugins.zsh.zwc | Bin 17552 -> 0 bytes zsh/lib/utils.zsh.zwc | Bin 16040 -> 0 bytes 9 files changed, 144 insertions(+), 180 deletions(-) delete mode 100755 setup/setup-wizard.sh delete mode 100644 zsh/lib/bootstrap.zsh.zwc delete mode 100644 zsh/lib/colors.zsh.zwc delete mode 100644 zsh/lib/config.zsh.zwc delete mode 100644 zsh/lib/machines.zsh.zwc delete mode 100644 zsh/lib/plugins.zsh.zwc delete mode 100644 zsh/lib/utils.zsh.zwc diff --git a/install.sh b/install.sh index 712b86f..eb4aba8 100755 --- a/install.sh +++ b/install.sh @@ -133,19 +133,19 @@ print_header() { local hostname="${HOSTNAME:-$(hostname -s 2>/dev/null)}" local script_name="install.sh" local datetime=$(date '+%a %b %d %H:%M') - + # Colors local _M_RESET=$'\033[0m' local _M_BOLD=$'\033[1m' local _M_DIM=$'\033[2m' local _M_BLUE=$'\033[38;5;39m' local _M_GREY=$'\033[38;5;242m' - + # Build horizontal line local hline="" for ((i=0; i<_M_WIDTH; i++)); do hline+="═"; done local inner=$((_M_WIDTH - 2)) - + # Header content local h_left="✦ ${user}@${hostname}" local h_center="${script_name}" @@ -153,7 +153,7 @@ print_header() { local h_pad=$(((inner - ${#h_left} - ${#h_center} - ${#h_right}) / 2)) local h_spaces="" for ((i=0; i/dev/null && HAS_GUM=true - -wizard_confirm() { - local prompt="$1" - local default="${2:-yes}" - - if [[ "$HAS_GUM" == true ]]; then - if [[ "$default" == "yes" ]]; then - gum confirm --default=yes "$prompt" - else - gum confirm --default=no "$prompt" - fi - else - local yn_prompt="[Y/n]" - [[ "$default" == "no" ]] && yn_prompt="[y/N]" - read -p "$prompt $yn_prompt: " response - response=${response:-${default:0:1}} - [[ "$response" =~ ^[Yy] ]] - fi -} - -wizard_input() { - local prompt="$1" - local default="$2" - - if [[ "$HAS_GUM" == true ]]; then - gum input --placeholder "$default" --value "$default" --prompt "$prompt: " - else - read -p "$prompt [$default]: " response - echo "${response:-$default}" - fi -} - -wizard_choose() { - local prompt="$1" - shift - local options=("$@") - - if [[ "$HAS_GUM" == true ]]; then - printf '%s\n' "${options[@]}" | gum choose --header "$prompt" - else - echo "$prompt" - local i=1 - for opt in "${options[@]}"; do - echo " $i) $opt" - ((i++)) - done - read -p "Choice [1]: " choice - choice=${choice:-1} - echo "${options[$((choice-1))]}" - fi -} - -# ============================================================================ -# Wizard Steps -# ============================================================================ - -step_welcome() { - clear - df_print_header "setup-wizard" - - echo -e "${DF_BOLD}Welcome to Dotfiles Setup Wizard${DF_NC}" - echo -e "${DF_DIM}Version: $DOTFILES_VERSION | Display Width: $DF_WIDTH${DF_NC}" - echo "" - - wizard_confirm "Ready to begin?" || { - echo "Setup cancelled." - exit 0 - } -} - -step_user_info() { - echo "" - echo -e "${DF_BLUE}▶${DF_NC} Personal Information" - echo "" - - USER_FULLNAME=$(wizard_input "Full Name" "${USER_FULLNAME:-}") - USER_EMAIL=$(wizard_input "Email" "${USER_EMAIL:-}") - USER_GITHUB=$(wizard_input "GitHub Username" "${USER_GITHUB:-}") -} - -step_features() { - echo "" - echo -e "${DF_BLUE}▶${DF_NC} Feature Selection" - echo "" - - MOTD_STYLE=$(wizard_choose "MOTD Style:" "compact" "mini" "full" "none") - - wizard_confirm "Enable smart suggestions (typo correction)?" && ENABLE_SMART_SUGGESTIONS="true" || ENABLE_SMART_SUGGESTIONS="false" - wizard_confirm "Enable command palette (Ctrl+Space)?" && ENABLE_COMMAND_PALETTE="true" || ENABLE_COMMAND_PALETTE="false" -} - -step_summary() { - echo "" - echo -e "${DF_GREEN}✓${DF_NC} Configuration Summary" - echo "" - echo " Name: $USER_FULLNAME" - echo " Email: $USER_EMAIL" - echo " GitHub: $USER_GITHUB" - echo " MOTD Style: $MOTD_STYLE" - echo " Smart Suggestions: $ENABLE_SMART_SUGGESTIONS" - echo " Command Palette: $ENABLE_COMMAND_PALETTE" - echo "" - - if wizard_confirm "Save this configuration?"; then - save_config - df_print_success "Configuration saved!" - else - echo "Configuration not saved." - fi -} - -save_config() { - local config_file="$DOTFILES_HOME/dotfiles.conf" - - # Update values in config file - if [[ -f "$config_file" ]]; then - sed -i "s/^USER_FULLNAME=.*/USER_FULLNAME=\"$USER_FULLNAME\"/" "$config_file" - sed -i "s/^USER_EMAIL=.*/USER_EMAIL=\"$USER_EMAIL\"/" "$config_file" - sed -i "s/^USER_GITHUB=.*/USER_GITHUB=\"$USER_GITHUB\"/" "$config_file" - sed -i "s/^MOTD_STYLE=.*/MOTD_STYLE=\"$MOTD_STYLE\"/" "$config_file" - sed -i "s/^ENABLE_SMART_SUGGESTIONS=.*/ENABLE_SMART_SUGGESTIONS=\"$ENABLE_SMART_SUGGESTIONS\"/" "$config_file" - sed -i "s/^ENABLE_COMMAND_PALETTE=.*/ENABLE_COMMAND_PALETTE=\"$ENABLE_COMMAND_PALETTE\"/" "$config_file" - fi -} - -step_next() { - echo "" - df_print_success "Setup Complete!" - echo "" - echo -e "${DF_DIM}Next steps:${DF_NC}" - echo " 1. Reload your shell: source ~/.zshrc" - echo " 2. Run health check: dfd" - echo " 3. Explore commands: dotfiles-cli help" - echo "" -} - -# ============================================================================ -# Main -# ============================================================================ - -main() { - step_welcome - step_user_info - step_features - step_summary - step_next -} - -# Only run if executed directly (not sourced) -[[ "${BASH_SOURCE[0]}" == "${0}" ]] && main "$@" diff --git a/zsh/.zshrc b/zsh/.zshrc index d77513d..18d6343 100644 --- a/zsh/.zshrc +++ b/zsh/.zshrc @@ -278,6 +278,13 @@ _deferred_load() { # Setup FZF _has_cmd fzf && _setup_fzf + # ----------------------------------------------------------------------- + # Load machine-specific configuration + # This must be loaded early so machine configs can override other settings + # ----------------------------------------------------------------------- + local machines_lib="$_dotfiles_dir/zsh/lib/machines.zsh" + [[ -f "$machines_lib" ]] && source "$machines_lib" + # ----------------------------------------------------------------------- # Load all function files from functions directory # Excludes command-palette.zsh (already loaded) and motd.zsh (loaded separately) diff --git a/zsh/lib/bootstrap.zsh.zwc b/zsh/lib/bootstrap.zsh.zwc deleted file mode 100644 index 9f3348859b12de8552eb64303cdac5f6f2f81897..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7560 zcmeI0Pi#|19>>RiaRMZSB!oYuP^GBQ9_lzDDQyF+V(b7>1EwLnZMLjj<2c0H#16Kz z3nf$(vl4Al38{En{DLv6-u=-Ezm;~*{M`0F_}t* zI>)kw@$_UWA9^c45t>XN3mwa53;9AWG2ID8Z3%wlAQj1SOd&zGR%Ux{2l_K~ZOLue+BFut2O41HM~*jtZI@#!Sk z1$sSmBU9qR==v6(G#yt5b;FMn6GP%l@?0_UE|taS8!?^C6<#J8ssUkp1E-@AelU9u*L$HW(4(Vuv+;!g=) zt-72Aca?7ZwpdKHaJRwyLj#-25HOCGohFbgi6#UWVBza=m$*&C+r5f5B1m{$cS>!_E# z%%OLgHEq^)!m0Ziql>y1!I-*hy2##y&VINIubZyzZnJ6U;rr+#?5*RB57BkE*HY~~ zOABxJsXsEl!X6gfEcEZ#=iS0|n)Xl5F`l1wXoAI6eNG1%H3t7m%*DS6`h$mcWx5>H zhJHry&N_~`=z^D~b)7^PHe2y`QF1PLViKB(=|1)(rn8I^)5na`!f)H}wa?MbpK9kU zcpcRo73F5^OHAUIG?t}q+WvW;iXd<~L@wyYzR-;Q-Rx(ve+T_y|3^k?;aR2LVl?*0 zzV8@1%gMFjqJC(bL3kLbb|{wlt3wtQ1d7tV>U zTJlma6U!3va=tsu2ab~)FL`RgUs?VrXVW(1DQmfzTGX@;%HM%+PuqL#Ci3og&3&HV zBW|q&oV8V{Pm$@Tm`CYz^e^d6>}k{HFUF($;(KGUks~9+;luHvSU5TmomaV3VJ4SR z@v-svcser{&++M_CbP-Jr2Z|Wvzfe_zj!Gc8`(EFG;kyy9UPvUUq(3)J2;?8GO2t` zX^?2rI^O92gT_D*21Cevc6BDRnelm*N={^rJM$NRf8;>?cLT#m24jcjRX&+ZPZ#22 z>6{qu>I?TxXk`_;=&U?dt9J9MwN<1XrPWasPEDusse+RH4U<1CU09Z`_vV#5JMazE z#SpD7PWe+)Vox8J?@S!a&g7D*UqY2_Iq3mksg6VI3wC#Qb#{>?oPKREI&wgxoOxex z=T2A$Vr6yaFI}lZWxq7s#r{|5XT|M1XSH=1L!vh0{T;v@#d30cCDE6A6ckk-yvFUq< zemh{ODCxDSkGFnJJ_vo!pJ3l9P#CO0h|&bLmVWK9Nd{rE)4XmikjD zGc!5)2*=*RnZ%SVr%T;^L3^1~CcVw(_w3ozaq*Jy=Q^0rt4B z3g04bSE%d{j>XD@-t6VA zWA725@0H^J}&j`j`V|{#)=w}Ae^$fDr*I3^IG``04=ZxzbdjYJUS6$2V@O;*j zr;o|VA94B7wS6nke0@*vuzmBTc$+bAx&nrI6aM<%v2T$6BJ&&Ir6DUZ_?;Mhw{5)W z6uR7EB{ts@{hXH2GI!wB;m;=W_{1V#N#G@?k{3U3YSFt{Fxaa8{PXvNnX>(!0~5f; ziVu|P6dk;oNtd^{Ur_yITJ^j?utX(lQ%s6 zT6{TL3(V^)GW8{wu5X!3LuUs*Hw$k+@hvH9_g&^bI(p=W7YJ5xYb*~O_5#;jIPtrd zzIzp%;&)U1Avj*a#c6+3Mn{xm$NRKt`D=iyJo*Y=m3 z$wONanHqkt7y@_7_DS;9R`S3R-%8dn`h4GmTMKTFJHD75-%9p^iLc!P@5Hx?oWJOb zuieAWsz; zJ&wJH%IamWu4(6)9lITQxyIJLB2Un{@>t(7M^Cwdk#p>quCa1fx~{Qx59RDaR_H#9 zIezQwtt%cMF*|e{&!fnkL}qgde_P4{kq`l{@IDDqrm{f&%1&JEU6oxH26l*uW@@DTo zExvJ9wclL+u4!it_};VgDSK_J1@2Qy*-yvTI?kSTU-F;YCg{37zQa1V;Kz5^1CQ^p U`g;8M4*U2HTfQLwKku;r1@9KBSpWb4 diff --git a/zsh/lib/colors.zsh.zwc b/zsh/lib/colors.zsh.zwc deleted file mode 100644 index b9689d42b8f96930d198e9f39c59c3a59160f454..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5864 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 X%J_@*Vf)Xwi}m57D5w7a)rbEF(teQ~ diff --git a/zsh/lib/machines.zsh.zwc b/zsh/lib/machines.zsh.zwc deleted file mode 100644 index 1bf4ac583b642b6dcaa09419246126649a872e85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15352 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 BSbP8g diff --git a/zsh/lib/plugins.zsh.zwc b/zsh/lib/plugins.zsh.zwc deleted file mode 100644 index 5e59f1dec31a0ae83df9b4a86e67541a63233cb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17552 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 diff --git a/zsh/lib/utils.zsh.zwc b/zsh/lib/utils.zsh.zwc deleted file mode 100644 index 7054044f789c50c0294daf42b4e46826de2a4830..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16040 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