my first commit
This commit is contained in:
commit
c3ef250449
124
bootstrap.sh
Normal file
124
bootstrap.sh
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# ------------------------------
|
||||||
|
# Common Packages (install these on ALL systems)
|
||||||
|
# ------------------------------
|
||||||
|
|
||||||
|
COMMON_PACKAGES=(
|
||||||
|
wget
|
||||||
|
curl
|
||||||
|
git
|
||||||
|
neovim
|
||||||
|
tmux
|
||||||
|
fzf
|
||||||
|
)
|
||||||
|
|
||||||
|
# ------------------------------
|
||||||
|
# Detect Distro
|
||||||
|
# ------------------------------
|
||||||
|
|
||||||
|
detect_os() {
|
||||||
|
if [[ -f /etc/os-release ]]; then
|
||||||
|
source /etc/os-release
|
||||||
|
case "$ID" in
|
||||||
|
debian | ubuntu)
|
||||||
|
echo "debian"
|
||||||
|
;;
|
||||||
|
arch)
|
||||||
|
echo "arch"
|
||||||
|
;;
|
||||||
|
alpine)
|
||||||
|
echo "alpine"
|
||||||
|
;;
|
||||||
|
centos | rhel)
|
||||||
|
echo "rhel"
|
||||||
|
;;
|
||||||
|
fedora)
|
||||||
|
echo "fedora"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "unsupported"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
echo "unsupported"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------
|
||||||
|
# Installers
|
||||||
|
# ------------------------------
|
||||||
|
|
||||||
|
install_packages_debian() {
|
||||||
|
apt update -y
|
||||||
|
apt install -y "${COMMON_PACKAGES[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
install_packages_arch() {
|
||||||
|
pacman -Syu --noconfirm
|
||||||
|
pacman -S --noconfirm "${COMMON_PACKAGES[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
install_packages_alpine() {
|
||||||
|
apk update
|
||||||
|
apk add "${COMMON_PACKAGES[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
install_packages_rhel() {
|
||||||
|
yum install -y "${COMMON_PACKAGES[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
install_packages_fedora() {
|
||||||
|
dnf install -y "${COMMON_PACKAGES[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------
|
||||||
|
# LazyVim Installer (Optional)
|
||||||
|
# ------------------------------
|
||||||
|
|
||||||
|
install_lazyvim() {
|
||||||
|
if command -v nvim >/dev/null 2>&1; then
|
||||||
|
echo "Installing LazyVim..."
|
||||||
|
git clone https://github.com/LazyVim/starter ~/.config/nvim
|
||||||
|
nvim --headless "+Lazy sync" +qa
|
||||||
|
else
|
||||||
|
echo "Neovim not found, skipping LazyVim install."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------
|
||||||
|
# Main Logic
|
||||||
|
# ------------------------------
|
||||||
|
|
||||||
|
main() {
|
||||||
|
OS=$(detect_os)
|
||||||
|
|
||||||
|
case "$OS" in
|
||||||
|
debian)
|
||||||
|
install_packages_debian
|
||||||
|
;;
|
||||||
|
arch)
|
||||||
|
install_packages_arch
|
||||||
|
;;
|
||||||
|
alpine)
|
||||||
|
install_packages_alpine
|
||||||
|
;;
|
||||||
|
rhel)
|
||||||
|
install_packages_rhel
|
||||||
|
;;
|
||||||
|
fedora)
|
||||||
|
install_packages_fedora
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unsupported OS. Exiting."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
install_lazyvim
|
||||||
|
|
||||||
|
echo "✅ Setup complete!"
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
Loading…
x
Reference in New Issue
Block a user