338 lines
11 KiB
Bash
Executable File
338 lines
11 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# A Bash script for installing all my openSUSE tools
|
|
clear
|
|
echo "This script will reconfigure your openSUSE Tumblweed install and add multiple applications and dependencies."
|
|
echo "You probably don't want this unless you're me!"
|
|
echo
|
|
echo "Press Ctrl-C to cancel or Enter to continue."
|
|
read
|
|
|
|
sudo echo "Starting setup..."
|
|
|
|
# Make sure some folders exist
|
|
mkdir -p "$HOME/Downloads"
|
|
mkdir -p "$XDG_CONFIG_HOME/autostart"
|
|
|
|
# Set hostname
|
|
echo
|
|
echo "Setting hostname..."
|
|
echo -n "Enter your desired hostname and press [ENTER]: "
|
|
read PICKED_HOSTNAME
|
|
# Did they pick one?
|
|
if [ -z "$PICKED_HOSTNAME" ]; then
|
|
echo "No hostname entered, skipping..."
|
|
else
|
|
# Set the hostname
|
|
sudo hostnamectl set-hostname $PICKED_HOSTNAME
|
|
echo "Your hostname is now \"$(hostname)\""
|
|
fi
|
|
|
|
# Git
|
|
echo
|
|
echo "Installing Git..."
|
|
sudo zypper --non-interactive install git
|
|
|
|
# Git Settings
|
|
echo -n "Enter your GIT name: "; read GIT_NAME
|
|
echo -n "Enter your GIT email: "; read GIT_EMAIL
|
|
git config --global user.name "$GIT_NAME"
|
|
git config --global user.email "$GIT_EMAIL"
|
|
|
|
# Adding pacman repo
|
|
echo
|
|
echo "Adding pacman repo..."
|
|
sudo zypper --non-interactive --gpg-auto-import-keys addrepo -cfp 90 'https://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Tumbleweed/' packman
|
|
|
|
# Make sure we're up to date
|
|
echo
|
|
echo "Updating system..."
|
|
sudo zypper --non-interactive --gpg-auto-import-keys update
|
|
sudo zypper --non-interactive --gpg-auto-import-keys dup
|
|
|
|
# NVIDIA Drivers
|
|
echo
|
|
echo "Installing NVIDIA drivers..."
|
|
sudo zypper --non-interactive --gpg-auto-import-keys install -l openSUSE-repos-Tumbleweed-NVIDIA
|
|
sudo zypper --non-interactive --gpg-auto-import-keys install-new-recommends --repo repo-non-free
|
|
|
|
# NVIDIA Settings
|
|
echo
|
|
echo "Installing NVIDIA settings..."
|
|
sudo zypper --non-interactive install nvidia-utils*
|
|
|
|
# Media Codecs
|
|
# Nothing to do
|
|
|
|
# Language, Time & Date
|
|
# Sets system to English, currency, dates etc. to Swedish
|
|
echo
|
|
echo "Setting system language to English and region to Sweden..."
|
|
sudo sh -c 'echo -ne "LANG=en_US.UTF-8\nLANGUAGE=en_US:en\nLC_CTYPE=\"en_US.UTF-8\"\nLC_NUMERIC=sv_SE.UTF-8\nLC_TIME=sv_SE.UTF-8\nLC_COLLATE=\"en_US.UTF-8\"\nLC_MONETARY=sv_SE.UTF-8\nLC_MESSAGES=en_US.UTF-8\nLC_PAPER=sv_SE.UTF-8\nLC_NAME=sv_SE.UTF-8\nLC_ADDRESS=sv_SE.UTF-8\nLC_TELEPHONE=sv_SE.UTF-8\nLC_MEASUREMENT=sv_SE.UTF-8\nLC_IDENTIFICATION=sv_SE.UTF-8\nLC_ALL=" > /etc/locale.conf'
|
|
|
|
# Theme
|
|
echo ""
|
|
echo "Installing Dracula theme..."
|
|
sudo rm -rf /usr/share/themes/Dracula
|
|
sudo git clone https://github.com/dracula/gtk.git /usr/share/themes/Dracula
|
|
|
|
# Force dark mode in GNOME
|
|
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
|
|
|
|
# Icons
|
|
git clone https://github.com/vinceliuice/vimix-icon-theme.git ~/vimix && cd ~/vimix && sudo ./install.sh -a && rm -rf ~/vimix`
|
|
|
|
# Font Manager
|
|
sudo zypper --non-interactive install font-manager && sudo zypper --non-interactive remove gnome-font-viewer
|
|
|
|
# Nerd Fonts
|
|
|
|
# Hack
|
|
curl -fLo font.tar.xz \
|
|
https://github.com/ryanoasis/nerd-fonts/releases/latest/download/Hack.tar.xz && \
|
|
sudo mkdir -p /usr/share/fonts/Hack && sudo tar -xf font.tar.xz -C /usr/share/fonts/Hack && \
|
|
rm -f font.tar.xz`
|
|
|
|
# Segoe UI
|
|
curl -fLo font.zip \
|
|
https://aka.ms/SegoeUIVariable && \
|
|
sudo mkdir -p /usr/share/fonts/SegoeUI && sudo unzip -o font.zip -d /usr/share/fonts/SegoeUI && \
|
|
rm -f font.zip
|
|
|
|
# FiraCode
|
|
curl -fLo font.tar.xz \
|
|
https://github.com/ryanoasis/nerd-fonts/releases/latest/download/FiraCode.tar.xz && \
|
|
sudo mkdir -p /usr/share/fonts/FiraCode && sudo tar -xf font.tar.xz -C /usr/share/fonts/FiraCode && \
|
|
rm -f font.tar.xz
|
|
|
|
# Cascadia Cove/Code
|
|
curl -fLo font.tar.xz \
|
|
https://github.com/ryanoasis/nerd-fonts/releases/latest/download/CascadiaCode.tar.xz && \
|
|
sudo mkdir -p /usr/share/fonts/CascadiaCove && sudo tar -xf font.tar.xz -C /usr/share/fonts/CascadiaCove && \
|
|
rm -f font.tar.xz
|
|
|
|
# JetBrainsMono
|
|
curl -fLo font.tar.xz \
|
|
https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.tar.xz && \
|
|
sudo mkdir -p /usr/share/fonts/JetBrainsMono && sudo tar -xf font.tar.xz -C /usr/share/fonts/JetBrainsMono && \
|
|
rm -f font.tar.xz
|
|
|
|
# GNOME Accessibility
|
|
sudo zypper --non-interactive install at-spi2-core
|
|
|
|
# Wine
|
|
sudo zypper --non-interactive install -l wine wine-gecko wine-mono dosbox winetricks
|
|
wine start cmd /c exit
|
|
|
|
# Wine Associations
|
|
echo -e "\n\n[Default Applications]\napplication/x-ms-dos-executable=wine.desktop;\napplication/vnd.microsoft.portable-executable=wine.desktop;\napplication/x-msdownload=wine.desktop;" >> "$HOME/.config/mimeapps.list"
|
|
|
|
# Thunderbird
|
|
sudo zypper --non-interactive install thunderbird
|
|
|
|
# Vim
|
|
sudo zypper --non-interactive install vim gvim
|
|
mkdir -p ~/.vim
|
|
touch ~/.vim/vimrc
|
|
|
|
# Albert
|
|
sudo zypper --non-interactive --gpg-auto-import-keys addrepo -cf https://download.opensuse.org/repositories/home:manuelschneid3r/openSUSE_Tumbleweed/home:manuelschneid3r.repo
|
|
sudo zypper --non-interactive install albert
|
|
|
|
# Albert Autostart
|
|
mkdir -p ~/.config/autostart
|
|
cat <<EOF > ~/.config/autostart/albert.desktop
|
|
[Desktop Entry]
|
|
Type=Application
|
|
Name=Albert
|
|
Exec=albert
|
|
EOF
|
|
|
|
# Alacritty
|
|
sudo zypper --non-interactive install alacritty
|
|
|
|
# Bitwarden
|
|
sudo zypper --non-interactive install bitwarden
|
|
|
|
# Telegram
|
|
curl -o "$HOME/Downloads/telegram.tar.xz" https://telegram.org/dl/desktop/linux -L
|
|
sudo tar -xf "$HOME/Downloads/telegram.tar.xz" -C "/opt"
|
|
rm "$HOME/Downloads/telegram.tar.xz"
|
|
sudo ln -sf "/opt/Telegram/Telegram" "/usr/bin/telegram-desktop"
|
|
# Start Telegram to get a .desktop file, then close it
|
|
telegram-desktop -startintray &
|
|
sleep 5
|
|
killall telegram-desktop
|
|
killall Telegram
|
|
# Auto start Telegram
|
|
cat <<EOF > "$XDG_CONFIG_HOME/autostart/org.telegram.desktop"
|
|
[Desktop Entry]
|
|
Type=Application
|
|
Name=Telegram
|
|
Exec=telegram-desktop -startintray
|
|
Icon=telegram
|
|
EOF
|
|
|
|
# Steam
|
|
sudo zypper --non-interactive install -l steam
|
|
# Auto start Steam
|
|
cat <<EOF > "$XDG_CONFIG_HOME/autostart/steam.desktop"
|
|
[Desktop Entry]
|
|
Type=Application
|
|
Name=Steam
|
|
Icon=steam
|
|
Exec=/usr/bin/steam -silent
|
|
EOF
|
|
|
|
# Mangohud, Gamemode, Goverlay & Gamescope
|
|
sudo zypper --non-interactive install gamemode mangohud goverlay gamescope
|
|
# Enable MangoHud globally
|
|
# Check if MangoHud is enabled globally
|
|
if ! grep -q "MANGOHUD=1" /etc/environment; then
|
|
echo -n "Do you want to enable MangoHud globally? [y/N]: "
|
|
read MANGOHUD_GLOBAL
|
|
if [ "$MANGOHUD_GLOBAL" == "y" ]; then
|
|
echo "Enabling MangoHud globally..."
|
|
sudo sh -c 'echo -e "MANGOHUD=1" >> /etc/environment'
|
|
# Hide MangoHud by default
|
|
# RShift+F12 - Toggle overlay
|
|
# RShift+F11 - Change overlay position
|
|
# LShift+F2 - Toggle logging
|
|
# LShift+F4 - Reload config
|
|
mkdir -p ~/.config/MangoHud && echo -e "preset=3\nno_display" > ~/.config/MangoHud/MangoHud.conf
|
|
else
|
|
echo "MangoHud will not be enabled globally."
|
|
fi
|
|
fi
|
|
|
|
# Heroic Games Launcher (Epic, GOG, Amazon)
|
|
curl -L https://api.github.com/repos/Heroic-Games-Launcher/HeroicGamesLauncher/releases/latest | grep "browser_download_url.*rpm" | cut -d : -f 2,3 | tr -d \" | wget --show-progress -qi - && sudo rpm -i --nodeps heroic-*_64.rpm && rm -f heroic-*_64.rpm
|
|
# Auto start Heroic
|
|
cat <<EOF > "$XDG_CONFIG_HOME/autostart/heroic.desktop"
|
|
[Desktop Entry]
|
|
Type=Application
|
|
Name=Heroic Games Launcher
|
|
Exec=heroic
|
|
EOF
|
|
|
|
# BlitzMax
|
|
# Todo
|
|
|
|
# Avidemux
|
|
sudo zypper --non-interactive install avidemux3-qt5
|
|
|
|
# qBitTorrent
|
|
sudo zypper --non-interactive install qbittorrent
|
|
|
|
# OBS Studio
|
|
sudo zypper --non-interactive install obs-studio
|
|
|
|
# Audacity
|
|
sudo zypper --non-interactive install audacity
|
|
|
|
# Audacious
|
|
sudo zypper --non-interactive install audacious
|
|
|
|
# Krita
|
|
sudo zypper --non-interactive install krita
|
|
|
|
# tmux
|
|
sudo zypper --non-interactive install tmux
|
|
mkdir -p $XDG_CONFIG_HOME/tmux
|
|
touch $XDG_CONFIG_HOME/tmux/tmux.conf
|
|
# Ask to add tmux to .bashrc
|
|
echo -n "Do you want to start tmux automatically when you open a terminal? [y/N]: "
|
|
read TMUX_START
|
|
if [ "$TMUX_START" == "y" ]; then
|
|
echo "Adding tmux to .bashrc..."
|
|
cat <<'EOF' >> "$HOME/.bashrc"
|
|
|
|
# Start tmux
|
|
if command -v tmux &> /dev/null && [ -n "$PS1" ] && [[ ! "$TERM" =~ screen ]] && [[ ! "$TERM" =~ tmux ]] && [ -z "$TMUX" ]; then
|
|
# Check if there are any existing tmux sessions
|
|
if tmux list-sessions &> /dev/null; then
|
|
# Attach to the first available session
|
|
exec tmux attach-session -t "$(tmux list-sessions -F '#{session_name}' | head -n 1)"
|
|
else
|
|
# Create a new session if no sessions exist
|
|
exec tmux
|
|
fi
|
|
fi
|
|
EOF
|
|
else
|
|
echo "tmux will not start automatically."
|
|
fi
|
|
# tmux Plugin Manager
|
|
rm -rf ~/.tmux/plugins/tpm
|
|
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
|
|
|
|
# Floorp browser
|
|
# https://github.com/Floorp-Projects/Floorp/releases/download/v11.22.0/floorp-11.22.0.linux-x86_64.tar.bz2
|
|
curl -L "$(curl -s https://api.github.com/repos/Floorp-Projects/Floorp/releases/latest | jq -r '.assets[] | select(.name | test("linux-x86_64.tar.bz2")) | .browser_download_url')" -o "$HOME/Downloads/floorp.tar.bz2"
|
|
sudo tar -xf "$HOME/Downloads/floorp.tar.bz2" -C "/opt"
|
|
rm "$HOME/Downloads/floorp.tar.bz2"
|
|
sudo ln -sf "/opt/floorp/floorp" "/usr/bin/floorp"
|
|
cat <<EOF > "$HOME/floorp.desktop"
|
|
[Desktop Entry]
|
|
Categories=Network;WebBrowser;GTK;
|
|
Encoding=UTF-8
|
|
Name=Floorp
|
|
GenericName=Web Browser
|
|
TryExec=/opt/floorp/floorp
|
|
Exec=/opt/floorp/floorp %u
|
|
Icon=/opt/floorp/browser/chrome/icons/default/default128.png
|
|
StartupNotify=true
|
|
MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;application/x-xpinstall;x-scheme-handler/http;x-scheme-handler/https;
|
|
Comment=Browse the Web
|
|
|
|
Actions=new-window;PrivateBrowsing;ProfileManager
|
|
|
|
[Desktop Action new-window]
|
|
Name=New Window
|
|
Exec=/opt/floorp/floorp --new-window %u
|
|
|
|
[Desktop Action PrivateBrowsing]
|
|
Name=New Private Browsing Window
|
|
Exec=/opt/floorp/floorp --private-window %u
|
|
|
|
[Desktop Action ProfileManager]
|
|
Name=Profile Manager
|
|
Exec=/opt/floorp/floorp --ProfileManager
|
|
EOF
|
|
sudo mv "$HOME/floorp.desktop" "/usr/share/applications/floorp.desktop"
|
|
|
|
# Bash AI
|
|
curl -sS https://raw.githubusercontent.com/hezkore/bash-ai/main/install.sh | bash
|
|
|
|
# Screensavers
|
|
sudo zypper --non-interactive install xscreensaver-data xscreensaver-data-extra rss-glx
|
|
|
|
# Build Essentials
|
|
sudo zypper --non-interactive install gcc-c++ libXxf86vm-devel webkit2gtk3-devel alsa-lib-devel freetype-devel libpulse-devel glu-devel libudev-devel libXss-devel make ninja
|
|
|
|
# Use SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false to prevent freezing when suspending
|
|
sudo mkdir -p /etc/systemd/system/systemd-suspend.service.d/
|
|
sudo sh -c 'echo -e "[Service]\nEnvironment=\"SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false\"" > /etc/systemd/system/systemd-suspend.service.d/disable_freeze_user_session.conf'
|
|
|
|
# Set gpgcheck to 0 in /etc/zypp/zypp.conf to disable scary warnings no one pays attention to
|
|
if ! grep -q "^gpgcheck = 0" /etc/zypp/zypp.conf; then
|
|
echo "Disabling GPG checks for when installing packages..."
|
|
sudo sed -i 's/gpgcheck = 1/gpgcheck = 0/g' /etc/zypp/zypp.conf
|
|
|
|
# Did it work?
|
|
if grep -q "gpgcheck = 0" /etc/zypp/zypp.conf; then
|
|
echo "GPG check is now disabled."
|
|
else
|
|
echo "Failed to disable GPG check."
|
|
fi
|
|
else
|
|
echo "GPG checks for when installing packages are disabled."
|
|
fi
|
|
|
|
# Tell the user we're done
|
|
echo
|
|
echo "All done!"
|
|
echo "You must reboot your system, otherwise things will not work as expected."
|
|
|
|
exit 0
|