160 lines
6.0 KiB
Bash
Executable File
160 lines
6.0 KiB
Bash
Executable File
#!/bin/sh
|
|
set -e # Exit immediately if a command exits with a non-zero status
|
|
|
|
# 1. OS DETECTION & VARIABLES
|
|
CURRENT_USER=$(whoami)
|
|
USER_HOME="/home/$CURRENT_USER"
|
|
|
|
if [ -f /etc/os-release ]; then
|
|
. /etc/os-release
|
|
DISTRO_NAME=$ID
|
|
else
|
|
echo "Cannot determine OS distribution. /etc/os-release missing."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Starting deployment script for user: $CURRENT_USER on $DISTRO_NAME"
|
|
|
|
# 2. SHARED TASKS (Runs on both systems)
|
|
echo "-----------------------------------------------"
|
|
echo "Resetting SSH directory permissions..."
|
|
echo "-----------------------------------------------"
|
|
if [ -d "$USER_HOME/.ssh" ]; then
|
|
chmod 700 "$USER_HOME/.ssh"
|
|
if ls "$USER_HOME/.ssh"/*.pub > /dev/null 2>&1; then
|
|
chmod 644 "$USER_HOME/.ssh"/*.pub
|
|
fi
|
|
if [ -f "$USER_HOME/.ssh/id_rsa" ]; then
|
|
chmod 600 "$USER_HOME/.ssh/id_rsa"
|
|
fi
|
|
fi
|
|
|
|
# 3. DISTRO SPECIFIC APPLICATIONS
|
|
if [ "$DISTRO_NAME" = "ubuntu" ] || [ "$DISTRO_NAME" = "debian" ]; then
|
|
echo "-----------------------------------------------"
|
|
echo "Running Ubuntu/Debian Setup Tasks"
|
|
echo "-----------------------------------------------"
|
|
|
|
# Prerequisite updates
|
|
sudo apt update && sudo apt install -y curl wget git gpg software-properties-common ca-certificates
|
|
|
|
# AirVPN Eddie repository
|
|
curl -fsSL https://eddie.website/repository/keys/eddie_maintainer_gpg.key | sudo tee /usr/share/keyrings/eddie.website-keyring.asc > /dev/null
|
|
echo "deb [signed-by=/usr/share/keyrings/eddie.website-keyring.asc] http://eddie.website/repository/apt stable main" | sudo tee /etc/apt/sources.list.d/eddie.website.list
|
|
|
|
# Eza repository
|
|
sudo mkdir -p /etc/apt/keyrings
|
|
wget -qO- https://raw.githubusercontent.com/eza-community/eza/main/deb.asc | sudo gpg --dearmor -o /etc/apt/keyrings/gierens.gpg
|
|
echo "deb [signed-by=/etc/apt/keyrings/gierens.gpg] http://deb.gierens.de stable main" | sudo tee /etc/apt/sources.list.d/gierens.list
|
|
sudo chmod 644 /etc/apt/keyrings/gierens.gpg /etc/apt/sources.list.d/gierens.list
|
|
|
|
# Fastfetch PPA
|
|
sudo add-apt-repository -y ppa:zhangsongcui3371/fastfetch
|
|
|
|
# Refresh and Bulk Install Native APT Apps
|
|
sudo apt update
|
|
sudo apt install -y \
|
|
eddie-ui eza fastfetch bat zsh build-essential autoconf make \
|
|
libssl-dev htop blender vlc filezilla inotify-tools fzf \
|
|
docker-compose ansible zsh-autosuggestions zsh-syntax-highlighting flatpak
|
|
|
|
# Snap fallback for Alacritty
|
|
sudo apt install -y snapd
|
|
sudo snap install alacritty --classic
|
|
|
|
# Cleanup
|
|
sudo apt upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y
|
|
|
|
elif [ "$DISTRO_NAME" = "arch" ]; then
|
|
echo "-----------------------------------------------"
|
|
echo "Running Arch Linux Setup Tasks"
|
|
echo "-----------------------------------------------"
|
|
|
|
sudo pacman -Syu --noconfirm
|
|
|
|
# Native Arch Equivalents
|
|
sudo pacman -S --noconfirm --needed \
|
|
curl wget git bat zsh base-devel openssl ca-certificates \
|
|
htop blender vlc filezilla inotify-tools eza fzf docker-compose \
|
|
ansible zsh-autosuggestions zsh-syntax-highlighting flatpak fastfetch alacritty
|
|
|
|
# Automated Yay Installation
|
|
if ! command -v yay >/dev/null 2>&1; then
|
|
echo "-----------------------------------------------"
|
|
echo "Installing YAY (AUR Helper)..."
|
|
echo "-----------------------------------------------"
|
|
|
|
YAY_BUILD_DIR=$(mktemp -d)
|
|
git clone https://aur.archlinux.org/yay-bin.git "$YAY_BUILD_DIR"
|
|
|
|
# Build and install as user
|
|
(cd "$YAY_BUILD_DIR" && makepkg -si --noconfirm)
|
|
rm -rf "$YAY_BUILD_DIR"
|
|
else
|
|
echo "yay is already installed. Skipping..."
|
|
fi
|
|
|
|
# Use Yay for AirVPN Eddie
|
|
echo "-----------------------------------------------"
|
|
echo "Installing AirVPN Eddie via AUR..."
|
|
echo "-----------------------------------------------"
|
|
yay -S --noconfirm eddie-ui
|
|
fi
|
|
|
|
# 4. UNIVERSAL INDEPENDENT BINARIES
|
|
echo "-----------------------------------------------"
|
|
echo "Installing Zoxide..."
|
|
echo "-----------------------------------------------"
|
|
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | sh
|
|
|
|
# Configure shell scripts safely
|
|
for rc in ".zshrc" ".bashrc"; do
|
|
if [ -f "$USER_HOME/$rc" ]; then
|
|
shell_name=$(echo "$rc" | sed 's/\.//;s/rc//')
|
|
if ! grep -q "zoxide init $shell_name" "$USER_HOME/$rc"; then
|
|
echo "eval \"\$(zoxide init $shell_name)\"" >> "$USER_HOME/$rc"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
echo "-----------------------------------------------"
|
|
echo "Installing Starship..."
|
|
echo "-----------------------------------------------"
|
|
curl -sS https://starship.rs/install.sh | sh -s -- -y
|
|
|
|
echo "-----------------------------------------------"
|
|
echo "Installing Powerlevel10k..."
|
|
echo "-----------------------------------------------"
|
|
if [ ! -d "$USER_HOME/powerlevel10k" ]; then
|
|
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git "$USER_HOME/powerlevel10k"
|
|
fi
|
|
|
|
if [ -f "$USER_HOME/.zshrc" ]; then
|
|
if ! grep -q "powerlevel10k.zsh-theme" "$USER_HOME/.zshrc"; then
|
|
echo "source ~/powerlevel10k/powerlevel10k.zsh-theme" >> "$USER_HOME/.zshrc"
|
|
fi
|
|
fi
|
|
|
|
# 5. FLATPAK APPLICATIONS
|
|
echo "-----------------------------------------------"
|
|
echo "Installing Flatpak Applications..."
|
|
echo "-----------------------------------------------"
|
|
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
|
|
|
# Appending '|| true' ensures the script finishes even if Flatpak encounters minor warnings
|
|
flatpak install -y flathub \
|
|
com.obsproject.Studio \
|
|
org.tenacityaudio.Tenacity \
|
|
md.obsidian.Obsidian \
|
|
org.gimp.GIMP \
|
|
com.github.zadam.trilium \
|
|
com.spotify.Client \
|
|
io.github.shiftey.Desktop \
|
|
com.brave.Browser \
|
|
com.visualstudio.code \
|
|
org.qbittorrent.qBittorrent \
|
|
org.wezfurlong.wezterm || true
|
|
|
|
echo "-----------------------------------------------"
|
|
echo "Deployment Complete! Please restart your terminal."
|
|
echo "-----------------------------------------------" |