#!/usr/bin/env bash detect_distro() { if [[ -f /etc/os-release ]]; then . /etc/os-release if [[ "$ID" == "ubuntu" ]]; then echo "Ubuntu" elif [[ "$ID" == "arch" ]]; then echo "Arch" else echo "Unknown" fi else echo "Unknown" fi } is_wsl() { if grep -qi "Microsoft" /proc/version; then return 1 else return 0 fi } install_shared() { echo "Installing shared packages..." sudo groupadd wireshark sudo usermod -aG wireshark $USER newgrp wireshark cp -r ./shared/.??* ~ cp -r ./linux/.??* ~ git clone https://github.com/asdf-vm/asdf ~/.asdf git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions chsh -s /bin/zsh curl -sS https://starship.rs/install.sh | sh source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source "$HOME/.cargo/env" rustup toolchain install nightly rustup +nightly component add rust-src asdf plugin add dotnet https://github.com/hensou/asdf-dotnet asdf plugin add golang https://github.com/kennyp/asdf-golang asdf plugin add java https://github.com/halcyon/asdf-java asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs asdf plugin-add zig https://github.com/asdf-community/asdf-zig asdf install dotnet 8.0.403 asdf install golang 1.23.2 asdf install java temurin-21.0.5+11.0.LTS asdf install nodejs 20.18.0 asdf install zig 0.13.0 asdf global dotnet 8.0.403 asdf global golang 1.23.2 asdf global java temurin-21.0.5+11.0.LTS asdf global nodejs 20.18.0 asdf global zig 0.13.0 curl -fsSL https://get.pnpm.io/install.sh | sh - } install_ubuntu() { echo "Installing Ubuntu packages..." touch ~/.hushlogin sudo apt update -y && sudo apt upgrade -y sudo add-apt-repository ppa:zhangsongcui3371/fastfetch sudo apt install -y --no-install-recommends \ autoconf \ automake \ bash \ ca-certificates \ clang \ cmake \ curl \ dnsutils \ fastfetch \ ffmpeg \ file \ g++ \ gcc \ gh \ git \ gnupg \ gzip \ htop \ iputils-ping \ libc6-dev \ libluajit-5.1-dev \ libncurses5-dev \ libssl-dev \ libudev-dev \ llvm \ lsb-release \ make \ nano \ ninja-build \ python3 \ python3-pip \ samba \ tar \ tshark \ unzip \ wget \ whois \ xz-utils \ yt-dlp \ zsh if grep -vq "microsoft" /proc/version; then sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin sudo usermod -aG docker $USER newgrp docker docker version fi } install_arch() { echo "Installing Arch packages..." sudo pacman-key --init sudo pacman-key --populate sudo pacman -Sy archlinux-keyring sudo pacman -Su sudo pacman -S \ autoconf \ automake \ clang \ cmake \ curl \ fastfetch \ ffmpeg \ gcc \ git \ github-cli \ gzip \ htop \ llvm \ make \ nano \ neofetch \ nginx \ ninja \ python \ tar \ unzip \ wget \ zsh git clone https://aur.archlinux.org/yay-bin.git cd yay-bin makepkg -si } main() { distro=$(detect_distro) if [[ "$distro" == "Ubuntu" ]]; then install_ubuntu install_shared elif [[ "$distro" == "Arch" ]]; then install_arch install_shared else echo "Unsupported distro." fi } main