various bugfixes
This commit is contained in:
parent
61c444f807
commit
afdf2c4adc
|
@ -1 +1,2 @@
|
||||||
bootstrapper.log
|
bootstrapper.log
|
||||||
|
bootstrap.log
|
||||||
|
|
4
TODO.md
4
TODO.md
|
@ -9,3 +9,7 @@
|
||||||
- [ ] `xbps-alternatives pinentry -s pinentry-gnome`
|
- [ ] `xbps-alternatives pinentry -s pinentry-gnome`
|
||||||
- [ ] `xdg-mime default firefox.desktop x-scheme-handler/http x-scheme-handler/https text/html`
|
- [ ] `xdg-mime default firefox.desktop x-scheme-handler/http x-scheme-handler/https text/html`
|
||||||
- [ ] `env -u BROWSER xdg-settings set default-web-browser firefox.desktop`
|
- [ ] `env -u BROWSER xdg-settings set default-web-browser firefox.desktop`
|
||||||
|
|
||||||
|
## Misc
|
||||||
|
|
||||||
|
- [ ] Enable user services
|
||||||
|
|
64
bootstrap.sh
64
bootstrap.sh
|
@ -9,16 +9,9 @@ DOTS_PACKAGE="dots"
|
||||||
CONFIG_FILE="./config.yml"
|
CONFIG_FILE="./config.yml"
|
||||||
LOG_FILE="bootstrap.log"
|
LOG_FILE="bootstrap.log"
|
||||||
|
|
||||||
USER_GROUPS="wheel,floppy,audio,video,cdrom,optical,kvm,xbuilder,users,docker" # Comma separated list
|
USER_GROUPS="wheel,floppy,audio,video,cdrom,optical,kvm,xbuilder,users" # Comma separated list
|
||||||
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
|
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
|
||||||
|
|
||||||
BOLD="$(tput bold)"
|
|
||||||
RED="$(tput setaf 1)"
|
|
||||||
GREEN="$(tput setaf 2)"
|
|
||||||
YELLOW="$(tput setaf 3)"
|
|
||||||
BLUE="$(tput setaf 4)"
|
|
||||||
RESET="$(tput sgr0)"
|
|
||||||
|
|
||||||
error() {
|
error() {
|
||||||
printf "%b\n" "${RED}${BOLD}${1}${RESET}" >&2
|
printf "%b\n" "${RED}${BOLD}${1}${RESET}" >&2
|
||||||
echo "$1" >>"$LOG_FILE"
|
echo "$1" >>"$LOG_FILE"
|
||||||
|
@ -108,23 +101,20 @@ check_root() {
|
||||||
}
|
}
|
||||||
|
|
||||||
setup() {
|
setup() {
|
||||||
info "Synchronizing XBPS index..."
|
echo "Synchronizing XBPS index..." | tee -pa "$LOG_FILE"
|
||||||
xbps-install -S xbps void-repo-nonfree >/dev/null 2>&1 || error "Failed to synchronize XBPS index! (Try manually running xbps-install -S)"
|
xbps-install -Sy xbps void-repo-nonfree >/dev/null 2>&1 || echo "Failed to synchronize XBPS index! (Try manually running xbps-install -S)" | tee -pa "$LOG_FILE"
|
||||||
|
|
||||||
if ! xbps-query ntp >/dev/null 2>&1; then
|
if ! xbps-query ntp >/dev/null 2>&1; then
|
||||||
info "Installing ntp..."
|
echo "Installing script dependencies..." | tee -pa "$LOG_FILE"
|
||||||
progs="ntp jq yq git stow"
|
progs="ntp jq yq git stow fzf ncurses"
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
xbps-install -y $progs >/dev/null 2>&1
|
xbps-install -y $progs >/dev/null 2>&1
|
||||||
for prog in $progs; do
|
|
||||||
command -v "${prog}" 1>/dev/null 2>&1 || error "${prog} isn't installed even though it should be!"
|
|
||||||
done
|
|
||||||
|
|
||||||
info "Synchronizing time..."
|
echo "Synchronizing time..." | tee -pa "$LOG_FILE"
|
||||||
ntpdate "pool.ntp.org" >/dev/null 2>&1 || warn "Failed to synchronize time!"
|
ntpdate "pool.ntp.org" >/dev/null 2>&1 || warn "Failed to synchronize time!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
info "Done!"
|
echo "Done!" | tee -pa "$LOG_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
install_packages() {
|
install_packages() {
|
||||||
|
@ -132,13 +122,23 @@ install_packages() {
|
||||||
'
|
'
|
||||||
set +e
|
set +e
|
||||||
for p in $(yq -c '.packages.[]' <config.yml); do
|
for p in $(yq -c '.packages.[]' <config.yml); do
|
||||||
|
command="$(echo "$p" | yq -r '.command[0]')"
|
||||||
|
pre_command="$(echo "$p" | yq -r '.pre[]' 2>/dev/null)"
|
||||||
flags=$(echo "$p" | yq -r '.command[1:].[]')
|
flags=$(echo "$p" | yq -r '.command[1:].[]')
|
||||||
packages=$(echo "$p" | yq -r '.list[]')
|
packages=$(echo "$p" | yq -r '.list[]')
|
||||||
# shellcheck disable=SC2086,2015
|
[ -n "${packages}" ] && {
|
||||||
case $(echo "$p" | yq -r '.local') in
|
$pre_command
|
||||||
true) [ -n "${packages}" ] && echo "$flags" "$packages" | sudo -i -u "$username" xargs "$(echo "$p" | yq -r '.command[0]')" || touch /tmp/bootstrapper-failed ;;
|
case $(echo "$p" | yq -r '.local') in
|
||||||
false) [ -n "${packages}" ] && echo "$flags" "$packages" | xargs "$(echo "$p" | yq -r '.command[0]')" || touch /tmp/bootstrapper-failed ;;
|
true)
|
||||||
esac
|
echo "$flags" "$packages" | sudo -i -u "$username" xargs "$(echo "$p" | yq -r '.command[0]')" ||
|
||||||
|
touch /tmp/bootstrapper-failed
|
||||||
|
;;
|
||||||
|
false)
|
||||||
|
echo "$flags" "$packages" | xargs "$command" ||
|
||||||
|
touch /tmp/bootstrapper-failed
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
done 2>&1 | scroll 7
|
done 2>&1 | scroll 7
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
@ -173,7 +173,7 @@ create_user() {
|
||||||
info "Creating user \"$username\" with the following groups: \"$USER_GROUPS\"..."
|
info "Creating user \"$username\" with the following groups: \"$USER_GROUPS\"..."
|
||||||
useradd -m -G "$USER_GROUPS" "$username"
|
useradd -m -G "$USER_GROUPS" "$username"
|
||||||
failed=false
|
failed=false
|
||||||
while [ -z "$pass1" ] || [ "$pass1" != "$pass2" ]; do
|
while [ -z "${pass1:-}" ] || [ "${pass1:-}" != "${pass2:-}" ]; do
|
||||||
$failed && warn "Passwords do not match or are empty, try again!"
|
$failed && warn "Passwords do not match or are empty, try again!"
|
||||||
pass1=$(prompt "Input Password: ")
|
pass1=$(prompt "Input Password: ")
|
||||||
pass2=$(prompt "Repeat Password: ")
|
pass2=$(prompt "Repeat Password: ")
|
||||||
|
@ -204,7 +204,7 @@ create_directories() {
|
||||||
[ "$mode" = "null" ] && mode="0755"
|
[ "$mode" = "null" ] && mode="0755"
|
||||||
|
|
||||||
info "Creating directory ${counter} of ${num_dirs}: ~/${path}"
|
info "Creating directory ${counter} of ${num_dirs}: ~/${path}"
|
||||||
[ -d "${user_home}/${path}" ] || sudo -u "$username" mkdir -m "${mode}" -p "${user_home}/${path}"
|
[ -d "${user_home}/${path}" ] || mkdir -m "${mode}" -p "${user_home}/${path}"
|
||||||
|
|
||||||
counter=$((counter + 1))
|
counter=$((counter + 1))
|
||||||
done 2>&1 | scroll 7
|
done 2>&1 | scroll 7
|
||||||
|
@ -235,6 +235,7 @@ select_keymap() {
|
||||||
ln -s "$map" "${user_home}/.local/share/xkb/compiled/keymap"
|
ln -s "$map" "${user_home}/.local/share/xkb/compiled/keymap"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# FIX: This has to work in a chroot
|
||||||
enable_services() {
|
enable_services() {
|
||||||
services=$(yq -r '.services[]' <config.yml)
|
services=$(yq -r '.services[]' <config.yml)
|
||||||
counter=1
|
counter=1
|
||||||
|
@ -249,6 +250,8 @@ enable_services() {
|
||||||
for service in $services; do
|
for service in $services; do
|
||||||
info "Enabling service ${counter} of ${num_services}: ${service}"
|
info "Enabling service ${counter} of ${num_services}: ${service}"
|
||||||
[ ! -L "/var/service/${service}" ] && ln -s "/etc/sv/${service}" "/var/service/"
|
[ ! -L "/var/service/${service}" ] && ln -s "/etc/sv/${service}" "/var/service/"
|
||||||
|
|
||||||
|
counter=$((counter + 1))
|
||||||
done 2>&1 | scroll 7
|
done 2>&1 | scroll 7
|
||||||
|
|
||||||
info "Done!"
|
info "Done!"
|
||||||
|
@ -269,6 +272,14 @@ trap 'tput cnorm; tput sgr0; exit' INT TERM EXIT
|
||||||
echo >"$LOG_FILE"
|
echo >"$LOG_FILE"
|
||||||
|
|
||||||
check_root
|
check_root
|
||||||
|
setup
|
||||||
|
|
||||||
|
BOLD="$(tput bold)"
|
||||||
|
RED="$(tput setaf 1)"
|
||||||
|
GREEN="$(tput setaf 2)"
|
||||||
|
YELLOW="$(tput setaf 3)"
|
||||||
|
BLUE="$(tput setaf 4)"
|
||||||
|
RESET="$(tput sgr0)"
|
||||||
|
|
||||||
emphasize "-- Copying Files --"
|
emphasize "-- Copying Files --"
|
||||||
install_files
|
install_files
|
||||||
|
@ -276,10 +287,7 @@ install_files
|
||||||
# emphasize "-- Creating Symlinks --"
|
# emphasize "-- Creating Symlinks --"
|
||||||
# create_symlinks
|
# create_symlinks
|
||||||
|
|
||||||
emphasize "-- Preparing Installation --"
|
username="${SUDO_USER:-}"
|
||||||
setup
|
|
||||||
|
|
||||||
username="$SUDO_USER"
|
|
||||||
if [ -z "$username" ]; then
|
if [ -z "$username" ]; then
|
||||||
emphasize "-- Creating User Account --"
|
emphasize "-- Creating User Account --"
|
||||||
create_user
|
create_user
|
||||||
|
|
Loading…
Reference in New Issue