#!/bin/bash set -euo pipefail # Colors + logging same pattern RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[0;33m' CYAN='\033[0;36m'; GRAY='\033[0;37m'; BOLD='\033[1m'; RESET='\033[0m' [ ! -t 1 ] && RED='' GREEN='' YELLOW='' CYAN='' GRAY='' BOLD='' RESET='' color_red() { printf '%b' "$RED"; } color_green() { printf '%b' "$GREEN"; } color_yellow() { printf '%b' "$YELLOW"; } color_cyan() { printf '%b' "$CYAN"; } color_gray() { printf '%b' "$GRAY"; } color_reset() { printf '%b' "$RESET"; } LOGFILE="${LOGFILE:-/tmp/debian-minimal.log}" exec > >(tee -a "$LOGFILE") 2>&1 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" OS="${DETECTED_OS:-debian}" DE="${SELECTED_DE:-none}" ########################## # Helper functions ########################## install_packages() { sudo apt update; sudo apt install -y --no-install-recommends "$@"; } is_package_installed() { dpkg -s "$1" &>/dev/null; } color_yellow; echo "Starting minimal setup..."; color_reset # Create user directories mkdir -p "$HOME"/{.bin,.fonts,.icons,.themes,DATA} "$HOME/.local/share/"{icons,themes,applications} "$HOME/.config/"{autostart,gtk-{3.0,4.0},variety,fish,neofetch} # Install essential tools install_packages wget curl nano fastfetch lolcat bash-completion starship alacritty hwinfo lshw man-db tree xdg-user-dirs rsync time bat chrony unzip # Optionally handle fonts FONT_DIR="$HOME/.local/share/fonts" mkdir -p "$FONT_DIR" curl -L "https://github.com/ryanoasis/nerd-fonts/releases/latest/download/RobotoMono.zip" -o "/tmp/RobotoMono.zip" unzip -oq "/tmp/RobotoMono.zip" -d "$FONT_DIR" fc-cache -fv # Enable basic services sudo systemctl enable chrony sudo systemctl enable fstrim.timer # Pause read -n 1 -s -r -p "Press any key to continue" echo