Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/sh
- RESET='\E[0m'
- RED='\E[38;5;196m'
- YELLOW='\E[38;5;221m'
- GREEN='\E[38;5;34m'
- BLUE='\E[38;5;33m'
- SUDO_CMD=""
- command_exists() {
- command -v "$1" &> /dev/null
- }
- checkEnv() {
- # Make sure this is not being run as root
- # It messes up file copying since the user home will be /root
- if [ "$(id -u)" -eq 0 ]; then
- echo -e "${RED}Please do not run this script as root. Superuser access will be requested when it is needed.${RESET}" 1>&2
- exit 1
- fi
- # Check how we can escalate privileges
- if command_exists sudo; then
- SUDO_CMD="sudo"
- else
- echo -e "${RED}Unable to perform privilege escalation. Check that your user has permission to act as superuser.${RESET}" 1>&2
- exit 3
- fi
- echo -e "Using ${BLUE}$SUDO_CMD${RESET} to do privilege escalation.\n"
- # Install basic requirements
- $SUDO_CMD pacman -Sy
- $SUDO_CMD pacman -S curl git
- }
- installPackages() {
- echo ""
- echo -e "${BLUE}##################################################${RESET}"
- echo -e "${BLUE}# Installing packages. #${RESET}"
- echo -e "${BLUE}##################################################${RESET}"
- echo ""
- echo -e "${BLUE}>> Performing full update.${RESET}"
- $SUDO_CMD pacman -Syu
- echo -e "${BLUE}>> Installing packages.${RESET}"
- $SUDO_CMD pacman -S --needed \
- # DEVELOPMENT
- hugo python-pip vscodium \
- # GAMING
- protonup-qt \
- # GENERAL UTILITIES
- 7zip atuin deja-dup filezilla flatpak iperf3 kde-pim kamoso kcharselect kfind net-tools onlyoffice-bin \
- openrgb skanpage stow tmux trash-cli tree unace vulkan-radeon wl-clipboard wxwidgets-gtk3 yubikey-manager \
- # INTERNET
- brave-bin mailspring \
- # MULTIMEDIA
- audacity audacity-docs kid3 krecorder obs-studio okular optipng shotcut vlc yt-dlp \
- # VIRTUAL MACHINES
- dnsmasq docker docker-buildx docker-compose firewalld freerdp libvirt qemu-full
- echo -e "${BLUE}>> Installing AUR packages.${RESET}"
- paru -S --needed harmonoid-bin input-remapper-git p7zip-gui vesktop woeusb-ng
- echo -e "${BLUE}>> Installing Flatpak packages.${RESET}"
- flatpak install --noninteractive com.github.tchx84.Flatseal \
- org.kde.krita \
- org.openmw.OpenMW \
- org.prismlauncher.PrismLauncher \
- io.ente.auth \
- io.github.limo_app.limo \
- it.mijorus.gearlever \
- at.vintagestory.VintageStory
- }
- installBinaries() {
- echo ""
- echo -e "${BLUE}##################################################${RESET}"
- echo -e "${BLUE}# Installing non-packaged binaries. #${RESET}"
- echo -e "${BLUE}##################################################${RESET}"
- echo ""
- if [ ! -d "$HOME/.bin" ]; then
- echo -e "${YELLOW}/home/$USER/.bin does not exist! Creating .bin directory in home folder.${RESET}"
- mkdir "$HOME/.bin"
- if command_exists fish_add_path; then
- fish_add_path -p "/home/$USER/.bin"
- fi
- fi
- CWD="$(pwd)"
- cd /tmp
- echo -e "${BLUE}>> Espanso${RESET}"
- # Espanso
- git clone https://github.com/espanso/espanso
- cd espanso
- cargo build -p espanso --release --no-default-features --features modulo,vendored-tls,wayland
- mv /tmp/espanso/target/release/espanso "$HOME/.bin/espanso"
- $SUDO_CMD setcap "cap_dac_override+p" "$HOME/.bin/espanso"
- $HOME/bin/espanso service register
- $HOME/bin/espanso start
- cd /tmp
- echo -e "${BLUE}>> Rustup${RESET}"
- curl -fsSL curl https://sh.rustup.rs | sh
- . "$HOME/.cargo/env"
- echo -e "${BLUE}>> Starship${RESET}"
- curl -sS https://starship.rs/install.sh | sh
- echo -e "${BLUE}>> Rustique${RESET}"
- # Rustique
- curl -fsSLO "https://github.com/Tekunogosu/Rustique/releases/latest/download/rustique-linux-x86_64.zip"
- unzip /tmp/rustique-linux-x86_64.zip
- mv /tmp/rustique "$HOME/.bin/rustique"
- chmod a+x "$HOME/.bin/rustique"
- rm /tmp/rustique-linux-x86_64.zip
- cd "$CWD"
- }
- postConfiguration() {
- echo ""
- echo -e "${BLUE}##################################################${RESET}"
- echo -e "${BLUE}# Performing post-installation steps. #${RESET}"
- echo -e "${BLUE}##################################################${RESET}"
- echo ""
- echo -en "${BLUE}>> Enabling daemons... ${RESET}"
- $SUDO_CMD systemctl enable --now docker.service
- $SUDO_CMD systemctl enable --now input-remapper
- $SUDO_CMD systemctl enable --now libvirtd.service
- $SUDO_CMD systemctl enable --now pcscd.service
- if [ $? -eq 0 ]; then
- echo -e "${GREEN}Done!${RESET}"
- fi
- echo ""
- echo -en "${BLUE}>> Setting default Vulkan driver... ${RESET}"
- $SUDO_CMD mkdir -p /etc/environment.d
- echo "AMD_VULKAN_ICD=RADV" | $SUDO_CMD tee /etc/environment.d/90-vulkan.conf > /dev/null
- if [ $? -eq 0 ]; then
- echo -e "${GREEN}Done! A system reboot is recommended.${RESET}"
- fi
- echo ""
- echo -en "${BLUE}>> Configuring interface virbr0... ${RESET}"
- $SUDO_CMD virsh net-define /etc/libvirt/qemu/networks/default.xml
- $SUDO_CMD virsh net-start default
- $SUDO_CMD virsh net-autostart default
- if [ $? -eq 0 ]; then
- echo -e "${GREEN}Done!${RESET}"
- fi
- echo ""
- echo -e "${BLUE}>> Copying files... ${RESET}"
- $SUDO_CMD cp base/.face.icon /usr/share/sddm/$USER.face.icon
- echo ""
- echo -e "${BLUE}>> Configuring user... ${RESET}"
- $SUDO_CMD groupadd docker
- $SUDO_CMD usermod -aG docker $USER
- }
- reboot_opt() {
- local choice
- while true; do
- read -p "A system reboot is recommended. Reboot now? [y/N]: " choice
- case $choice in
- [Yy]* ) return 0;;
- [Nn]* ) return 1;;
- "" ) return 1;;
- esac
- done
- }
- checkEnv
- installPackages
- installBinaries
- postConfiguration
- echo ""
- if reboot_opt; then
- $SUDO_CMD systemctl reboot
- else
- echo "Finished!"
- fi
Advertisement