diff --git a/Linux/linux_mint.sh b/Linux/linux_mint.sh new file mode 100755 index 0000000..c647a49 --- /dev/null +++ b/Linux/linux_mint.sh @@ -0,0 +1,207 @@ +#!/usr/bin/env bash + +### +# Set variables +### +export DEBIAN_FRONTEND=noninteractive +DPKG_CFG_FRAGMENT=/etc/dpkg/dpkg.cfg.d/non-interactive + +# Color of prefix (>>>) to distinguish user and root echos +color_prefix=32 # green + +# Linux distro +script_distro='Linux Mint 19.x' + +# Additional packages +packages=( + # Graphics + cheese + inkscape + + # Office + libreoffice + + # Security + keepassxc + + # Games + 0ad + beneath-a-steel-sky + billard-gl + blobby + blockout2 + flight-of-the-amazon-queen + freeciv + frozen-bubble + gbrainy + gnome-games + gweled + hedgewars + lincity-ng + lure-of-the-temptress + openttd + pingus + pipewalker + pokerth + supertux + supertuxkart + teeworlds + wesnoth + widelands + + # Gaming platforms + playonlinux + steam + wine-stable + winetricks + + # System management + gparted + + # Tools + hardinfo + shutter + vim + + # Management + calibre + + # Media + vlc + + # Knowledge + goldendict + ubuntu-edu-preschool + ubuntu-edu-primary + ubuntu-edu-secondary + ubuntu-edu-tertiary + + # Language support + language-selector-common + openoffice.org-hyphenation + language-pack-ar + language-pack-gnome-ar + language-pack-fa + language-pack-gnome-fa +) + +### +# Functions +### +is_root() { + [[ $UID -eq 0 ]] +} + +# $*: message to echo +e() { + printf "\e[%sm>>>\e[0m %s\n" "$color_prefix" "$*" +} + +# It's a pain to stop (ctrl+c, kill) execution with all the Python applications +# so we catch SIGINT and SIGTERM and exit immediately +handle_signal() { + e "Ausführung abgebrochen! Script wird beendet..." + exit 1 +} + +# always executed on shell exit regardless of reason. for cleanup tasks +handle_exit() { + # Remove temporary dpkg cfg if root + is_root && rm -f "$DPKG_CFG_FRAGMENT" +} + +trap handle_signal SIGINT SIGTERM +trap handle_exit EXIT + +pkg() { + apt install "$@" --yes --quiet +} + +### +# Root setup +### +if is_root; then + color_prefix=31 # red + if [[ $1 != "root-setup" ]]; then + e "Dieses Script sollte nicht direkt als Root ausgeführt werden!" >&2 + e "Privilegien werden automatisch eskaliert sobald es notwendig ist." >&2 + exit 1 + fi + + # place temporary dpkg configurations to ensure non-interactive upgrade + cat <<'DPKG' >"$DPKG_CFG_FRAGMENT" +force-confold +force-confdef +DPKG + + e "Automatische Installation empfohlener Pakete aktivieren ..." + sed -i 's/false/true/g' /etc/apt/apt.conf.d/00recommends + + e "Besten Spiegelserver für '${script_distro}' auswählen ..." + mint-switch-to-local-mirror + + e "Paketquellen aktualisieren ..." + apt update --yes --quiet + + e "System aktualisieren (apt) ..." + apt full-upgrade --yes --quiet + + e "System aktualisieren (mintupdate-cli) ..." + mintupdate-cli --yes upgrade + + e "Proprietäre Treiber installieren (sofern verfügbar) ..." + ubuntu-drivers autoinstall + + e "Zusätzliche Software installieren ..." + pkg "${packages[@]}" + + e "Sprachunterstützung vervollständigen ..." + pkg "$(check-language-support)" + # these packages have to be installed after "$(check-language-support)" + pkg hunspell-de-at hunspell-de-ch hunspell-de-de + + e "Unnötige Pakete entfernen und Cache bereinigen ..." + apt clean --yes --quiet + apt autoremove --yes --quiet + + e "Root Setup abgeschlossen." + # It's very important to exit here. We don't want root past this point! + exit +fi + +### +# Greeting +### +echo "\ +##################################### +# Computertruhe-Installationsskript # +##################################### + +### +# Maintainer: Computertruhe e. V. +# Website: https://computertruhe.de/ +# Version: 0.2.0 +# Repo: https://codeberg.org/Computertruhe/computertruhe-setup +# Distro: ${script_distro} +### +" +e "Starte initiales Setup für Rechner mit frisch installiertem '${script_distro}' ..." + +### +# Automatic installation +### +e "Script wird als Root ausgeführt für privilegierte Aufgaben" +sudo ./"$0" root-setup + +e "Richte arabisches und persisches Tastatur-Layout ein..." +gsettings set org.gnome.libgnomekbd.keyboard layouts "['de', 'ara', 'ir']" + +e "Ändere Anzeigeoptionen für die Tastatur auf die richtigen Werte..." +gsettings set org.cinnamon.desktop.interface keyboard-layout-show-flags false +gsettings set org.cinnamon.desktop.interface keyboard-layout-use-upper true +gsettings set org.cinnamon.desktop.interface keyboard-layout-prefer-variant-names true + +### +# Finalisation +### +e "Initiales Setup beendet."