dotfiles/install_utils

94 lines
1.8 KiB
Bash
Executable file

#!/bin/bash
set -euo pipefail
# Function to log messages
log() {
echo -e "\n--- $1 ---\n"
}
distro=""
uname_val=$(uname)
if [ "$uname_val" = "Darwin" ]; then
distro="mac"
elif [ -f /etc/os-release ]; then
source /etc/os-release
distro=$ID
else
echo 'Your OS is unsupported. Supported: Arch, Debian, Fedora, Mac (Brew)'
exit 1
fi
# Base packages array
base_pkgs=(
git
neovim
tmux
rsync
curl
less
fzf
mosh
lsd
ripgrep
bat
tree-sitter-cli
zoxide
git-delta
stow
)
# OS specific arrays
mac_pkgs=("${base_pkgs[@]}" fd yazi)
arch_pkgs=("${base_pkgs[@]}" fd yazi ttf-nerd-fonts-symbols ttf-nerd-fonts-symbols-common ttf-nerd-fonts-symbols-mono)
debian_pkgs=("${base_pkgs[@]}" fd-find extrepo)
fedora_pkgs=("${base_pkgs[@]}" fd-find)
case "$distro" in
mac)
log 'Installing packages with Homebrew'
brew install "${mac_pkgs[@]}"
;;
arch)
log 'Installing yay'
sudo pacman --sync --refresh --sysupgrade --noconfirm
sudo pacman --sync --needed --noconfirm base-devel go bat
cd /tmp
if [ ! -d "yay" ]; then
git clone https://aur.archlinux.org/yay.git
fi
cd yay
bat PKGBUILD
read -p 'Continue? (y/N): ' ready
if [[ "$ready" =~ ^[yY] ]]; then
makepkg --syncdeps --install --noconfirm
else
echo "Installation aborted."
exit 1
fi
log 'Installing packages with yay'
yay -Y --save --devel
yay -Y --save --answerdiff All
yay --sync --noconfirm "${arch_pkgs[@]}"
;;
debian | ubuntu)
log 'Installing packages with APT'
sudo apt-get --quiet --yes update
sudo apt-get --quiet --yes upgrade
sudo apt-get --quiet --yes install "${debian_pkgs[@]}"
;;
fedora | rhel | rocky | almalinux | centos)
log 'Installing packages with DNF'
sudo dnf upgrade --assumeyes
sudo dnf install --assumeyes --skip-broken "${fedora_pkgs[@]}"
;;
*)
echo 'Your OS is unsupported. Supported: Arch, Debian, Fedora, Mac (Brew)'
exit 1
;;
esac