#!/usr/bin/env bash # execute self with sudo if user is not root [[ $UID -ne 0 ]] && exec sudo ./"$0" ### # Set variables ### export DEBIAN_FRONTEND=noninteractive DPKG_CFG_FRAGMENT=/etc/dpkg/dpkg.cfg.d/non-interactive # Linux distro script_distro='Linux Mint 20' # Additional packages packages=( # Graphics gimp inkscape pinta # 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 minetest openttd pingus pipewalker pokerth supertux supertuxkart teeworlds wesnoth widelands # Gaming platforms playonlinux steam wine-stable winetricks # System management gparted # Tools f3 hardinfo regionset vim # Media cheese vlc # Knowledge (incl. programs from the former ubunbu-edu-* meta packages) blinken calibre cantor chemtool dia einstein fritzing gamine gcompris goldendict inkscape kalgebra kalzium kanagram kbruch kgeography khangman kig klettres kmplot kstars ktouch ktuberling kturtle kwordquiz laby lightspeed lybniz marble melting parley pencil2d ri-li rocs step tuxmath tuxpaint tuxtype yorick # Language support language-selector-common openoffice.org-hyphenation language-pack-ar language-pack-gnome-ar language-pack-fa language-pack-gnome-fa ) ### # Functions ### # $*: message to echo e() { printf "\e[31m>>>\e[0m %s\n" "$*" } # 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! Skript wird beendet." exit 1 } # always executed on shell exit regardless of reason. for cleanup tasks handle_exit() { e "Finales Cleanup wird durchgeführt …" rm -f "$DPKG_CFG_FRAGMENT" } trap handle_signal SIGINT SIGTERM trap handle_exit EXIT pkg() { apt install "$@" --yes --quiet } ### # Greeting ### echo "\ ##################################### # Computertruhe-Installationsskript # ##################################### ### # Maintainer: Computertruhe e. V. # Website: https://computertruhe.de/ # Version: 1.0.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 ### # 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 …" cat <<'EOF' > /etc/apt/apt.conf.d/00recommends APT::Install-Recommends "true"; Aptitude::Recommends-Important "true"; EOF 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 # https://askubuntu.com/questions/1037553/how-to-configure-a-dconf-key-globally-across-all-user-accounts#1037557 # https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/desktop_migration_and_administration_guide/custom-default-values-system-settings e "Tastatur- und Desktop-Optionen anpassen …" mkdir -vp /etc/dconf/{profile,db/local.d} cat <<'EOF' > /etc/dconf/profile/user user-db:user system-db:local EOF cat <<'EOF' > /etc/dconf/db/local.d/00-keyboard-layout [org/gnome/libgnomekbd/keyboard] layouts=['de', 'ara', 'ir'] [org/cinnamon/desktop/interface] keyboard-layout-show-flags=false keyboard-layout-use-upper=true keyboard-layout-prefer-variant-names=true EOF dconf update ### # Finalisation ### e "Initiales Setup beendet."