#!/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=( # for shell scripts jo bc socat jq zsh opendoas ffmpeg # required by firefox, without it firefox-based browser can't play video from certain website ffmpeg4.4 ) packages_arch_aur=( ) # === 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