105 lines
2.4 KiB
Bash
Executable file
105 lines
2.4 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
[ $ZI_DOTFILES ] || { >&2 echo "Please run pre-bootstrap first!"; exit 1; }
|
|
[ -d $ZI_DOTFILES ] || { >&2 echo "Invalid dotfiles path, please re-run pre-bootstrap!"; exit 1; }
|
|
|
|
packages_arch=(
|
|
git
|
|
opendoas
|
|
zsh
|
|
# >> for shell scripts
|
|
jo
|
|
bc
|
|
socat
|
|
jq
|
|
# << for shell scripts
|
|
ffmpeg
|
|
# required by firefox, without it firefox-based browser can't play video from certain website
|
|
ffmpeg4.4
|
|
)
|
|
|
|
packages_arch_aur=(
|
|
floorp-bin
|
|
)
|
|
|
|
# === Function and Variable ===
|
|
|
|
DISTRO="$(cat /etc/*-release | grep ^ID | head -n1 | cut -d '=' -f2 | cut -d '"' -f2)"
|
|
SUDO="${SUDO:-sudo}"
|
|
PACMAN="${PACMAN:-pacman}"
|
|
AUR="${AUR:-paru}"
|
|
|
|
is_package_exists() {
|
|
[ $(command -v "$1" | wc -l) -gt 0 ] && echo 1 || echo 0
|
|
}
|
|
|
|
update_package_db() {
|
|
MSG_FAILED="Failed to update package database, skipping..."
|
|
case "$PACMAN" in
|
|
"pacman" )
|
|
$SUDO $PACMAN -Sy || echo $MSG_FAILED
|
|
;;
|
|
"apt" )
|
|
$SUDO $PACMAN update || echo $MSG_FAILED
|
|
;;
|
|
esac
|
|
}
|
|
|
|
install_package() {
|
|
[ "$1" = "" ] && { echo "No package candidate is specified, skipping..."; return; }
|
|
|
|
MSG_FAILED="Failed to install some packages, skipping..."
|
|
case "$PACMAN" in
|
|
"pacman" )
|
|
$SUDO $PACMAN -S --noconfirm "$@" || echo $MSG_FAILED
|
|
;;
|
|
"apt" )
|
|
$SUDO $PACMAN install "$@" || echo $MSG_FAILED
|
|
;;
|
|
esac
|
|
}
|
|
|
|
install_aur_package() {
|
|
# >> Paranoia checks
|
|
[ $DISTRO = "arch" ] || { echo "AUR only available in Arch, skipping..."; return; }
|
|
|
|
[ $(is_package_exists $AUR) = 1 ] || { echo "AUR helper '$AUR' is not installed, skipping..."; return; }
|
|
|
|
[ "$1" = "" ] && { echo "No AUR package candidate is specified, skipping..."; return; }
|
|
# <<
|
|
|
|
$AUR -S --noconfirm "$@"
|
|
}
|
|
|
|
# === Actual automation ===
|
|
|
|
echo "Linking x* configs"
|
|
ln -si $ZI_DOTFILES/.config/xinitrc $HOME/.xinitrc
|
|
ln -si $ZI_DOTFILES/.config/xprofile $HOME/.xprofile
|
|
|
|
echo "Updating package database..."
|
|
update_package_db
|
|
|
|
echo "Installing packages..."
|
|
install_package $packages_arch
|
|
|
|
[ $DISTRO = "arch" ] && {
|
|
echo "Installing AUR packages..."
|
|
install_aur_package $packages_arch_aur
|
|
}
|
|
|
|
echo "Changing default shell to zsh..."
|
|
sudo chsh -s $(which zsh)
|
|
|
|
echo "Configuring zsh to use XDG Base Directory..."
|
|
sudo $ZI_DOTFILES/zsh-xdg-setup
|
|
echo "Installing zsh config..."
|
|
ln -si $ZI_DOTFILES/.config/zsh $HOME/.config/zsh
|
|
|
|
echo "Configuring doas..."
|
|
echo """permit persist :wheel
|
|
permit nopass root as root""" > /tmp/doas.conf.tmp
|
|
echo "======doas.conf======"
|
|
cat /tmp/doas.conf.tmp
|
|
echo "====================="
|
|
sudo cp -i /tmp/doas.conf.tmp /etc/doas.conf
|