ArchSystemSetup/syssetup.sh
2024-11-04 14:55:11 +01:00

196 lines
5.7 KiB
Bash
Executable file

#!/bin/bash
FIREFOX_THEME_URL = "https://raw.githubusercontent.com/rafaelmardojai/firefox-gnome-theme/master/scripts/install-by-curl.sh"
FLATPAK_LIST_URL = "https://syssetup.jonasjones.dev/flatpaks"
PACKAGES_LIST_URL = "https://syssetup.jonasjones.dev/packages"
GEXTENSIONS_LIST_URL = "https://syssetup.jonasjones.dev/gextensions"
FONT_URL="https://download.jetbrains.com/fonts/JetBrainsMono-2.304.zip"
TEMP_DIR=$(mktemp -d)
FONT_DIR="$HOME/.fonts"
TTF_DIR="$TEMP_DIR/fonts/ttf"
DEFAULT_FONT="JetBrainsMonoNL-Bold.ttf"
ICONPACK_URL="https://github.com/zayronxio/Mkos-Big-Sur/releases/download/0.3/Mkos-Big-Sur.tar.xz"
TEMP_DIR=$(mktemp -d)
ICON_DIR="$HOME/.icons"
ICONPACK_NAME="Mkos-Big-Sur"
WALLPAPER_URL="https://raw.githubusercontent.com/JonasunderscoreJones/ArchSystemSetup/refs/heads/main/wallpaper.jpg"
WALLPAPER_PATH="$HOME/Pictures/wallpaper.jpg"
# Check for --help argument
if [[ "$1" == "--help" || "$2" == "--help" ]]; then
echo "Usage: ./script_name.sh [user]"
echo ""
echo "Optional Arguments:"
echo " user user under which to install everything (default: $USER)"
echo " --help Display this help message"
exit 0
fi
logger() {
local message="$1"
echo -e "\e[32m$message\e[0m"
}
# welcome message
logger "Welcome to the system setup script!"
logger "This script will install a bunch of packages, flatpaks, gnome extensions, and more."
# Keep the sudo session alive
logger "Requesting sudo session..."
while true; do sudo -v; sleep 60; done &
download_file() {
local url="$1"
local filename="$2"
# Download the file
if curl -s -o "$filename" "$url"; then
logger "Downloaded successfully: $filename"
else
logger "Error: Failed to download from $url" >&2
exit 1
fi
}
install_gextension() {
local i="$1"
VERSION_TAG=$(curl -Lfs "https://extensions.gnome.org/extension-query/?search=${i}" | jq '.extensions[0] | .shell_version_map | map(.pk) | max')
wget -O ${i}.zip "https://extensions.gnome.org/download-extension/${i}.shell-extension.zip?version_tag=$VERSION_TAG"
gnome-extensions install --force ${i}.zip
if ! gnome-extensions list | grep --quiet ${i}; then
busctl --user call org.gnome.Shell.Extensions /org/gnome/Shell/Extensions org.gnome.Shell.Extensions InstallRemoteExtension s ${i}
fi
gnome-extensions enable ${i}
rm ${i}.zip
}
install_yay_aur() {
sudo pacman -Syyu yay --noconfirm
}
change_pacman_config() {
# Change the pacman config to make it colorful
sudo sed -i 's/#Color/Color/g' /etc/pacman.conf
sudo sed -i 's/#TotalDownload/TotalDownload/g' /etc/pacman.conf
sudo sed -i 's/#VerbosePkgLists/VerbosePkgLists/g' /etc/pacman.conf
sudo sed -i 's/#ParallelDownloads/ParallelDownloads/g' /etc/pacman.conf
sudo sed -i '/ParallelDownloads/a ILoveCandy' /etc/pacman.conf
}
install_chaoticaur() {
sudo pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com
sudo pacman-key --lsign-key 3056513887B78AEB
sudo pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst' --noconfirm
sudo pacman -U 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst' --noconfirm
logger "Appending to /etc/pacman.conf..."
if ! grep -q '\[chaotic-aur\]' /etc/pacman.conf; then
echo -e "\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist" | sudo tee -a /etc/pacman.conf > /dev/null
logger "Successfully appended to /etc/pacman.conf."
else
logger "[chaotic-aur] section already exists in /etc/pacman.conf."
fi
}
remove_packages() {
# remove some unwanted gnome apps
sudo pacman -Rns \
gnome-contacts \
gnome-weather \
gnome-clocks \
gnome-maps \
gnome-tour \
gnome-connections \
gnome-music \
gnome-console \
gnome-calendar \
gnome-text-editor \
--noconfirm
}
install_firefox_theme() {
# Command from the firefrox theme github page
curl -s -o- $FIREFOX_THEME_URL | bash
}
install_sdkman() {
# Command from the sdkman website
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 21.0.3-oracle
}
install_ghcup() {
# Command from the ghcup website
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh
}
install_flatpaks() {
# Install flatpak package
sudo pacman -S flatpak --noconfirm
# Download flatpak list
download_file $FLATPAK_LIST_URL "flatpaks.txt"
# Install the flatpaks
flatpak install --noninteractive --assumeyes - < flatpaks.txt
# Remove the flatpaks file
rm flatpaks.txt
}
install_packages() {
# Download the packages list
download_file $PACKAGES_LIST_URL "packages.txt"
# Install the packages
yay -S --noconfirm - < packages.txt
# remove the packages file
rm packages.txt
}
install_gnome_extensions() {
# download the gnome extensions list
download_file $GEXTENSIONS_LIST_URL "gextensions.txt"
# Install the gnome extensions
while IFS= read -r line; do
if [[ -n "$line" ]]; then
install_gextension "$line"
fi
done < gextensions.txt
# Remove the gnome extensions file
rm gextensions.txt
}
# run the commands
logger "Changing pacman config..."
change_pacman_config
logger "Installing Chaotic AUR..."
install_chaoticaur
logger "Installing yay AUR helper..."
install_yay_aur
logger "Installing system packages..."
install_packages
logger "Installing flatpaks..."
install_flatpaks
logger "Installing firefox theme..."
install_firefox_theme
logger "Installing sdkman..."
install_sdkman
logger "Installing ghcup..."
install_ghcup
logger "Removing unwanted gnome apps..."
remove_packages
logger "Installing gnome extensions..."
install_gnome_extensions