dotfiles/dot_bin/executable_bootstrap_pkgs.tmpl

106 lines
2.2 KiB
Bash

#! /bin/bash
# Install all required packages for this user. It only needs to be run once
# when setting up the HOME directory.
# ASSUME
# - git repos referenced here are pulled/updated
# - makepkg is installed/configured
# - yay is installed/configured
# NOTE to run without a sudo prompt, call with a user that has pacman
# permissions in sudoers.
pkgsrc_dir="$1"
if [[ -z "${2+set}" ]]; then
install_root="$HOME"
else
install_root="$2"
fi
makepkg_tmp=/tmp/bootstrap-makepkg
mk_makepkg_dir() {
echo "Creating temporary makepkg build directory at $makepkg_tmp"
mkdir -p "$makepkg_tmp"
echo "Populated with packages from $pkgsrc_dir"
cp -r "$pkgsrc_dir"/* "$makepkg_tmp"
}
try_update() {
if ! yay -Syy; then
echo "Failed to update pacman cache as user $(whoami). Exiting."
return 1
fi
}
call_makepkg() {
cd "$makepkg_tmp/$1" || return 1
makepkg -s -r -i -f --noconfirm
}
run_install_scripts() {
"$install_root/.config/rofi-extras/install_deps"
"$install_root/.config/xmonad/install_deps"
}
run_yay() {
# notifications
pkgs=(dunst papirus-icon-theme)
# gtk
pkgs+=(zuki-themes)
# sleep enhancement
pkgs+=(redshift)
{{ if .features.seafile -}}
# seafile
pkgs+=(seafile-client)
{{- end }}
# elegant terminal
pkgs+=(rxvt-unicode urxvt-perls)
# shell
pkgs+=(zsh zsh-completions zsh-syntax-highlighting)
yay --needed --noconfirm --norebuild --removemake -S "${pkgs[@]}"
}
run_makepkg() {
## these are all packages that have some personal customizations and/or are
## not in the AUR
## TODO the clevo thingy requires a systemd file to turn on/off
{{ if .features.clevo -}}
call_makepkg "clevo-xsm-wmi-dkms"
{{- end }}
{{ if ne .features.conky_alias "none" -}}
call_makepkg "conky-lua"
{{- end }}
call_makepkg "xkb-hypermode"
}
rm_makepkg_dir() {
echo "Removing temporary makepkg build directory at $makepkg_tmp"
rm -r -f "$makepkg_tmp"
}
clean_up() {
rm_makepkg_dir
exit
}
trap 'clean_up' ERR
if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then
echo "Usage: bootstrap_pkgs CUSTOM_PKGBUILD_SRC [INSTALL_ROOT]"
exit 1
fi
try_update
run_install_scripts
run_yay
mk_makepkg_dir
run_makepkg
rm_makepkg_dir