Created
March 7, 2026 17:30
-
-
Save myinusa/6563182b05387d3a661c30c7c5ef6cde to your computer and use it in GitHub Desktop.
cataclysm-vital-ubnutu-savior.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| set -Eeuo pipefail | |
| export DEBIAN_FRONTEND=noninteractive | |
| log() { | |
| printf '\n[%s] %s\n' "$(date '+%F %T')" "$*" | |
| } | |
| require_sudo() { | |
| if [[ "${EUID}" -eq 0 ]]; then | |
| log "Please run this script as a normal user with sudo, not as root." | |
| exit 1 | |
| fi | |
| sudo -v | |
| } | |
| apt_install() { | |
| sudo apt-get install -y --no-install-recommends "$@" | |
| } | |
| add_ppa_if_missing() { | |
| local ppa="$1" | |
| local needle="$2" | |
| if ! grep -Rqs "$needle" /etc/apt/sources.list /etc/apt/sources.list.d 2>/dev/null; then | |
| log "Adding PPA: $ppa" | |
| sudo add-apt-repository -y "$ppa" | |
| APT_CHANGED=1 | |
| else | |
| log "PPA already present: $ppa" | |
| fi | |
| } | |
| add_qsv_repo_if_missing() { | |
| local keyring="/usr/share/keyrings/qsv-deb.gpg" | |
| local listfile="/etc/apt/sources.list.d/qsv.list" | |
| local repo_line='deb [signed-by=/usr/share/keyrings/qsv-deb.gpg] https://dathere.github.io/qsv-deb-releases ./' | |
| if [[ ! -f "$keyring" ]]; then | |
| log "Installing QSV keyring" | |
| wget -qO- https://dathere.github.io/qsv-deb-releases/qsv-deb.gpg \ | |
| | sudo gpg --dearmor -o "$keyring" | |
| APT_CHANGED=1 | |
| fi | |
| if [[ ! -f "$listfile" ]] || ! grep -Fqs "$repo_line" "$listfile"; then | |
| log "Adding QSV apt repository" | |
| echo "$repo_line" | sudo tee "$listfile" >/dev/null | |
| APT_CHANGED=1 | |
| else | |
| log "QSV repo already present" | |
| fi | |
| } | |
| setup_pgdg_if_missing() { | |
| local listfile="/etc/apt/sources.list.d/pgdg.list" | |
| if [[ ! -f "$listfile" ]]; then | |
| log "Setting up PostgreSQL PGDG repository" | |
| apt_install postgresql-common ca-certificates | |
| sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh | |
| APT_CHANGED=0 | |
| else | |
| log "PGDG repository already present" | |
| fi | |
| } | |
| main() { | |
| require_sudo | |
| log "Refreshing package lists and upgrading current packages" | |
| sudo apt-get update | |
| sudo apt-get upgrade -y | |
| sudo apt-get autoremove -y | |
| sudo apt-get clean | |
| log "Installing base packages required for repo management and downloads" | |
| apt_install \ | |
| software-properties-common \ | |
| apt-transport-https \ | |
| ca-certificates \ | |
| gpg \ | |
| curl \ | |
| wget \ | |
| rsync \ | |
| lsof | |
| APT_CHANGED=0 | |
| log "Installing foundational security/system tools" | |
| apt_install \ | |
| unattended-upgrades \ | |
| update-notifier-common \ | |
| ufw \ | |
| fail2ban | |
| log "Installing development headers and build environment" | |
| apt_install \ | |
| build-essential \ | |
| cmake \ | |
| pkg-config \ | |
| python3-dev \ | |
| python3-pip \ | |
| python3-venv \ | |
| libssl-dev \ | |
| zlib1g-dev \ | |
| libbz2-dev \ | |
| libreadline-dev \ | |
| libsqlite3-dev | |
| log "Installing core CLI, terminal, monitoring, and networking tools" | |
| apt_install \ | |
| nano \ | |
| mc \ | |
| dialog \ | |
| git \ | |
| jq \ | |
| btop \ | |
| ncdu \ | |
| tldr \ | |
| net-tools \ | |
| dnsutils \ | |
| iputils-ping \ | |
| apache2-utils \ | |
| nala \ | |
| fzf \ | |
| zoxide \ | |
| ripgrep \ | |
| fd-find \ | |
| glances \ | |
| speedtest-cli \ | |
| tmux \ | |
| rclone \ | |
| shellcheck \ | |
| gdal-bin \ | |
| mkcert \ | |
| sshpass \ | |
| openssh-server \ | |
| dbus-x11 \ | |
| upower \ | |
| eza \ | |
| bat | |
| log "Installing archive/compression tools" | |
| apt_install \ | |
| bzip2 \ | |
| tar \ | |
| xz-utils \ | |
| lzma \ | |
| p7zip-full | |
| log "Adding third-party repositories" | |
| add_ppa_if_missing "ppa:zhangsongcui3371/fastfetch" "zhangsongcui3371/fastfetch" | |
| add_ppa_if_missing "ppa:tomtomtom/yt-dlp" "tomtomtom/yt-dlp" | |
| add_qsv_repo_if_missing | |
| if [[ "${APT_CHANGED}" -eq 1 ]]; then | |
| log "Updating package lists after adding repositories" | |
| sudo apt-get update | |
| fi | |
| log "Installing packages from third-party repositories" | |
| apt_install \ | |
| fastfetch \ | |
| qsv \ | |
| yt-dlp | |
| log "Setting up PostgreSQL client repository" | |
| setup_pgdg_if_missing | |
| log "Installing PostgreSQL client 17" | |
| sudo apt-get update | |
| apt_install postgresql-client-17 | |
| log "Disabling PostgreSQL service if it exists" | |
| if systemctl list-unit-files | grep -q '^postgresql\.service'; then | |
| sudo systemctl disable --now postgresql || true | |
| else | |
| log "PostgreSQL service not present; skipping disable step" | |
| fi | |
| log "Installing ffmpeg" | |
| apt_install ffmpeg | |
| log "Done." | |
| log "You may want to verify: fastfetch --version, qsv --version, yt-dlp --version, psql --version" | |
| } | |
| main "$@" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment