punktdateien/bin/install-software

128 lines
3.5 KiB
Bash
Executable file

#!/bin/bash
# Check for sudo
if [ ! -f "/sbin/sudo" ]; then
echo ":: Error: \"/sbin/sudo\" not found, please install sudo"
exit 1
fi
# Clear variables
#PACMAN_FLAGS=
INSTALL_GUI_PACKAGES=false
# Parse arguments
for arg in "${@}"; do
if [ "${arg}" == "--noconfirm" ]; then
# I don't know what shellcheck is seeing here...
# shellcheck disable=SC2037
PACMAN_FLAGS=${PACMAN_FLAGS} --noconfirm
elif [ "${arg}" == "--gui" ]; then
INSTALL_GUI_PACKAGES=true
else
echo ":: Warning: Unknown argument \"${arg}\""
fi
done
# Source /etc/os-release
echo ":: Detecting distribution"
if [ -f "/etc/os-release" ]; then
# shellcheck disable=SC1091
source /etc/os-release
fi
# Perform actions based on distro
case "$ID" in
"arch")
echo ":: Detected Arch Linux, installing packages automatically"
# Check for paru
if [ ! -f "/sbin/paru" ]; then
echo ":: Error: \"/sbin/paru\" not found, please install paru"
exit 1
fi
# Install required packages (command line)
# shellcheck disable=SC2086
paru --removemake --batchinstall --sudoloop --mflags "--ignorearch" -Syu --needed ${PACMAN_FLAGS} \
nano ncurses moar fireplace sl fortune-mod cowsay lolcat \
moar yt-dlp-git tar zstd bzip zip unrar unzip 7-zip \
rustup binutils base-devel
# Install required packages packages (graphical)
# shellcheck disable=SC2086
[[ -n "${INSTALL_GUI_PACKAGES}" ]] && \
paru --removemake --batchinstall --sudoloop --mflags "--ignorearch" -Syu --needed ${PACMAN_FLAGS} \
hyprland-git hyprpaper-git waybar fnott qt6ct bemenu \
cliphist j4-dmenu-desktop polkit-kde-agent polkit-qt6 \
xdg-desktop-portal-hyprland xdg-desktop-portal-kde \
qt6-wayland qt5-wayland xwaylandvideobridge pipewire \
wireplumber
# Install/update Rust toolchains and Rust-based software
(
# Update installed toolchains
rustup update
# Install nightly and stable toolchains
rustup install stable
rustup install nightly
# Switch to stable toolchain
rustup default stable
# Install software
cargo install eza cargo-audit
)
# Install SDKMAN! and Java
(
# Download & install SDKMAN!
curl -s "https://get.sdkman.io" | bash
# Initialize SDKMAN! for subshell
export SDKMAN_DIR="$HOME/.sdkman"
# shellcheck disable=SC1091
[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"
# Update SDKMAN! and installed candidates
sdk selfupdate
sdk update
# Install Java versions specified in array
# We use the Temurin distribution of Java.
java_versions=( '22.0.1' '21.0.3' '17.0.11' '8.0.412' )
for version in "${java_versions[@]}"; do
sdk install java "${version}-tem"
done
# Default to Java 21
sdk default java 21.0.3-tem
)
# Install Hyprland plugins
(
# Install Hyprland headers & update existing plugins
hyprpm update
# Add hyprland-plugins repository
yes | hyprpm add https://github.com/hyprwm/hyprland-plugins
# Enable plugins
hyprpm enable csgo-vulkan-fix
)
;;
"archarm")
echo ":: Arch Linux ARM is not yet supported"
echo " (but will soon be). Just wait a little!"
;;
*)
echo ":: Hmm... your distribution isn't supported"
echo " You can do the following:"
echo " - Create an issue"
echo " - Look into the source for this script"
echo " and install the required software yourself"
;;
esac