dotfiles/install.sh

115 lines
3.4 KiB
Bash
Executable File

#!/bin/env bash
currentDir="$(dirname "$(readlink -f "$0")")"
cd "$currentDir"
## Install necessary desktop packages
source "$currentDir/packages/pkg_desktop.sh"
source "$currentDir/packages/pkg_utils.sh"
sudo pacman -S --needed "${pkg_desktop[@]}" "${pkg_utils[@]}"
## Install dev tools
read -rp "Do you wish to install development tools? [y/N]" install_dev_tools
source "$currentDir/packages/pkg_dev_tools.sh"
if [[ $install_dev_tools == y ]]; then
sudo pacman -S --needed "${pkg_dev_tools[@]}"
fi
## Install optional packages
read -rp "Do you wish to install optional packages? [y/N]" install_optional_pkg
if [[ $install_optional_pkg == y ]]; then
source "$currentDir/packages/pkg_optional.sh"
sudo pacman -S --needed "${pkg_optional[@]}"
fi
## Install nvidia drivers
read -rp "Do you wish to install Nvidia drivers? [y/N]" install_nvidia_drivers
if [[ $install_nvidia_drivers == y ]]; then
source "$currentDir/packages/pkg_nvidia.sh"
sudo pacman -S --needed "${pkg_nvidia[@]}"
fi
## Install aur packages
read -rp "Do you wish to install aur packages? [y/N]" install_aur_pkg
if [[ $install_aur_pkg == y ]]; then
## Install paru if it isn't already installed
if ! command -v paru >/dev/null 2>&1; then
echo "Installing paru..."
git clone https://aur.archlinux.org/paru-bin.git
cd paru-bin
makepkg -sri
cd ..
rm -rf paru-bin
else
echo "Skipping paru (already in PATH)"
fi
## Install aur packages
source "$currentDir/packages/pkg_aur.sh"
paru -S --needed "${pkg_aur[@]}"
fi
## Setup dotfiles
echo "⚠️ WARNING: This will DELETE any conflicting files and replace them with symlinks from this repo."
echo "Make sure you have already backed up all your existing config files (~/.config)"
read -rp "Continue with stow (y/N): " confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then
echo "Detecting conflicts..."
conflicts=$(stow . --no-folding -nv 2>&1 | \
sed -n 's/.*existing target \(.*\) since neither.*/\1/p')
if [[ -z "$conflicts" ]]; then
echo "No conflicts. Running stow normally..."
stow . --no-folding
echo "✅ Done."
else
echo "These paths conflict and will be removed:"
printf ' %s\n' $conflicts
read -rp "Proceed with deleting these files? (y/N): " ok
if [[ ! "$ok" =~ ^[Yy]$ ]]; then
echo "Aborted."
fi
# Remove conflicts relative to $HOME
for path in $conflicts; do
echo "Removing $HOME/$path"
rm -rf "$HOME/$path"
done
echo "Running stow..."
stow . --no-folding
echo "✅ Dotfiles stowed with overwrite."
fi
else
echo "Aborted stow"
fi
## Setup neovim dotfiles
read -rp "Clone neovim dotfiles as well? (y/N): " confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then
echo "Taking backup of neovim config (if already exists)"
mv ~/.config/nvim{,.bak}
mv ~/.local/share/nvim{,.bak}
mv ~/.local/state/nvim{,.bak}
mv ~/.cache/nvim{,.bak}
git clone --depth=1 git@github.com:krolyxon/nvim.git ~/.config/nvim
fi
## Change default shell to zsh
if [[ "$SHELL" != "$(which zsh)" ]]; then
read -rp "Change default shell to ZSH? (y/N): " confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then
echo "Changing default shell to zsh..."
chsh -s $(which zsh)
fi
else
echo "Skipping: zsh is already the default shell"
fi
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
echo ""
echo "Done! 😊"