49 lines
1.7 KiB
Bash
Executable File
49 lines
1.7 KiB
Bash
Executable File
#!/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 chromium
|
|
|
|
# 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
|
|
|
|
# End of script
|
|
color_green; echo "Minimal setup completed."; color_reset |