Marty Oehme
71f9076846
Removed the `autostow.sh` scipt. Its use was to call stow for every folder in base directory and ignore certain folders. Both those functions can be handled by stow on its own. Stow allows defining per-directory ignore patterns with `.stow-loca-ignore` files, which can be set to `.*` to completely ignore a folder, just as before. And Stow can be called with a glob pattern to automatically call it for every directory in the repository. `.stowrc` additionally makes sure that all operations take place targeting the home directory of the current user, since that is where the dotfiles will (generally) be stored. Of course, this can be overridden with the stow command-line options (see option precedence in stow manual). Finally, the bootstrap stow module adds an alias `dotlink` to the shell, which allows fast (re-)stowing of all directories in the dotfile repository. It uses a hard-coded location for the .dotfiles base directory, so if the dotfiles are cloned anywhere else this has to be customized.
69 lines
1.6 KiB
Bash
Executable file
69 lines
1.6 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# install.sh
|
|
#
|
|
# Installs dotfiles and packages for my setup
|
|
#
|
|
# Will first install yay, then all my used packages (read from bootstrap/packages.csv)
|
|
#
|
|
# Finally, symlinks all dotfiles into their correct locations using stow
|
|
|
|
bootstrap_dir="${BOOTSTRAP_DIRECTORY:-./_bootstrap}"
|
|
|
|
main() {
|
|
local cmd=""
|
|
local ret=0
|
|
|
|
case "$1" in
|
|
-v | --version)
|
|
printf "Personal system bootstrap script.\n\n©Marty Oehme\n\nVersion: 0.1.1\n"
|
|
;;
|
|
-h | --help)
|
|
printf "Usage: install [-f|--force][-v|--version][-h|--help]\n\n-f Do not ask for any confirmations but force update and installation.\n"
|
|
;;
|
|
-f | --force)
|
|
install true
|
|
;;
|
|
*)
|
|
install false
|
|
;;
|
|
esac
|
|
shift
|
|
|
|
$cmd "$@"
|
|
ret=$((ret + $?))
|
|
exit $ret
|
|
}
|
|
|
|
check_consent() {
|
|
echo "This will take a while, install many packages and link dotfiles all over the place. Proceed [y/N]?"
|
|
read -r yes
|
|
if [[ "$yes" != y* ]]; then
|
|
echo "Exiting."
|
|
exit
|
|
fi
|
|
}
|
|
|
|
install() {
|
|
unattended=$1
|
|
if ! "$unattended"; then
|
|
check_consent
|
|
fi
|
|
echo "====================== BEGINNING INSTALLATION ============================="
|
|
if ! "$unattended"; then
|
|
export BOOTSTRAP_PACKAGES="bootstrap/packages.csv"
|
|
"$bootstrap_dir"/install_packages.sh
|
|
else
|
|
export BOOTSTRAP_PACKAGES="bootstrap/packages.csv"
|
|
"$bootstrap_dir"/install_packages.sh -f
|
|
fi
|
|
unset BOOTSTRAP_PACKAGES
|
|
|
|
echo "=================== BEGINNING DOTFILE MANAGEMENT =========================="
|
|
stow -R ./*/
|
|
|
|
echo "====================== INSTALLATION FINISHED =============================="
|
|
|
|
}
|
|
|
|
main "$@"
|