Files
LinuxScripts/Kbuntu/install-packages.sh
T

232 lines
7.7 KiB
Bash

#!/bin/bash
# Kubuntu Package Installer
# Installs: LibreOffice, FreeCAD, VLC, Thunderbird, Firefox,
# Timeshift, configures automatic updates + pre-apt snapshots,
# SDDM auto-login, and Plymouth bgrt boot splash
# -------------------------------------------------------------
set -e
# Capture the user running the script (works even under sudo)
CURRENT_USER="${SUDO_USER:-$USER}"
echo "Updating package lists..."
sudo apt update && sudo apt upgrade -y
echo "Installing packages..."
sudo apt install -y \
libreoffice \
libreoffice-l10n-de \
libreoffice-kde \
freecad \
vlc \
vlc-plugin-access-extra \
vlc-plugin-notify \
thunderbird \
firefox \
ubuntu-restricted-extras \
ffmpeg \
ttf-mscorefonts-installer \
timeshift \
unattended-upgrades \
apt-listchanges \
plymouth \
plymouth-themes \
hplip \
hplip-gui \
printer-driver-hpcups \
cups \
system-config-printer \
k3b \
k3b-data \
libk3b7-extracodecs
# -------------------------------------------------------------
# Auto-updates: configure unattended-upgrades
# -------------------------------------------------------------
echo ""
echo "Configuring automatic updates..."
sudo dpkg-reconfigure --priority=low unattended-upgrades
sudo tee /etc/apt/apt.conf.d/50unattended-upgrades > /dev/null <<'EOF'
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
"${distro_id}:${distro_codename}-updates";
};
// Automatically reboot if required (e.g. kernel update) — set to true if desired
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";
// Remove unused kernel packages after upgrade
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
// Remove unused dependencies
Unattended-Upgrade::Remove-Unused-Dependencies "true";
// Send email on errors (optional — replace with your address or leave empty)
// Unattended-Upgrade::Mail "you@example.com";
// Unattended-Upgrade::MailReport "on-change";
EOF
sudo tee /etc/apt/apt.conf.d/20auto-upgrades > /dev/null <<'EOF'
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
EOF
echo "Auto-updates configured."
# -------------------------------------------------------------
# Timeshift pre-apt hook
# Creates a snapshot automatically before any apt install/upgrade
# -------------------------------------------------------------
echo ""
echo "Installing Timeshift pre-apt snapshot hook..."
sudo tee /usr/local/bin/timeshift-pre-apt.sh > /dev/null <<'EOF'
#!/bin/bash
# Auto-snapshot before apt operations
LOGFILE="/var/log/timeshift-auto.log"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$TIMESTAMP] apt operation detected — creating Timeshift snapshot..." | tee -a "$LOGFILE"
if ! command -v timeshift &>/dev/null; then
echo "[$TIMESTAMP] WARNING: timeshift not found, skipping snapshot." | tee -a "$LOGFILE"
exit 0
fi
if ! timeshift --list &>/dev/null; then
echo "[$TIMESTAMP] WARNING: Timeshift not configured yet, skipping snapshot." | tee -a "$LOGFILE"
exit 0
fi
timeshift --create --comments "auto: pre-apt $(date '+%Y-%m-%d %H:%M')" --tags D 2>&1 | tee -a "$LOGFILE"
echo "[$TIMESTAMP] Snapshot complete." | tee -a "$LOGFILE"
EOF
sudo chmod +x /usr/local/bin/timeshift-pre-apt.sh
sudo tee /etc/apt/apt.conf.d/80timeshift-pre-apt > /dev/null <<'EOF'
DPkg::Pre-Invoke { "/usr/local/bin/timeshift-pre-apt.sh"; };
EOF
echo "Timeshift pre-apt hook installed."
echo " Hook script: /usr/local/bin/timeshift-pre-apt.sh"
echo " apt config: /etc/apt/apt.conf.d/80timeshift-pre-apt"
echo " Log file: /var/log/timeshift-auto.log"
# -------------------------------------------------------------
# SDDM auto-login for current user
# -------------------------------------------------------------
echo ""
echo "Configuring SDDM auto-login for user: $CURRENT_USER"
sudo mkdir -p /etc/sddm.conf.d
sudo tee /etc/sddm.conf.d/autologin.conf > /dev/null <<EOF
[Autologin]
User=$CURRENT_USER
Session=plasma
Relogin=false
EOF
echo "SDDM auto-login configured."
echo " Config file: /etc/sddm.conf.d/autologin.conf"
echo " User: $CURRENT_USER"
echo " To disable: sudo rm /etc/sddm.conf.d/autologin.conf"
# -------------------------------------------------------------
# Plymouth: bgrt boot splash
# bgrt shows your motherboard/OEM logo (from UEFI) + spinner
# Requires UEFI firmware with a logo and "quiet splash" in GRUB
# -------------------------------------------------------------
echo ""
echo "Configuring Plymouth bgrt boot splash..."
# Set the theme
sudo plymouth-set-default-theme -R bgrt
# Ensure GRUB passes the right kernel parameters for Plymouth to show
GRUB_FILE="/etc/default/grub"
# Add 'quiet splash' to GRUB_CMDLINE_LINUX_DEFAULT if not already present
if grep -q 'GRUB_CMDLINE_LINUX_DEFAULT' "$GRUB_FILE"; then
# Add quiet splash if missing
if ! grep -q 'quiet' "$GRUB_FILE"; then
sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="\(.*\)"/GRUB_CMDLINE_LINUX_DEFAULT="\1 quiet splash"/' "$GRUB_FILE"
echo " Added 'quiet splash' to GRUB_CMDLINE_LINUX_DEFAULT."
else
echo " 'quiet splash' already present in GRUB config, skipping."
fi
fi
# Rebuild GRUB config
sudo update-grub
echo "Plymouth bgrt theme activated and GRUB updated."
echo ""
echo " Note: bgrt displays the OEM/motherboard logo stored in your"
echo " UEFI firmware. If no logo is present, Plymouth will fall back"
echo " to a plain spinner. This only works on UEFI systems."
echo ""
echo " To change theme later:"
echo " sudo plymouth-set-default-theme -R <theme-name>"
echo " sudo update-grub"
echo ""
echo " To list available themes:"
echo " plymouth-set-default-theme --list"
# -------------------------------------------------------------
# HPLIP: HP printer driver setup
# -------------------------------------------------------------
echo ""
echo "Configuring HP printer support (HPLIP)..."
# Enable and start CUPS (print spooler)
sudo systemctl enable cups
sudo systemctl start cups
# Add current user to the 'lpadmin' group for printer management
sudo usermod -aG lpadmin "$CURRENT_USER"
echo "HP printer support configured."
echo ""
echo " To set up your HP printer, run one of:"
echo " hp-setup (terminal wizard)"
echo " hp-setup -u (GUI wizard — recommended)"
echo ""
echo " For proprietary plugin printers (e.g. some LaserJet models):"
echo " sudo hp-plugin (downloads and installs the binary plugin)"
echo ""
echo " Printer management UI (CUPS web interface):"
echo " http://localhost:631"
echo ""
echo " NOTE: Log out and back in for the lpadmin group to take effect."
# -------------------------------------------------------------
# Timeshift: installed — manual setup required
# -------------------------------------------------------------
echo ""
echo "--------------------------------------------------------------"
echo " NEXT STEP: Configure Timeshift manually (required once)"
echo "--------------------------------------------------------------"
echo " Run: sudo timeshift-gtk"
echo " Recommended settings:"
echo " - Snapshot type: RSYNC (works on any filesystem)"
echo " OR BTRFS if your root partition uses btrfs"
echo " - Schedule: Daily + keep 5, Weekly + keep 2"
echo " - Include: / (root) — exclude /home if space is tight"
echo ""
echo " The pre-apt hook will SKIP snapshots until Timeshift is"
echo " configured with a valid snapshot location."
echo "--------------------------------------------------------------"
echo ""
echo "All done! Reboot for all changes to take effect."