#!/bin/bash set -o pipefail M4_DEF_FILE="system.m4" if [ -f "${M4_DEF_FILE}" ]; then dialog \ --backtitle "Dotfile configuration" \ --title "Overwrite settings?" \ --defaultno \ --yesno "A system.m4 file already exists, do you want to make that file over again? If you press No, the Makefile will be processed again based on the current system.m4 file." 0 0 if [ "$?" -eq 1 ]; then m4 -P Makefile.m4 > Makefile exit 0 fi fi HOME_DIRECTORY=$(dialog \ --backtitle "Dotfile configuration" \ --title "Configure" \ --inputbox "Home directory" \ 0 0 "${HOME}" \ 3>&1 1>&2 2>&3 3>&-) DEFAULT_SHELL=$(dialog \ --backtitle "Dotfile configuration" \ --title "Configure" \ --inputbox "Default shell" \ 0 0 "${SHELL}" \ 3>&1 1>&2 2>&3 3>&-) DEFAULT_EDITOR=$(dialog \ --backtitle "Dotfile configuration" \ --title "Configure" \ --inputbox "Default editor" \ 0 0 "nvim" \ 3>&1 1>&2 2>&3 3>&-) SYSID=$(dialog \ --backtitle "Dotfile configuration" \ --title "Configure" \ --inputbox "System id (magical number)" \ 0 0 "1" \ 3>&1 1>&2 2>&3 3>&-) SYSTEM_TYPE=$(dialog \ --backtitle "Dotfile configuration" \ --title "Configure" \ --radiolist "System type" \ 0 0 0 \ 0 "Local" on \ 1 "Remote" off \ 3>&1 1>&2 2>&3 3>&-) DISTRO=$(dialog \ --backtitle "Dotfile configuration" \ --title "Configure" \ --radiolist "Distro" \ 0 0 0 \ 0 "Debian" on \ 1 "Fedora" off \ 3>&1 1>&2 2>&3 3>&-) GIT_VALUES=$(dialog \ --backtitle "Dotfile configuration" \ --title "Configure" \ --form "Git settings" \ 0 50 0 \ "Username:" 1 1 "$GIT_AUTHOR_NAME" 1 10 255 0 \ "Email:" 2 1 "$GIT_AUTHOR_EMAIL" 2 10 255 0 \ 3>&1 1>&2 2>&3 3>&-) GIT_VALUES=($GIT_VALUES) FEATURES="$(dialog --stdout \ --backtitle "Dotfile configuration" \ --title "Configure" \ --checklist "Change dotfile features:" 0 0 0 \ 1 "General tools (highligt, mediainfo, git, ripgrep...)" on \ 2 "Other dotfile symlinks (Not for specific features below)" on \ 3 "neovim" on \ 4 "ZSH and Oh-My-Zsh" off \ 5 "tlp" off \ 6 "autorandr" off \ 7 "greetd and tuigreet" off \ 8 "Powerline and P10K" off \ 9 "Sway" off \ 10 "QTile" off \ 11 "Bash" on \ 12 "home folder bin dir" off \ 13 "tmux" on)" # Write all to file echo "m4_define(\`DOTFILES_DIR', \`$(pwd)')m4_dnl" > ${M4_DEF_FILE} echo "m4_define(\`HOME_DIRECTORY', \`${HOME_DIRECTORY}')m4_dnl" >> ${M4_DEF_FILE} echo "m4_define(\`DEFAULT_SHELL', \`${DEFAULT_SHELL}')m4_dnl" >> ${M4_DEF_FILE} echo "m4_define(\`DEFAULT_EDITOR', \`${DEFAULT_EDITOR}')m4_dnl" >> ${M4_DEF_FILE} echo "m4_define(\`SYSID', \`${SYSID}')m4_dnl" >> ${M4_DEF_FILE} case $SYSTEM_TYPE in 0) echo "m4_define(\`DOTFILES_TYPE', \`local')m4_dnl" >> ${M4_DEF_FILE} ;; 1) echo "m4_define(\`DOTFILES_TYPE', \`remote')m4_dnl" >> ${M4_DEF_FILE} ;; esac case $DISTRO in 0) echo "m4_define(\`DISTRO', \`debian')m4_dnl" >> ${M4_DEF_FILE} ;; 1) echo "m4_define(\`DISTRO', \`fedora')m4_dnl" >> ${M4_DEF_FILE} ;; esac echo "m4_define(\`GIT_USER', \`${GIT_VALUES[0]}')m4_dnl" >> ${M4_DEF_FILE} echo "m4_define(\`GIT_EMAIL', \`${GIT_VALUES[1]}')m4_dnl" >> ${M4_DEF_FILE} for choice in ${FEATURES}; do case $choice in 1) echo "m4_define(\`DT_TOOLS', \`1')m4_dnl" >> ${M4_DEF_FILE} ;; 2) echo "m4_define(\`DT_OTHER_SYMLINKS', \`1')m4_dnl" >> ${M4_DEF_FILE} ;; 3) echo "m4_define(\`DT_NEOVIM', \`1')m4_dnl" >> ${M4_DEF_FILE} ;; 4) echo "m4_define(\`DT_ZSH', \`1')m4_dnl" >> ${M4_DEF_FILE} ;; 5) echo "m4_define(\`DT_TLP', \`1')m4_dnl" >> ${M4_DEF_FILE} ;; 6) echo "m4_define(\`DT_AUTORANDR', \`1')m4_dnl" >> ${M4_DEF_FILE} ;; 7) echo "m4_define(\`DT_GREETD_TUIGREET', \`1')m4_dnl" >> ${M4_DEF_FILE} ;; 8) echo "m4_define(\`DT_POWERLINE_P10K', \`1')m4_dnl" >> ${M4_DEF_FILE} ;; 9) echo "m4_define(\`DT_SWAY', \`1')m4_dnl" >> ${M4_DEF_FILE} ;; 10) echo "m4_define(\`DT_QTILE', \`1')m4_dnl" >> ${M4_DEF_FILE} ;; 11) echo "m4_define(\`DT_BASH', \`1')m4_dnl" >> ${M4_DEF_FILE} ;; 12) echo "m4_define(\`DT_HOMEBIN', \`1')m4_dnl" >> ${M4_DEF_FILE} ;; 13) echo "m4_define(\`DT_TMUX', \`1')m4_dnl" >> ${M4_DEF_FILE} ;; esac done m4 -P Makefile.m4 > Makefile