From fc1532d2b8d6bf71106a229c5e6e461867bd97af Mon Sep 17 00:00:00 2001 From: Lightemerald Date: Sun, 20 Aug 2023 23:37:27 +0200 Subject: [PATCH] Added first version of the linux setup script --- setup-linux.sh | 231 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 231 insertions(+) create mode 100755 setup-linux.sh diff --git a/setup-linux.sh b/setup-linux.sh new file mode 100755 index 0000000..fded988 --- /dev/null +++ b/setup-linux.sh @@ -0,0 +1,231 @@ +#!/bin/bash + +# global var +DISTRO="" + +function get_distribution() { + if [[ -e /etc/debian_version ]]; then + source /etc/os-release + if [[ $ID == "debian" || $ID == "raspbian" ]]; then + DISTRO="debian" + elif [[ $ID == "ubuntu" ]]; then + DISTRO="ubuntu" + fi + elif [[ -e /etc/system-release ]]; then + DISTRO="fedora" + elif [[ -e /etc/arch-release ]]; then + DISTRO="arch" + else + whiptail --title "Error" --msgbox "Incompatible Linux Distribution." 8 78 + exit 1 + fi + echo "Detected distribution $DISTRO" +} + +function update_system() { + if (whiptail --title "System Update" --yesno "Should we update the system?" 8 78); then + echo "Updating system..." + if [[ $DISTRO =~ (debian|ubuntu) ]]; then + sudo apt update && sudo apt upgrade -y + elif [[ $DISTRO == "fedora" ]]; then + sudo dnf up -y + elif [[ $DISTRO == "arch" ]]; then + sudo pacman -Syu --noconfirm + fi + whiptail --title "Success" --msgbox "Update done!" 8 78 + fi +} + +function install_general_tools() { + if [[ $DISTRO =~ (debian|ubuntu) ]]; then + sudo apt install sudo nano git curl wget htop btop scrcpy vlc geary -y + elif [[ $DISTRO == "fedora" ]]; then + sudo dnf in sudo nano git curl wget htop btop scrcpy vlc geary -y + elif [[ $DISTRO == "arch" ]]; then + sudo pacman -S --needed sudo nano git curl wget htop btop scrcpy vlc geary --noconfirm + fi +} + +function setup_repo() { + if [[ $DISTRO =~ (debian|ubuntu) ]]; then + sudo apt install ca-certificates software-properties-gtk -y + sudo curl https://repo.waydro.id | sudo bash + sudo add-apt-repository ppa:o2sh/onefetch + sudo add-apt-repository ppa:oguzhaninan/stacer + sudo add-apt-repository ppa:serge-rider/dbeaver-ce + sudo echo 'deb http://download.opensuse.org/repositories/hardware:/razer/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/hardware:razer.list + sudo curl -fsSL https://download.opensuse.org/repositories/hardware:razer/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/hardware_razer.gpg > /dev/null + sudo apt update + elif [[ $DISTRO == "fedora" ]]; then + sudo dnf copr enable varlad/onefetch -y + sudo dnf copr enable atim/heroic-games-launcher -y + sudo dnf copr enable atim/starship -y + sudo dnf copr enable zeno/scrcpy -y + sudo dnf config-manager --add-repo "https://download.opensuse.org/repositories/hardware:razer/Fedora_$(rpm -E %fedora)/hardware:razer.repo" + sudo dnf config-manager --add-repo 'https://download.opensuse.org/repositories/home:/Maroxy:/AAT-Apps/Fedora_Rawhide/home:Maroxy:AAT-Apps.repo' + sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc + if [ ! -e /etc/yum.repos.d/vscode.repo ]; then + sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo' + fi + elif [[ $DISTRO == "arch" ]]; then + if ! grep -q "chaotic-aur" /etc/pacman.conf; then + yes | sudo pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com + yes | sudo pacman-key --lsign-key 3056513887B78AEB + sudo pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst' --noconfirm + echo -e '[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist' | sudo tee -a /etc/pacman.conf + else + echo Chaotic-AUR already setup + fi + if ! grep -q "blackarch" /etc/pacman.conf; then + curl -sSL https://blackarch.org/strap.sh | sudo bash + else + echo BlackArch already setup + fi + sudo pacman -S --needed yay --noconfirm + fi +} + +function install_browser() { + if (whiptail --title "System Update" --yesno "Should we install web browsers?" 8 78); then + echo "Installing browsers..." + if [[ $DISTRO =~ (debian|ubuntu) ]]; then + sudo apt install firefox chromium torbrowser-launcher -y + elif [[ $DISTRO == "fedora" ]]; then + sudo dnf in firefox chromium tor torbrowser-launcher -y + elif [[ $DISTRO == "arch" ]]; then + sudo pacman -S --needed firefox chromium tor tor-browser --noconfirm + fi + fi + +} + +function install_distro_specific_packages() { + if [[ $DISTRO =~ (debian|ubuntu) ]]; then + sudo apt install stacer qbittorrent -y + elif [[ $DISTRO == "fedora" ]]; then + sudo dnf in kernel-devel starship stacer qbittorrent -y + flatpak install flathub com.moonlight_stream.Moonlight -y --noninteractive --system + flatpak install flathub io.github.thaunknown.miru -y --noninteractive --system + flatpak install flathub com.stremio.Stremio -y --noninteractive --system + elif [[ $DISTRO == "arch" ]]; then + # Base and utility packages + sudo pacman -S --needed --noconfirm linux-headers dkms base-devel jshon expac acpid avahi net-tools xdg-user-dirs p7zip unrar unzip unace xz rsync nfs-utils cifs-utils ntfs-3g exfat-utils gvfs udisks2 starship macchanger plymouth plymouth-kcm breeze-plymouth + # Hardware packages + sudo pacman -S --needed --noconfirm mkinitcpio-firmware mesa lib32-mesa vulkan-icd-loader lib32-vulkan-icd-loader xf86-video-amdgpu nvidia-utils lib32-nvidia-utils libvdpau lib32-libvdpau libva-mesa-driver lib32-libva-mesa-driver mesa-vdpau lib32-mesa-vdpau libva-vdpau-driver lib32-libva-vdpau-driver vulkan-radeon lib32-vulkan-radeon xf86-input-synaptics xf86-input-libinput xf86-input-evdev + # Printer + sudo pacman -S --needed --noconfirm system-config-printer foomatic-db foomatic-db-engine gutenprint gsfonts cups cups-pdf cups-filters sane skanlite hplip + # Network + sudo pacman -S --needed --noconfirm networkmanager networkmanager-openvpn networkmanager-pptp networkmanager-vpnc wireless_tools wpa_supplicant ifplugd dialog bluez bluez-utils + # Sound + sudo pacman -S --needed --noconfirm alsa-utils pipewire pipewire-pulse pipewire-jack wireplumber pavucontrol-qt + # Apps + sudo pacman -S --needed --noconfirm moonlight-qt stremio onlyoffice-bin qbittorrent stacer + yay -S --needed --noconfirm miru-bin + sudo systemctl enable acpid avahi-daemon systemd-timesyncd fstrim.timer cups.service saned.socket NetworkManager bluetooth + sudo gpasswd -a "$USER" adbusers + sudo plymouth-set-default-theme -R spinner + fi +} + +function install_gaming() { + if [[ $DISTRO =~ (debian|ubuntu) ]]; then + sudo apt install steam gamescope gamemode mangohud lutris discord -y + elif [[ $DISTRO == "fedora" ]]; then + sudo dnf in steam gamescope gamemode mangohud lutris discord protonup-qt heroic-games-launcher-bin an-anime-game-launcher honkers-launcher the-honkers-railway-launcher -y + elif [[ $DISTRO == "arch" ]]; then + sudo pacman -S --needed steam gamescope gamemode mangohud lutris discord protonup-qt heroic-games-launcher-bin an-anime-game-launcher-bin --noconfirm + yay -S --needed honkers-launcher-bin the-honkers-railway-launcher-bin --noconfirm + fi +} + +function install_virt() { + if [[ $DISTRO =~ (debian|ubuntu) ]]; then + sudo apt install qemu-system libvirt-daemon-system virt-manager distrobox podman waydroid -y + elif [[ $DISTRO == "fedora" ]]; then + sudo dnf in libvirt lxc libvirt-daemon-lxc virt-manager distrobox podman waydroid -y + elif [[ $DISTRO == "arch" ]]; then + sudo pacman -S --needed libvirt libvirt-storage-gluster libvirt-storage-iscsi-direct virt-firmware virt-viewer virt-manager lxc lxcfs distrobox podman waydroid --noconfirm + + fi + sudo systemctl enable libvirtd waydroid-container +} + +function install_remote() { + if [[ $DISTRO =~ (debian|ubuntu) ]]; then + sudo apt install remmina -y + elif [[ $DISTRO == "fedora" ]]; then + sudo dnf in remmina remmina-gnome-session remmina-plugins-exec remmina-plugins-rdp remmina-plugins-spice remmina-plugins-vnc remmina-plugins-www remmina-plugins-x2go parsec -y + elif [[ $DISTRO == "arch" ]]; then + sudo pacman -S --needed remmina remmina-plugin-rustdesk remmina-plugin-teamviewer parsec-bin --noconfirm + fi +} + +function install_u2f() { + if [[ $DISTRO =~ (debian|ubuntu) ]]; then + sudo apt install yubikey-manager yubikey-personalization yubioath-desktop -y + elif [[ $DISTRO == "fedora" ]]; then + sudo dnf in fedora-packager-yubikey libyubikey pam_yubico yubico-piv-tool yubikey-manager yubikey-personalization-gui -y + flatpak install flathub com.yubico.yubioath -y --noninteractive --system + elif [[ $DISTRO == "arch" ]]; then + sudo pacman -S --needed yubico-pam yubikey-full-disk-encryption yubikey-manager-qt yubikey-personalization yubikey-personalization-gui yubikey-touch-detector yubioath-desktop --noconfirm + fi +} + +function install_fetch() { + if [[ $DISTRO =~ (debian|ubuntu) ]]; then + sudo apt install fastfetch onefetch -y + elif [[ $DISTRO == "fedora" ]]; then + sudo dnf in fastfetch onefetch -y + elif [[ $DISTRO == "arch" ]]; then + sudo pacman -S --needed fastfetch onefetch --noconfirm + fi +} + +function install_terminal() { + if [[ $DISTRO =~ (debian|ubuntu) ]]; then + sudo apt install alacritty kitty zsh -y + elif [[ $DISTRO == "fedora" ]]; then + sudo dnf in alacritty kitty kitty-bash-integration zsh autojump-zsh zsh-autosuggestions zsh-syntax-highlighting -y + elif [[ $DISTRO == "arch" ]]; then + sudo pacman -S --needed alacritty kitty kitty-shell-integration kitty-terminfo zsh zsh-autosuggestions zsh-completions zsh-history-substring-search zsh-lovers zsh-syntax-highlighting --noconfirm + sudo chsh -s /usr/bin/zsh "$USER" + fi +} + +function install_dev() { + if [[ $DISTRO =~ (debian|ubuntu) ]]; then + sudo apt install mariadb-server dbeaver-ce -y + elif [[ $DISTRO == "fedora" ]]; then + sudo dnf in mariadb-server https://dbeaver.io/files/dbeaver-ce-latest-stable.x86_64.rpm code android-tools -y + elif [[ $DISTRO == "arch" ]]; then + sudo pacman -S --needed mariadb dbeaver dbeaver-plugin-office dbeaver-plugin-svg-format dbeaver-plugin-apache-poi visual-studio-code-bin android-tools android-udev --noconfirm + fi +} + +function install_openrazer() { + if [[ $DISTRO =~ (debian|ubuntu) ]]; then + sudo apt install openrazer-meta -y + elif [[ $DISTRO == "fedora" ]]; then + sudo dnf in openrazer-meta -y + sudo rpm -e gpg-pubkey-d6d11ce4-5418547d + sudo dnf in --nogpgcheck polychromatic -y + elif [[ $DISTRO == "arch" ]]; then + sudo pacman -S --needed polychromatic openrazer-meta --noconfirm + fi + sudo gpasswd -a "$USER" plugdev +} + +get_distribution +update_system +install_general_tools +setup_repo +install_browser +install_distro_specific_packages +install_gaming +install_virt +install_remote +install_u2f +install_fetch +install_terminal +install_dev +install_openrazer \ No newline at end of file