diff --git a/setup/install.sh b/setup/install.sh index 8a4394f..14c3f7e 100755 --- a/setup/install.sh +++ b/setup/install.sh @@ -1,4 +1,10 @@ #!/bin/bash +set -uo pipefail + +LOG="$HOME/dotfiles-install.log" +> "$LOG" +printf "Dotfiles install: %s\n" "$(date)" >> "$LOG" +exec > >(tee -a "$LOG") 2>&1 echo "Running Core installation Scripts" bash ~/Dotfiles/setup/modules/package-managers.sh @@ -31,3 +37,4 @@ esac # bash ~/Dotfiles/setup/modules/optional-Modules/zfs.sh # bash ~/Dotfiles/setup/modules/optional-Modules/wprs.sh +printf "\nDone. Log: %s\n" "$LOG" diff --git a/setup/modules/Desktop-Environments/cosmic.sh b/setup/modules/Desktop-Environments/cosmic.sh index a28fa10..c83967b 100755 --- a/setup/modules/Desktop-Environments/cosmic.sh +++ b/setup/modules/Desktop-Environments/cosmic.sh @@ -1,9 +1,8 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh" -echo "=== COSMIC Desktop Installer ===" - -echo "[+] Installing COSMIC..." +log "Installing COSMIC desktop..." sudo pacman -S --noconfirm --needed \ cosmic \ pipewire wireplumber pipewire-alsa pipewire-jack pipewire-pulse \ @@ -11,7 +10,7 @@ sudo pacman -S --noconfirm --needed \ bluez bluez-utils \ flatpak -echo "[+] Enabling services..." +log "Enabling services..." # cosmic-greeter is COSMIC's own display manager; fall back to sddm if absent if pacman -Qi cosmic-greeter &>/dev/null; then sudo systemctl enable cosmic-greeter.service @@ -22,4 +21,4 @@ fi sudo systemctl enable NetworkManager.service sudo systemctl enable bluetooth.service -echo "=== COSMIC installation complete. Reboot to start. ===" +log "COSMIC installation complete. Reboot to start." diff --git a/setup/modules/Desktop-Environments/gnome.sh b/setup/modules/Desktop-Environments/gnome.sh index 9a6d0f9..0d60453 100755 --- a/setup/modules/Desktop-Environments/gnome.sh +++ b/setup/modules/Desktop-Environments/gnome.sh @@ -1,9 +1,8 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh" -echo "=== GNOME Installer ===" - -echo "[+] Installing GNOME..." +log "Installing GNOME desktop..." sudo pacman -S --noconfirm --needed \ gnome \ gnome-tweaks \ @@ -12,8 +11,8 @@ sudo pacman -S --noconfirm --needed \ networkmanager \ flatpak -echo "[+] Enabling services..." +log "Enabling services..." sudo systemctl enable gdm.service sudo systemctl enable NetworkManager.service -echo "=== GNOME installation complete. Reboot to start. ===" +log "GNOME installation complete. Reboot to start." diff --git a/setup/modules/Desktop-Environments/hyprland.sh b/setup/modules/Desktop-Environments/hyprland.sh index 8d42fe0..85d5685 100755 --- a/setup/modules/Desktop-Environments/hyprland.sh +++ b/setup/modules/Desktop-Environments/hyprland.sh @@ -1,14 +1,15 @@ #!/bin/bash set -e +source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh" -echo "=== Hyprland Environment Installer (legacy — hyprlang config) ===" +log "Starting Hyprland installer (legacy — hyprlang config)..." # 1. Update system and install Flatpak -echo "Updating system and installing Flatpak..." +log "Updating system and installing Flatpak..." sudo pacman -Syu --noconfirm --needed flatpak # 2. Install required packages -echo "Installing required packages..." +log "Installing required packages..." sudo pacman -Syu --noconfirm --needed \ hyprland hyprcursor wl-clipboard hyprpaper hyprlock wofi kitty dunst \ nwg-dock-hyprland nwg-drawer nwg-menu nwg-look \ @@ -28,14 +29,14 @@ sudo pacman -Syu --noconfirm --needed \ hyprpolkitagent pavucontrol playerctl wf-recorder sound-theme-freedesktop # 3. Enable essential services -echo "Enabling essential services..." +log "Enabling essential services..." sudo systemctl enable NetworkManager.service sudo systemctl disable getty@tty1.service || true sudo systemctl enable ly@tty1.service sudo systemctl enable udisks2.service # 4. Install AUR packages -echo "Installing AUR packages..." +log "Installing AUR packages..." rustup default stable yay -Syu --answerdiff None --answerclean All --noconfirm \ hyprland-workspaces vicinae-bin bluetuith wvkbd iwmenu pinta \ @@ -43,7 +44,7 @@ yay -Syu --answerdiff None --answerclean All --noconfirm \ wofi-calc bri chamel # 5. EWW bar selection and compilation -echo "Setting up EWW bar..." +log "Setting up EWW bar..." rm -rf ~/.config/eww read -n1 -p "Install eww bar for PC, Notebook or Tablet [P/N/T]: " doit echo @@ -51,10 +52,10 @@ case $doit in n|N) cp -rf ~/Dotfiles/desktopenvs/hyprland/eww/ ~/.config/ ;; p|P) cp -rf ~/Dotfiles/desktopenvs/hyprland/eww-nobattery/ ~/.config/eww ;; t|T) cp -rf ~/Dotfiles/desktopenvs/hyprland/eww-touch/ ~/.config/eww ;; - *) echo "No valid choice — skipping EWW copy. Run manually later." ;; + *) warn "No valid choice — skipping EWW copy. Run manually later." ;; esac -echo "Compiling EWW..." +log "Compiling EWW..." mkdir -p ~/install-tmp cd ~/install-tmp git clone https://github.com/elkowar/eww @@ -65,6 +66,7 @@ sudo cp target/release/eww /usr/bin/ cd ~ # 6. Theme and icon setup +log "Installing themes and icons..." sudo cp -r ~/Dotfiles/gtk-themes/cyberqueer /usr/share/themes sudo cp ~/Dotfiles/desktopenvs/hyprland/btop/themes/cyberqueer.theme /usr/share/btop/themes sudo cp -f ~/Dotfiles/etc-ly-config.ini /etc/ly/config.ini @@ -72,12 +74,14 @@ sudo ln -sf /usr/bin/kitty /usr/bin/xdg-terminal-exec sudo ln -sf /usr/bin/ksshaskpass /usr/lib/ssh/ssh-askpass # 7. Cursor setup +log "Installing cursor theme..." mkdir -p ~/.icons wget -O ~/install-tmp/Nordzy-cursors-lefthand.tar.gz \ https://github.com/guillaumeboehm/Nordzy-cursors/releases/download/v2.3.0/Nordzy-cursors-lefthand.tar.gz tar -zxf ~/install-tmp/Nordzy-cursors-lefthand.tar.gz -C ~/.icons/ # 8. Enable Bluetooth and wireless services +log "Enabling Bluetooth and wireless services..." sudo systemctl enable bluez sudo systemctl enable bluetooth.service sudo systemctl enable iwd.service @@ -88,7 +92,7 @@ sudo systemctl enable iwd.service # hyprpm add https://github.com/hyprwm/hyprland-plugins # 10. Copy configs -echo "Copying configs..." +log "Copying configs..." CONFIGS=(kitty mimeapps.list vicinae walker ulauncher hypr xfce4 wofi dunst alacritty nwg-dock-hyprland nwg-drawer nwg-panel scripts btop gtk-3.0) for cfg in "${CONFIGS[@]}"; do rm -rf ~/.config/"$cfg" @@ -99,16 +103,18 @@ cp ~/Dotfiles/desktopenvs/hyprland/hypr-usr/* ~/.config/ cp ~/Dotfiles/colors.conf ~/.config/colors.conf # 11. Wallpaper and resources +log "Copying wallpaper and resources..." mkdir -p ~/Pictures cp ~/Dotfiles/resources/fflogo.svg ~/Pictures/fflogo.svg wget "https://cloud.abdelbaki.eu/apps/theming/image/background?v=15" -O ~/Pictures/background.jpg # 12. Python venv for scripts +log "Setting up Python venv for scripts..." python -m venv ~/.config/python-script ~/.config/python-script/bin/pip install speedtest-cli requests pint simpleeval parsedatetime # 13. Udiskie icon fix -echo "Applying Udiskie icon fix..." +log "Applying Udiskie icon fix..." PAPIRUS_DIR="/usr/share/icons/Papirus-Dark/status" HICOLOR_DIR="/usr/share/icons/hicolor/scalable/status" if [ -d "$PAPIRUS_DIR" ]; then @@ -116,14 +122,16 @@ if [ -d "$PAPIRUS_DIR" ]; then sudo ln -sf "$PAPIRUS_DIR/checkbox-unchecked.svg" "$HICOLOR_DIR/udiskie-checkbox-unchecked.svg" sudo gtk-update-icon-cache -f -t /usr/share/icons/hicolor else - echo "Papirus-Dark not found — skipping udiskie icon fix." + warn "Papirus-Dark not found — skipping udiskie icon fix." fi # 14. Enable udiskie +log "Enabling udiskie service..." sudo systemctl enable udiskie.service sudo systemctl start udiskie.service # 15. Install config updater and theme script +log "Installing config updater and theme script..." mkdir -p ~/.config/config-updater ln -sf ~/Dotfiles/desktopenvs/hyprland/config-updater/updater.conf ~/.config/config-updater/updater.conf ln -sf ~/Dotfiles/desktopenvs/hyprland/config-updater/update-configs.sh ~/update-configs.sh @@ -135,4 +143,4 @@ chmod +x ~/apply-theme.sh # | grep -Po '"browser_download_url": "\K[^"]+' | grep WallRizz)" | tar -xz \ # && sudo mv WallRizz /usr/bin/ -echo "=== Hyprland installation complete. Reboot to start. ===" +log "Hyprland installation complete. Reboot to start." diff --git a/setup/modules/Desktop-Environments/hyprlua.sh b/setup/modules/Desktop-Environments/hyprlua.sh index cc0e616..60d10b7 100755 --- a/setup/modules/Desktop-Environments/hyprlua.sh +++ b/setup/modules/Desktop-Environments/hyprlua.sh @@ -1,14 +1,15 @@ #!/bin/bash set -e +source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh" -echo "=== HyprLua Environment Installer (Lua-based config) ===" +log "Starting HyprLua installer (Lua-based config)..." # 1. Update system and install Flatpak -echo "Updating system and installing Flatpak..." +log "Updating system and installing Flatpak..." sudo pacman -Syu --noconfirm --needed flatpak # 2. Install required packages -echo "Installing required packages..." +log "Installing required packages..." sudo pacman -Syu --noconfirm --needed \ hyprland hyprcursor wl-clipboard hyprpaper hyprlock wofi kitty dunst \ nwg-dock-hyprland nwg-drawer nwg-menu nwg-look \ @@ -28,14 +29,14 @@ sudo pacman -Syu --noconfirm --needed \ hyprpolkitagent pavucontrol playerctl wf-recorder sound-theme-freedesktop # 3. Enable essential services -echo "Enabling essential services..." +log "Enabling essential services..." sudo systemctl enable NetworkManager.service sudo systemctl disable getty@tty1.service || true sudo systemctl enable ly@tty1.service sudo systemctl enable udisks2.service # 4. Install AUR packages -echo "Installing AUR packages..." +log "Installing AUR packages..." rustup default stable yay -Syu --answerdiff None --answerclean All --noconfirm \ hyprland-workspaces vicinae-bin bluetuith wvkbd iwmenu pinta \ @@ -43,7 +44,7 @@ yay -Syu --answerdiff None --answerclean All --noconfirm \ wofi-calc bri chamel # 5. EWW bar selection and compilation -echo "Setting up EWW bar..." +log "Setting up EWW bar..." rm -rf ~/.config/eww read -n1 -p "Install eww bar for PC, Notebook or Tablet [P/N/T]: " doit echo @@ -51,10 +52,10 @@ case $doit in n|N) cp -rf ~/Dotfiles/desktopenvs/hyprlua/eww/ ~/.config/ ;; p|P) cp -rf ~/Dotfiles/desktopenvs/hyprlua/eww-nobattery/ ~/.config/eww ;; t|T) cp -rf ~/Dotfiles/desktopenvs/hyprlua/eww-touch/ ~/.config/eww ;; - *) echo "No valid choice — skipping EWW copy. Run manually later." ;; + *) warn "No valid choice — skipping EWW copy. Run manually later." ;; esac -echo "Compiling EWW..." +log "Compiling EWW..." mkdir -p ~/install-tmp cd ~/install-tmp git clone https://github.com/elkowar/eww @@ -65,6 +66,7 @@ sudo cp target/release/eww /usr/bin/ cd ~ # 6. Theme and icon setup +log "Installing themes and icons..." sudo cp -r ~/Dotfiles/gtk-themes/cyberqueer /usr/share/themes sudo cp ~/Dotfiles/desktopenvs/hyprlua/btop/themes/cyberqueer.theme /usr/share/btop/themes sudo cp -f ~/Dotfiles/etc-ly-config.ini /etc/ly/config.ini @@ -74,12 +76,14 @@ sudo ln -sf /usr/bin/ksshaskpass /usr/lib/ssh/ssh-askpass gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' # 7. Cursor setup +log "Installing cursor theme..." mkdir -p ~/.icons wget -O ~/install-tmp/Nordzy-cursors-lefthand.tar.gz \ https://github.com/guillaumeboehm/Nordzy-cursors/releases/download/v2.3.0/Nordzy-cursors-lefthand.tar.gz tar -zxf ~/install-tmp/Nordzy-cursors-lefthand.tar.gz -C ~/.icons/ # 8. Enable Bluetooth and wireless services +log "Enabling Bluetooth and wireless services..." sudo systemctl enable bluez sudo systemctl enable bluetooth.service sudo systemctl enable iwd.service @@ -90,7 +94,7 @@ sudo systemctl enable iwd.service # hyprpm add https://github.com/hyprwm/hyprland-plugins # 10. Copy configs -echo "Copying configs..." +log "Copying configs..." CONFIGS=(kitty mimeapps.list vicinae walker ulauncher hypr xfce4 wofi dunst alacritty nwg-dock-hyprland nwg-drawer nwg-panel scripts btop gtk-3.0) for cfg in "${CONFIGS[@]}"; do rm -rf ~/.config/"$cfg" @@ -105,16 +109,18 @@ cp ~/Dotfiles/desktopenvs/hyprlua/hypr-usr/wallpaper.conf ~/.config/ cp ~/Dotfiles/colors.conf ~/.config/colors.conf # 11. Wallpaper and resources +log "Copying wallpaper and resources..." mkdir -p ~/Pictures cp ~/Dotfiles/resources/fflogo.svg ~/Pictures/fflogo.svg wget "https://cloud.abdelbaki.eu/apps/theming/image/background?v=15" -O ~/Pictures/background.jpg # 12. Python venv for scripts +log "Setting up Python venv for scripts..." python -m venv ~/.config/python-script ~/.config/python-script/bin/pip install speedtest-cli requests pint simpleeval parsedatetime # 13. Udiskie icon fix -echo "Applying Udiskie icon fix..." +log "Applying Udiskie icon fix..." PAPIRUS_DIR="/usr/share/icons/Papirus-Dark/status" HICOLOR_DIR="/usr/share/icons/hicolor/scalable/status" if [ -d "$PAPIRUS_DIR" ]; then @@ -122,18 +128,20 @@ if [ -d "$PAPIRUS_DIR" ]; then sudo ln -sf "$PAPIRUS_DIR/checkbox-unchecked.svg" "$HICOLOR_DIR/udiskie-checkbox-unchecked.svg" sudo gtk-update-icon-cache -f -t /usr/share/icons/hicolor else - echo "Papirus-Dark not found — skipping udiskie icon fix." + warn "Papirus-Dark not found — skipping udiskie icon fix." fi # 14. Enable udiskie +log "Enabling udiskie service..." sudo systemctl enable udiskie.service sudo systemctl start udiskie.service # 15. Install config updater and theme script +log "Installing config updater and theme script..." mkdir -p ~/.config/config-updater ln -sf ~/Dotfiles/desktopenvs/hyprlua/config-updater/updater.conf ~/.config/config-updater/updater.conf ln -sf ~/Dotfiles/desktopenvs/hyprlua/config-updater/update-configs.sh ~/update-configs.sh cp ~/Dotfiles/apply-theme.sh ~/apply-theme.sh chmod +x ~/apply-theme.sh -echo "=== HyprLua installation complete. Reboot to start. ===" +log "HyprLua installation complete. Reboot to start." diff --git a/setup/modules/Desktop-Environments/kde-plasma.sh b/setup/modules/Desktop-Environments/kde-plasma.sh index fa02ce0..83cc737 100755 --- a/setup/modules/Desktop-Environments/kde-plasma.sh +++ b/setup/modules/Desktop-Environments/kde-plasma.sh @@ -1,9 +1,8 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh" -echo "=== KDE Plasma Installer ===" - -echo "[+] Installing KDE Plasma..." +log "Installing KDE Plasma desktop..." sudo pacman -S --noconfirm --needed \ plasma-meta \ sddm sddm-kcm \ @@ -16,9 +15,9 @@ sudo pacman -S --noconfirm --needed \ power-profiles-daemon \ flatpak -echo "[+] Enabling services..." +log "Enabling services..." sudo systemctl enable sddm.service sudo systemctl enable NetworkManager.service sudo systemctl enable bluetooth.service -echo "=== KDE Plasma installation complete. Reboot to start. ===" +log "KDE Plasma installation complete. Reboot to start." diff --git a/setup/modules/Desktop-Environments/lxqt.sh b/setup/modules/Desktop-Environments/lxqt.sh index 9fc685f..6e1911e 100755 --- a/setup/modules/Desktop-Environments/lxqt.sh +++ b/setup/modules/Desktop-Environments/lxqt.sh @@ -1,9 +1,8 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh" -echo "=== LXQt Installer ===" - -echo "[+] Installing LXQt..." +log "Installing LXQt desktop..." sudo pacman -S --noconfirm --needed \ lxqt \ openbox obconf-qt \ @@ -17,9 +16,9 @@ sudo pacman -S --noconfirm --needed \ gvfs gvfs-smb gvfs-mtp \ flatpak -echo "[+] Enabling services..." +log "Enabling services..." sudo systemctl enable sddm.service sudo systemctl enable NetworkManager.service sudo systemctl enable bluetooth.service -echo "=== LXQt installation complete. Reboot to start. ===" +log "LXQt installation complete. Reboot to start." diff --git a/setup/modules/Desktop-Environments/sway.sh b/setup/modules/Desktop-Environments/sway.sh index 619a05b..60ff14b 100644 --- a/setup/modules/Desktop-Environments/sway.sh +++ b/setup/modules/Desktop-Environments/sway.sh @@ -1,10 +1,11 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh" -echo "=== Sway Environment Installer ===" +log "Starting Sway installer..." # 1. Install packages -echo "Installing required packages..." +log "Installing required packages..." sudo pacman -Syu --noconfirm --needed \ brightnessctl btop dmenu foot glfw grim \ greetd-tuigreet gst-plugin-pipewire imagemagick iwd libpulse \ @@ -18,15 +19,16 @@ sudo pacman -Syu --noconfirm --needed \ zram-generator # 2. Enable services -echo "Enabling services..." +log "Enabling services..." sudo systemctl enable NetworkManager.service # 3. greetd config +log "Deploying greetd config..." sudo cp -f ~/Dotfiles/desktopenvs/hyprland/greetd-tuigreet/config.toml /etc/greetd/config.toml sudo systemctl enable greetd.service # 4. Copy DE configs -echo "Copying configs..." +log "Copying Sway configs..." CONFIGS=(sway alacritty) for cfg in "${CONFIGS[@]}"; do rm -rf ~/.config/"$cfg" @@ -37,4 +39,4 @@ cp ~/Dotfiles/colors.conf ~/.config/colors.conf cp ~/Dotfiles/apply-theme.sh ~/apply-theme.sh chmod +x ~/apply-theme.sh -echo "=== Sway installation complete. Run shell-setup.sh if you haven't already, then reboot. ===" +log "Sway installation complete. Run shell-setup.sh if you haven't already, then reboot." diff --git a/setup/modules/Desktop-Environments/xfce.sh b/setup/modules/Desktop-Environments/xfce.sh index 84aa141..0f72a07 100755 --- a/setup/modules/Desktop-Environments/xfce.sh +++ b/setup/modules/Desktop-Environments/xfce.sh @@ -1,9 +1,8 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh" -echo "=== XFCE Installer ===" - -echo "[+] Installing XFCE..." +log "Installing XFCE desktop..." sudo pacman -S --noconfirm --needed \ xfce4 xfce4-goodies \ lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings \ @@ -15,9 +14,9 @@ sudo pacman -S --noconfirm --needed \ gvfs gvfs-smb gvfs-mtp \ flatpak -echo "[+] Enabling services..." +log "Enabling services..." sudo systemctl enable lightdm.service sudo systemctl enable NetworkManager.service sudo systemctl enable bluetooth.service -echo "=== XFCE installation complete. Reboot to start. ===" +log "XFCE installation complete. Reboot to start." diff --git a/setup/modules/core-packages.sh b/setup/modules/core-packages.sh index 5099559..08f54a4 100644 --- a/setup/modules/core-packages.sh +++ b/setup/modules/core-packages.sh @@ -1,6 +1,8 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/lib/logging.sh" +log "Installing core packages..." sudo pacman -Syu --noconfirm --needed \ 7zip arch-install-scripts atftp atool \ base base-devel bc bind bluez btrfs-progs btop \ @@ -18,4 +20,7 @@ sudo pacman -Syu --noconfirm --needed \ vim vnstat wget whois wireplumber wireless_tools wpa_supplicant wprs \ yazi zip unzip zram-generator +log "Installing AUR packages..." yay -S --aur --noconfirm --needed pamtester + +log "Core packages installed." diff --git a/setup/modules/core.sh b/setup/modules/core.sh index a3e6000..ffd12cb 100644 --- a/setup/modules/core.sh +++ b/setup/modules/core.sh @@ -1,16 +1,21 @@ #!/bin/bash +set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/lib/logging.sh" -#networkmanager setup -echo "enabling NetworkManager" +log "Enabling NetworkManager..." sudo systemctl enable NetworkManager.service -#cron setup -echo "enabling cronie" +log "Enabling cronie..." sudo systemctl enable cronie.service -#greetd setup -echo "Installing greetd" +log "Deploying greetd config..." sudo cp -f ~/Dotfiles/desktopenvs/hyprland/greetd-tuigreet/config.toml /etc/greetd/config.toml sudo systemctl enable greetd.service + +log "Enabling fail2ban..." sudo systemctl enable fail2ban.service + +log "Enabling udisks2..." sudo systemctl enable udisks2.service + +log "Core services enabled." diff --git a/setup/modules/lib/logging.sh b/setup/modules/lib/logging.sh new file mode 100644 index 0000000..df0050c --- /dev/null +++ b/setup/modules/lib/logging.sh @@ -0,0 +1,12 @@ +#!/bin/bash +# Shared logging helpers — source this in every module + +GREEN="\e[32m" +YELLOW="\e[33m" +RED="\e[31m" +RESET="\e[0m" + +log() { printf "${GREEN}[+] %s${RESET}\n" "$*"; } +skip() { printf "${YELLOW}[~] %s${RESET}\n" "$*"; } +warn() { printf "${YELLOW}[!] %s${RESET}\n" "$*" >&2; } +err() { printf "${RED}[✖] %s${RESET}\n" "$*" >&2; } diff --git a/setup/modules/optional-Modules/apps/anti-malware.sh b/setup/modules/optional-Modules/apps/anti-malware.sh index 07bae0a..47adfb1 100644 --- a/setup/modules/optional-Modules/apps/anti-malware.sh +++ b/setup/modules/optional-Modules/apps/anti-malware.sh @@ -1,24 +1,33 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing anti-malware tools (clamav, clamtk, rkhunter)..." sudo pacman -S --noconfirm --needed \ clamav clamtk rkhunter +log "Installing chkrootkit (AUR)..." yay -S --aur --noconfirm --needed chkrootkit # initialise ClamAV database (first run) if [[ ! -f /var/lib/clamav/main.cvd ]] && [[ ! -f /var/lib/clamav/main.cld ]]; then - echo "Running initial freshclam..." + log "Running initial freshclam (virus database update)..." sudo freshclam +else + skip "ClamAV database already present." fi # cron job: update virus definitions twice a day CRON_FILE=/etc/cron.d/freshclam if [[ ! -f "$CRON_FILE" ]]; then - echo "Installing freshclam cron job..." + log "Installing freshclam cron job (twice daily)..." sudo tee "$CRON_FILE" > /dev/null <<'EOF' # Update ClamAV virus definitions twice a day 0 */12 * * * root /usr/bin/freshclam --quiet 2>/dev/null EOF sudo chmod 644 "$CRON_FILE" +else + skip "freshclam cron job already configured." fi + +log "Anti-malware tools installed." diff --git a/setup/modules/optional-Modules/apps/ardour.sh b/setup/modules/optional-Modules/apps/ardour.sh index be7fb12..7b2cb79 100644 --- a/setup/modules/optional-Modules/apps/ardour.sh +++ b/setup/modules/optional-Modules/apps/ardour.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Ardour (professional DAW)..." sudo pacman -S --noconfirm --needed ardour +log "Ardour installed." diff --git a/setup/modules/optional-Modules/apps/audacity.sh b/setup/modules/optional-Modules/apps/audacity.sh index 8694955..3548eb9 100644 --- a/setup/modules/optional-Modules/apps/audacity.sh +++ b/setup/modules/optional-Modules/apps/audacity.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Audacity (audio editor)..." sudo pacman -S --noconfirm --needed audacity +log "Audacity installed." diff --git a/setup/modules/optional-Modules/apps/blender-povray.sh b/setup/modules/optional-Modules/apps/blender-povray.sh index c5f01c4..c813518 100644 --- a/setup/modules/optional-Modules/apps/blender-povray.sh +++ b/setup/modules/optional-Modules/apps/blender-povray.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Blender and POV-Ray..." sudo pacman -S --noconfirm --needed blender povray +log "Blender and POV-Ray installed." diff --git a/setup/modules/optional-Modules/apps/butter.sh b/setup/modules/optional-Modules/apps/butter.sh index 0ad5535..32b0fbc 100755 --- a/setup/modules/optional-Modules/apps/butter.sh +++ b/setup/modules/optional-Modules/apps/butter.sh @@ -1,6 +1,10 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing btrfs-progs..." sudo pacman -S --noconfirm --needed btrfs-progs +log "Installing butter (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm butter +log "butter installed." diff --git a/setup/modules/optional-Modules/apps/cecilia.sh b/setup/modules/optional-Modules/apps/cecilia.sh index f5cfb15..20996b2 100644 --- a/setup/modules/optional-Modules/apps/cecilia.sh +++ b/setup/modules/optional-Modules/apps/cecilia.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Cecilia (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm cecilia +log "Cecilia installed." diff --git a/setup/modules/optional-Modules/apps/chromium.sh b/setup/modules/optional-Modules/apps/chromium.sh index bd5fe3f..502444b 100644 --- a/setup/modules/optional-Modules/apps/chromium.sh +++ b/setup/modules/optional-Modules/apps/chromium.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Chromium..." sudo pacman -S --noconfirm --needed chromium +log "Chromium installed." diff --git a/setup/modules/optional-Modules/apps/claude.sh b/setup/modules/optional-Modules/apps/claude.sh index 64d6933..a7727f2 100755 --- a/setup/modules/optional-Modules/apps/claude.sh +++ b/setup/modules/optional-Modules/apps/claude.sh @@ -1,9 +1,13 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Claude Code via npm..." if ! command -v npm &>/dev/null; then + log "Sourcing nvm to get npm..." export NVM_DIR="$HOME/.nvm" [[ -s "$NVM_DIR/nvm.sh" ]] && source "$NVM_DIR/nvm.sh" fi npm install -g @anthropic-ai/claude-code +log "Claude Code installed." diff --git a/setup/modules/optional-Modules/apps/cockpit.sh b/setup/modules/optional-Modules/apps/cockpit.sh index cda70e5..661bba0 100644 --- a/setup/modules/optional-Modules/apps/cockpit.sh +++ b/setup/modules/optional-Modules/apps/cockpit.sh @@ -1,17 +1,19 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" -# Core + official-repo plugins +log "Installing Cockpit (core + official plugins)..." sudo pacman -S --noconfirm --needed \ cockpit \ cockpit-pcp \ pcp -# AUR plugins: machines (VMs), podman containers, file navigator +log "Installing Cockpit AUR plugins (machines, podman, navigator)..." yay -S --answerdiff None --answerclean All --noconfirm \ cockpit-machines \ cockpit-podman \ cockpit-navigator +log "Enabling Cockpit socket..." sudo systemctl enable cockpit.socket -echo "Cockpit enabled. Web UI available at https://localhost:9090" +log "Cockpit enabled. Web UI available at https://localhost:9090" diff --git a/setup/modules/optional-Modules/apps/codeblocks.sh b/setup/modules/optional-Modules/apps/codeblocks.sh index a2deffb..3daadc3 100644 --- a/setup/modules/optional-Modules/apps/codeblocks.sh +++ b/setup/modules/optional-Modules/apps/codeblocks.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Code::Blocks..." sudo pacman -S --noconfirm --needed codeblocks +log "Code::Blocks installed." diff --git a/setup/modules/optional-Modules/apps/croc.sh b/setup/modules/optional-Modules/apps/croc.sh index a1af8b5..22fad87 100755 --- a/setup/modules/optional-Modules/apps/croc.sh +++ b/setup/modules/optional-Modules/apps/croc.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing croc (file transfer)..." sudo pacman -S --noconfirm --needed croc +log "croc installed." diff --git a/setup/modules/optional-Modules/apps/db-clients.sh b/setup/modules/optional-Modules/apps/db-clients.sh index f6f11d0..2649211 100755 --- a/setup/modules/optional-Modules/apps/db-clients.sh +++ b/setup/modules/optional-Modules/apps/db-clients.sh @@ -1,6 +1,10 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing pgcli..." sudo pacman -S --noconfirm --needed pgcli +log "Installing mycli (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm mycli +log "DB clients installed." diff --git a/setup/modules/optional-Modules/apps/disk-recovery.sh b/setup/modules/optional-Modules/apps/disk-recovery.sh index 96e9f6d..28f52db 100755 --- a/setup/modules/optional-Modules/apps/disk-recovery.sh +++ b/setup/modules/optional-Modules/apps/disk-recovery.sh @@ -1,6 +1,10 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing ddrescue..." sudo pacman -S --noconfirm --needed ddrescue +log "Installing f3 (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm f3 +log "Disk recovery tools installed." diff --git a/setup/modules/optional-Modules/apps/docker.sh b/setup/modules/optional-Modules/apps/docker.sh index 571c316..373ec18 100644 --- a/setup/modules/optional-Modules/apps/docker.sh +++ b/setup/modules/optional-Modules/apps/docker.sh @@ -1,7 +1,14 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Docker and Docker Compose..." sudo pacman -S --noconfirm --needed docker docker-compose + +log "Enabling Docker service..." sudo systemctl enable docker.service + +log "Adding $USER to docker group..." sudo usermod -aG docker "$USER" -echo "Docker installed. Log out and back in for group membership to take effect." + +log "Docker installed. Log out and back in for group membership to take effect." diff --git a/setup/modules/optional-Modules/apps/doom.sh b/setup/modules/optional-Modules/apps/doom.sh index 6d1bc01..0148429 100644 --- a/setup/modules/optional-Modules/apps/doom.sh +++ b/setup/modules/optional-Modules/apps/doom.sh @@ -1,5 +1,8 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" # chocolate-doom: faithful vanilla Doom port; freedoom: free game data (playable without IWADs) +log "Installing Chocolate Doom and Freedoom data..." sudo pacman -S --noconfirm --needed chocolate-doom freedoom +log "Doom installed." diff --git a/setup/modules/optional-Modules/apps/ffmpeg.sh b/setup/modules/optional-Modules/apps/ffmpeg.sh index e557a03..a5494f6 100755 --- a/setup/modules/optional-Modules/apps/ffmpeg.sh +++ b/setup/modules/optional-Modules/apps/ffmpeg.sh @@ -1,6 +1,9 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing FFmpeg extras (thumbnailer + GStreamer codecs)..." sudo pacman -S --noconfirm --needed \ ffmpeg ffmpegthumbnailer \ gst-libav gst-plugins-good gst-plugins-bad gst-plugins-ugly +log "FFmpeg extras installed." diff --git a/setup/modules/optional-Modules/apps/firefox.sh b/setup/modules/optional-Modules/apps/firefox.sh index e53c71a..c2225fc 100644 --- a/setup/modules/optional-Modules/apps/firefox.sh +++ b/setup/modules/optional-Modules/apps/firefox.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Firefox..." sudo pacman -S --noconfirm --needed firefox +log "Firefox installed." diff --git a/setup/modules/optional-Modules/apps/freeipa-client.sh b/setup/modules/optional-Modules/apps/freeipa-client.sh index 219fdce..4d84f4f 100755 --- a/setup/modules/optional-Modules/apps/freeipa-client.sh +++ b/setup/modules/optional-Modules/apps/freeipa-client.sh @@ -1,5 +1,8 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Starting FreeIPA client installer..." SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" FREEIPA_DIR="$SCRIPT_DIR/../../FreeipaAnsible" diff --git a/setup/modules/optional-Modules/apps/freeipa-image-builder.sh b/setup/modules/optional-Modules/apps/freeipa-image-builder.sh index 4a09cac..a507cb0 100755 --- a/setup/modules/optional-Modules/apps/freeipa-image-builder.sh +++ b/setup/modules/optional-Modules/apps/freeipa-image-builder.sh @@ -1,5 +1,7 @@ #!/bin/bash # freeipa-image-builder.sh — build a FreeIPA server image for multiple targets +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Starting FreeIPA image builder..." # # Targets (TUI chooser): # docker Build Docker/Podman image and optionally push to a registry diff --git a/setup/modules/optional-Modules/apps/freeipa-server.sh b/setup/modules/optional-Modules/apps/freeipa-server.sh index 6a24732..4d31e21 100755 --- a/setup/modules/optional-Modules/apps/freeipa-server.sh +++ b/setup/modules/optional-Modules/apps/freeipa-server.sh @@ -5,6 +5,9 @@ # and optionally auto-enroll-ansible.sh) ready for distribution. set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Starting FreeIPA server installer..." RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m' BLUE='\033[0;34m'; CYAN='\033[0;36m'; MAGENTA='\033[0;35m'; NC='\033[0m' diff --git a/setup/modules/optional-Modules/apps/geany.sh b/setup/modules/optional-Modules/apps/geany.sh index 3628d0a..d9fecb3 100644 --- a/setup/modules/optional-Modules/apps/geany.sh +++ b/setup/modules/optional-Modules/apps/geany.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Geany and plugins..." sudo pacman -S --noconfirm --needed geany geany-plugins +log "Geany installed." diff --git a/setup/modules/optional-Modules/apps/gimp.sh b/setup/modules/optional-Modules/apps/gimp.sh index bb1dad3..34d275e 100644 --- a/setup/modules/optional-Modules/apps/gimp.sh +++ b/setup/modules/optional-Modules/apps/gimp.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing GIMP..." sudo pacman -S --noconfirm --needed gimp +log "GIMP installed." diff --git a/setup/modules/optional-Modules/apps/gnuplot.sh b/setup/modules/optional-Modules/apps/gnuplot.sh index 5dcf98c..04c520e 100755 --- a/setup/modules/optional-Modules/apps/gnuplot.sh +++ b/setup/modules/optional-Modules/apps/gnuplot.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Gnuplot..." sudo pacman -S --noconfirm --needed gnuplot +log "Gnuplot installed." diff --git a/setup/modules/optional-Modules/apps/himalaya.sh b/setup/modules/optional-Modules/apps/himalaya.sh index 2787861..3baf644 100755 --- a/setup/modules/optional-Modules/apps/himalaya.sh +++ b/setup/modules/optional-Modules/apps/himalaya.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Himalaya (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm himalaya-bin +log "Himalaya installed." diff --git a/setup/modules/optional-Modules/apps/imagemagick.sh b/setup/modules/optional-Modules/apps/imagemagick.sh index fb7b4a2..66deb4f 100755 --- a/setup/modules/optional-Modules/apps/imagemagick.sh +++ b/setup/modules/optional-Modules/apps/imagemagick.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing ImageMagick..." sudo pacman -S --noconfirm --needed imagemagick +log "ImageMagick installed." diff --git a/setup/modules/optional-Modules/apps/inkscape.sh b/setup/modules/optional-Modules/apps/inkscape.sh index 4fb7e6f..e8d84b5 100644 --- a/setup/modules/optional-Modules/apps/inkscape.sh +++ b/setup/modules/optional-Modules/apps/inkscape.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Inkscape..." sudo pacman -S --noconfirm --needed inkscape +log "Inkscape installed." diff --git a/setup/modules/optional-Modules/apps/k8s.sh b/setup/modules/optional-Modules/apps/k8s.sh index b1c33ef..74e6a30 100644 --- a/setup/modules/optional-Modules/apps/k8s.sh +++ b/setup/modules/optional-Modules/apps/k8s.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Kubernetes tools (kubectl, podman-desktop)..." sudo pacman -S --noconfirm --needed kubectl podman-desktop +log "Kubernetes tools installed." diff --git a/setup/modules/optional-Modules/apps/kate.sh b/setup/modules/optional-Modules/apps/kate.sh index c2d6594..43e80c6 100644 --- a/setup/modules/optional-Modules/apps/kate.sh +++ b/setup/modules/optional-Modules/apps/kate.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Kate..." sudo pacman -S --noconfirm --needed kate +log "Kate installed." diff --git a/setup/modules/optional-Modules/apps/kdenlive.sh b/setup/modules/optional-Modules/apps/kdenlive.sh index 0a49008..c4b8c12 100644 --- a/setup/modules/optional-Modules/apps/kdenlive.sh +++ b/setup/modules/optional-Modules/apps/kdenlive.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Kdenlive..." sudo pacman -S --noconfirm --needed kdenlive +log "Kdenlive installed." diff --git a/setup/modules/optional-Modules/apps/krita.sh b/setup/modules/optional-Modules/apps/krita.sh index 7cc95be..da4c0a0 100644 --- a/setup/modules/optional-Modules/apps/krita.sh +++ b/setup/modules/optional-Modules/apps/krita.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Krita..." sudo pacman -S --noconfirm --needed krita +log "Krita installed." diff --git a/setup/modules/optional-Modules/apps/lamco-rdp-server.sh b/setup/modules/optional-Modules/apps/lamco-rdp-server.sh index 5ada75b..40b19a4 100644 --- a/setup/modules/optional-Modules/apps/lamco-rdp-server.sh +++ b/setup/modules/optional-Modules/apps/lamco-rdp-server.sh @@ -1,16 +1,16 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" # lamco-rdp-server — native Wayland RDP server (Rust, H.264, VA-API) # Builds from AUR; requires cargo, clang, cmake, nasm (auto-pulled as makedeps) +log "Installing lamco-rdp-server (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm lamco-rdp-server -# Runs as a systemd user service (session-scoped, D-Bus activated) +log "Enabling lamco-rdp-server as user service..." systemctl --user enable lamco-rdp-server.service -echo "lamco-rdp-server enabled as a user service." -echo "Start it with: systemctl --user start lamco-rdp-server" -echo "Or launch the GUI tray: lamco-rdp-server-gui" -echo "" -echo "Optional: install a matching xdg-desktop-portal for your compositor:" -echo " xdg-desktop-portal-hyprland / -wlr / -gnome / -kde" +log "lamco-rdp-server enabled as a user service." +log "Start it with: systemctl --user start lamco-rdp-server" +log "Or launch the GUI tray: lamco-rdp-server-gui" +warn "Install a matching xdg-desktop-portal for your compositor: xdg-desktop-portal-hyprland / -wlr / -gnome / -kde" diff --git a/setup/modules/optional-Modules/apps/librewolf.sh b/setup/modules/optional-Modules/apps/librewolf.sh index 5ab3713..de8425e 100644 --- a/setup/modules/optional-Modules/apps/librewolf.sh +++ b/setup/modules/optional-Modules/apps/librewolf.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing LibreWolf (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm librewolf-bin +log "LibreWolf installed." diff --git a/setup/modules/optional-Modules/apps/llama-cpp.sh b/setup/modules/optional-Modules/apps/llama-cpp.sh index 034a1c2..5e12877 100755 --- a/setup/modules/optional-Modules/apps/llama-cpp.sh +++ b/setup/modules/optional-Modules/apps/llama-cpp.sh @@ -1,7 +1,10 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" # Provides standalone llama-cli, llama-server, and related tools. # Ollama bundles its own copy of llama.cpp internally — the two coexist # at the package level but share GPU resources at runtime. +log "Installing llama.cpp (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm llama-cpp +log "llama.cpp installed." diff --git a/setup/modules/optional-Modules/apps/lmms.sh b/setup/modules/optional-Modules/apps/lmms.sh index aef1a53..5de8a28 100644 --- a/setup/modules/optional-Modules/apps/lmms.sh +++ b/setup/modules/optional-Modules/apps/lmms.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing LMMS..." sudo pacman -S --noconfirm --needed lmms +log "LMMS installed." diff --git a/setup/modules/optional-Modules/apps/localsend.sh b/setup/modules/optional-Modules/apps/localsend.sh index ac5bb42..0454412 100644 --- a/setup/modules/optional-Modules/apps/localsend.sh +++ b/setup/modules/optional-Modules/apps/localsend.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing LocalSend (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm localsend +log "LocalSend installed." diff --git a/setup/modules/optional-Modules/apps/localtunnel.sh b/setup/modules/optional-Modules/apps/localtunnel.sh index 6039676..f719613 100755 --- a/setup/modules/optional-Modules/apps/localtunnel.sh +++ b/setup/modules/optional-Modules/apps/localtunnel.sh @@ -1,8 +1,11 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing LocalTunnel..." if command -v npm &>/dev/null; then npm install -g localtunnel else yay -S --answerdiff None --answerclean All --noconfirm localtunnel fi +log "LocalTunnel installed." diff --git a/setup/modules/optional-Modules/apps/min-browser.sh b/setup/modules/optional-Modules/apps/min-browser.sh index d309b43..9b30375 100644 --- a/setup/modules/optional-Modules/apps/min-browser.sh +++ b/setup/modules/optional-Modules/apps/min-browser.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Min browser (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm min +log "Min browser installed." diff --git a/setup/modules/optional-Modules/apps/mixxx.sh b/setup/modules/optional-Modules/apps/mixxx.sh index f4b999c..a9676a6 100644 --- a/setup/modules/optional-Modules/apps/mixxx.sh +++ b/setup/modules/optional-Modules/apps/mixxx.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Mixxx (DJ software)..." sudo pacman -S --noconfirm --needed mixxx +log "Mixxx installed." diff --git a/setup/modules/optional-Modules/apps/mysql.sh b/setup/modules/optional-Modules/apps/mysql.sh index bb706b4..7050df8 100755 --- a/setup/modules/optional-Modules/apps/mysql.sh +++ b/setup/modules/optional-Modules/apps/mysql.sh @@ -1,10 +1,17 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing MariaDB..." sudo pacman -S --noconfirm --needed mariadb if [[ ! -d /var/lib/mysql/mysql ]]; then + log "Initialising MariaDB data directory..." sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql +else + skip "MariaDB data directory already initialised." fi +log "Enabling MariaDB service..." sudo systemctl enable --now mariadb.service +log "MariaDB installed and running." diff --git a/setup/modules/optional-Modules/apps/networking-cli.sh b/setup/modules/optional-Modules/apps/networking-cli.sh index 6d80186..abcc491 100755 --- a/setup/modules/optional-Modules/apps/networking-cli.sh +++ b/setup/modules/optional-Modules/apps/networking-cli.sh @@ -1,6 +1,9 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing networking CLI tools..." sudo pacman -S --noconfirm --needed \ httpie ipcalc mitmproxy mtr net-tools nethogs \ nmap tcpdump traceroute +log "Networking CLI tools installed." diff --git a/setup/modules/optional-Modules/apps/nyxt.sh b/setup/modules/optional-Modules/apps/nyxt.sh index c77f8fa..6d258ec 100644 --- a/setup/modules/optional-Modules/apps/nyxt.sh +++ b/setup/modules/optional-Modules/apps/nyxt.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Nyxt browser (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm nyxt +log "Nyxt installed." diff --git a/setup/modules/optional-Modules/apps/ollama.sh b/setup/modules/optional-Modules/apps/ollama.sh index c911021..d201a12 100755 --- a/setup/modules/optional-Modules/apps/ollama.sh +++ b/setup/modules/optional-Modules/apps/ollama.sh @@ -1,12 +1,15 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" # GPU variants: install ollama-cuda (AUR) for NVIDIA or ollama-rocm (AUR) for AMD. # The base package runs on CPU and auto-uses GPU libs if present at runtime. +log "Installing Ollama..." sudo pacman -S --noconfirm --needed ollama +log "Enabling Ollama service..." sudo systemctl enable --now ollama.service -echo "Ollama running on http://localhost:11434" -echo "Pull models with: ollama pull " -echo "Note: if llama.cpp is also installed, avoid running both GPU-bound at once." +log "Ollama running on http://localhost:11434" +log "Pull models with: ollama pull " +warn "If llama.cpp is also installed, avoid running both GPU-bound at once." diff --git a/setup/modules/optional-Modules/apps/onlyoffice.sh b/setup/modules/optional-Modules/apps/onlyoffice.sh index 8c0d45e..e878198 100644 --- a/setup/modules/optional-Modules/apps/onlyoffice.sh +++ b/setup/modules/optional-Modules/apps/onlyoffice.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing OnlyOffice (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm onlyoffice-bin +log "OnlyOffice installed." diff --git a/setup/modules/optional-Modules/apps/open-webui.sh b/setup/modules/optional-Modules/apps/open-webui.sh index 0842c41..f0da8ec 100755 --- a/setup/modules/optional-Modules/apps/open-webui.sh +++ b/setup/modules/optional-Modules/apps/open-webui.sh @@ -1,10 +1,13 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" # Open WebUI — browser UI for Ollama and other LLM backends. # Ollama module should be installed first for full functionality. +log "Installing Open WebUI (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm open-webui +log "Enabling Open WebUI service..." sudo systemctl enable --now open-webui.service -echo "Open WebUI running at http://localhost:8080" +log "Open WebUI running at http://localhost:8080" diff --git a/setup/modules/optional-Modules/apps/openarena.sh b/setup/modules/optional-Modules/apps/openarena.sh index 7a32af2..f48385a 100644 --- a/setup/modules/optional-Modules/apps/openarena.sh +++ b/setup/modules/optional-Modules/apps/openarena.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing OpenArena..." sudo pacman -S --noconfirm --needed openarena +log "OpenArena installed." diff --git a/setup/modules/optional-Modules/apps/openshot.sh b/setup/modules/optional-Modules/apps/openshot.sh index 1d7cfc3..3101e14 100644 --- a/setup/modules/optional-Modules/apps/openshot.sh +++ b/setup/modules/optional-Modules/apps/openshot.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing OpenShot..." sudo pacman -S --noconfirm --needed openshot +log "OpenShot installed." diff --git a/setup/modules/optional-Modules/apps/podman.sh b/setup/modules/optional-Modules/apps/podman.sh index 418f76f..aad5f32 100644 --- a/setup/modules/optional-Modules/apps/podman.sh +++ b/setup/modules/optional-Modules/apps/podman.sh @@ -1,7 +1,10 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Podman (rootless containers, buildah, skopeo)..." sudo pacman -S --noconfirm --needed podman podman-compose buildah skopeo -# Enable lingering so rootless containers survive logout + +log "Enabling user lingering so rootless containers survive logout..." loginctl enable-linger "$USER" -echo "Podman installed (rootless, no daemon). User lingering enabled." +log "Podman installed (rootless, no daemon). User lingering enabled." diff --git a/setup/modules/optional-Modules/apps/prismlauncher.sh b/setup/modules/optional-Modules/apps/prismlauncher.sh index baa2faa..a72b539 100644 --- a/setup/modules/optional-Modules/apps/prismlauncher.sh +++ b/setup/modules/optional-Modules/apps/prismlauncher.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing PrismLauncher (Flatpak)..." flatpak install -y flathub org.prismlauncher.PrismLauncher +log "PrismLauncher installed." diff --git a/setup/modules/optional-Modules/apps/productivity.sh b/setup/modules/optional-Modules/apps/productivity.sh index 7030594..0535af4 100755 --- a/setup/modules/optional-Modules/apps/productivity.sh +++ b/setup/modules/optional-Modules/apps/productivity.sh @@ -1,6 +1,10 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing taskwarrior..." sudo pacman -S --noconfirm --needed task +log "Installing watson and jrnl (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm watson python-jrnl +log "Productivity tools installed." diff --git a/setup/modules/optional-Modules/apps/qemu.sh b/setup/modules/optional-Modules/apps/qemu.sh index d1aa336..bd267e1 100644 --- a/setup/modules/optional-Modules/apps/qemu.sh +++ b/setup/modules/optional-Modules/apps/qemu.sh @@ -1,7 +1,8 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" -# QEMU/KVM + libvirt stack + virt-manager GUI +log "Installing QEMU/KVM + libvirt stack + virt-manager..." sudo pacman -S --noconfirm --needed \ qemu-full \ libvirt \ @@ -13,10 +14,12 @@ sudo pacman -S --noconfirm --needed \ swtpm \ vde2 +log "Enabling libvirtd service..." sudo systemctl enable --now libvirtd.service -# Enable the default NAT network at libvirt startup +log "Configuring default NAT network for autostart..." sudo virsh net-autostart default 2>/dev/null || true +log "Adding $USER to libvirt and kvm groups..." sudo usermod -aG libvirt,kvm "$USER" -echo "QEMU/KVM installed. Log out and back in for group membership to take effect." +log "QEMU/KVM installed. Log out and back in for group membership to take effect." diff --git a/setup/modules/optional-Modules/apps/rdp-client.sh b/setup/modules/optional-Modules/apps/rdp-client.sh index 6add70c..7ac2885 100644 --- a/setup/modules/optional-Modules/apps/rdp-client.sh +++ b/setup/modules/optional-Modules/apps/rdp-client.sh @@ -1,10 +1,10 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" -# Remmina + protocol plugins +log "Installing Remmina RDP client with FreeRDP and VNC support..." sudo pacman -S --noconfirm --needed \ remmina \ freerdp \ libvncserver - -echo "Remmina installed with RDP (freerdp) and VNC support." +log "Remmina installed with RDP (freerdp) and VNC support." diff --git a/setup/modules/optional-Modules/apps/sauerbraten.sh b/setup/modules/optional-Modules/apps/sauerbraten.sh index d339a7c..6628d75 100644 --- a/setup/modules/optional-Modules/apps/sauerbraten.sh +++ b/setup/modules/optional-Modules/apps/sauerbraten.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Sauerbraten (Cube 2 FPS)..." sudo pacman -S --noconfirm --needed sauerbraten +log "Sauerbraten installed." diff --git a/setup/modules/optional-Modules/apps/shotcut.sh b/setup/modules/optional-Modules/apps/shotcut.sh index 975c809..7cb1d2f 100644 --- a/setup/modules/optional-Modules/apps/shotcut.sh +++ b/setup/modules/optional-Modules/apps/shotcut.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Shotcut..." sudo pacman -S --noconfirm --needed shotcut +log "Shotcut installed." diff --git a/setup/modules/optional-Modules/apps/sox.sh b/setup/modules/optional-Modules/apps/sox.sh index beb91a0..ead2ef2 100755 --- a/setup/modules/optional-Modules/apps/sox.sh +++ b/setup/modules/optional-Modules/apps/sox.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing SoX (audio processing toolkit)..." sudo pacman -S --noconfirm --needed sox +log "SoX installed." diff --git a/setup/modules/optional-Modules/apps/spotify.sh b/setup/modules/optional-Modules/apps/spotify.sh index 59f563f..e8f97a0 100644 --- a/setup/modules/optional-Modules/apps/spotify.sh +++ b/setup/modules/optional-Modules/apps/spotify.sh @@ -1,6 +1,14 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Spotify launcher..." sudo pacman -S --noconfirm --needed spotify-launcher + +log "Installing Spicetify CLI..." curl -fsSL https://raw.githubusercontent.com/spicetify/cli/main/install.sh | sh + +log "Deploying Spicetify config..." rm -rf ~/.config/spicetify cp -r ~/Dotfiles/desktopenvs/hyprland/spicetify ~/.config/ +log "Spotify installed with Spicetify theming." diff --git a/setup/modules/optional-Modules/apps/ssh-server.sh b/setup/modules/optional-Modules/apps/ssh-server.sh index 45f6019..b744a9c 100644 --- a/setup/modules/optional-Modules/apps/ssh-server.sh +++ b/setup/modules/optional-Modules/apps/ssh-server.sh @@ -1,14 +1,17 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing OpenSSH server..." sudo pacman -S --noconfirm --needed openssh -# Harden defaults: disable root login, enforce key auth only +log "Hardening SSH config (disable root login, enforce key auth)..." SSHD_CONF=/etc/ssh/sshd_config sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' "$SSHD_CONF" sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' "$SSHD_CONF" sudo sed -i 's/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/' "$SSHD_CONF" +log "Enabling sshd service..." sudo systemctl enable sshd.service -echo "SSH server installed and enabled (key auth only, root login disabled)." -echo "Add your public key to ~/.ssh/authorized_keys before first use." +log "SSH server installed and enabled (key auth only, root login disabled)." +warn "Add your public key to ~/.ssh/authorized_keys before first use." diff --git a/setup/modules/optional-Modules/apps/steam.sh b/setup/modules/optional-Modules/apps/steam.sh index b0ef32c..6babf77 100644 --- a/setup/modules/optional-Modules/apps/steam.sh +++ b/setup/modules/optional-Modules/apps/steam.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Steam..." sudo pacman -S --noconfirm --needed steam +log "Steam installed." diff --git a/setup/modules/optional-Modules/apps/stuntrally.sh b/setup/modules/optional-Modules/apps/stuntrally.sh index b7961e7..ba66aac 100644 --- a/setup/modules/optional-Modules/apps/stuntrally.sh +++ b/setup/modules/optional-Modules/apps/stuntrally.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Stunt Rally (Flatpak)..." flatpak install -y flathub io.github.stuntrally.StuntRally3 +log "Stunt Rally installed." diff --git a/setup/modules/optional-Modules/apps/tetris.sh b/setup/modules/optional-Modules/apps/tetris.sh index 040de3f..86c9e96 100644 --- a/setup/modules/optional-Modules/apps/tetris.sh +++ b/setup/modules/optional-Modules/apps/tetris.sh @@ -1,6 +1,10 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing bastet (Tetris CLI)..." sudo pacman -S --noconfirm --needed bastet +log "Installing vitetris (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm vitetris +log "Tetris CLI tools installed." diff --git a/setup/modules/optional-Modules/apps/timeshift.sh b/setup/modules/optional-Modules/apps/timeshift.sh index 6d07d1b..d877c40 100755 --- a/setup/modules/optional-Modules/apps/timeshift.sh +++ b/setup/modules/optional-Modules/apps/timeshift.sh @@ -1,9 +1,13 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Timeshift and cronie..." sudo pacman -S --noconfirm --needed timeshift cronie -# Auto-snapshot before pacman transactions +log "Installing timeshift-autosnap (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm timeshift-autosnap +log "Enabling cronie service..." sudo systemctl enable --now cronie.service +log "Timeshift installed with autosnap on pacman transactions." diff --git a/setup/modules/optional-Modules/apps/tlp.sh b/setup/modules/optional-Modules/apps/tlp.sh index 07ef5e4..567e9cd 100755 --- a/setup/modules/optional-Modules/apps/tlp.sh +++ b/setup/modules/optional-Modules/apps/tlp.sh @@ -1,8 +1,12 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing TLP (laptop power management)..." sudo pacman -S --noconfirm --needed tlp tlp-rdw +log "Enabling TLP and masking rfkill to avoid conflicts..." sudo systemctl enable --now tlp.service sudo systemctl enable NetworkManager-dispatcher.service sudo systemctl mask systemd-rfkill.service systemd-rfkill.socket +log "TLP installed." diff --git a/setup/modules/optional-Modules/apps/toot.sh b/setup/modules/optional-Modules/apps/toot.sh index 69b9b7b..4a78ace 100755 --- a/setup/modules/optional-Modules/apps/toot.sh +++ b/setup/modules/optional-Modules/apps/toot.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing toot (Mastodon CLI, AUR)..." yay -S --answerdiff None --answerclean All --noconfirm toot +log "toot installed." diff --git a/setup/modules/optional-Modules/apps/vesktop.sh b/setup/modules/optional-Modules/apps/vesktop.sh index c7e0792..e2153e0 100644 --- a/setup/modules/optional-Modules/apps/vesktop.sh +++ b/setup/modules/optional-Modules/apps/vesktop.sh @@ -1,6 +1,12 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Vesktop (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm vesktop + +log "Deploying Vencord config..." rm -rf ~/.config/Vencord ~/.config/vesktop cp -r ~/Dotfiles/desktopenvs/hyprland/Vencord ~/.config/ cp -r ~/Dotfiles/desktopenvs/hyprland/Vencord ~/.config/vesktop +log "Vesktop installed with Vencord theme." diff --git a/setup/modules/optional-Modules/apps/vintagestory.sh b/setup/modules/optional-Modules/apps/vintagestory.sh index 75d57da..1e74293 100644 --- a/setup/modules/optional-Modules/apps/vintagestory.sh +++ b/setup/modules/optional-Modules/apps/vintagestory.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Vintage Story (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm vintagestory +log "Vintage Story installed." diff --git a/setup/modules/optional-Modules/apps/vscodium.sh b/setup/modules/optional-Modules/apps/vscodium.sh index f537713..32e7d7d 100644 --- a/setup/modules/optional-Modules/apps/vscodium.sh +++ b/setup/modules/optional-Modules/apps/vscodium.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing VSCodium (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm vscodium-bin +log "VSCodium installed." diff --git a/setup/modules/optional-Modules/apps/wireshark.sh b/setup/modules/optional-Modules/apps/wireshark.sh index 1c41c94..4b38e48 100644 --- a/setup/modules/optional-Modules/apps/wireshark.sh +++ b/setup/modules/optional-Modules/apps/wireshark.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Wireshark..." sudo pacman -S --noconfirm --needed wireshark-qt +log "Wireshark installed." diff --git a/setup/modules/optional-Modules/apps/xournal.sh b/setup/modules/optional-Modules/apps/xournal.sh index 2209c4a..5cbf6b4 100644 --- a/setup/modules/optional-Modules/apps/xournal.sh +++ b/setup/modules/optional-Modules/apps/xournal.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing Xournal++ (PDF annotator)..." sudo pacman -S --noconfirm --needed xournalpp +log "Xournal++ installed." diff --git a/setup/modules/optional-Modules/apps/yt-dlp.sh b/setup/modules/optional-Modules/apps/yt-dlp.sh index 2b971b3..d0c558c 100755 --- a/setup/modules/optional-Modules/apps/yt-dlp.sh +++ b/setup/modules/optional-Modules/apps/yt-dlp.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" +log "Installing yt-dlp (media downloader)..." sudo pacman -S --noconfirm --needed yt-dlp +log "yt-dlp installed." diff --git a/setup/modules/optional-Modules/apps/zed.sh b/setup/modules/optional-Modules/apps/zed.sh index 4ca0fd9..0c38da1 100644 --- a/setup/modules/optional-Modules/apps/zed.sh +++ b/setup/modules/optional-Modules/apps/zed.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Zed editor..." sudo pacman -S --noconfirm --needed zed +log "Zed installed." diff --git a/setup/modules/optional-Modules/apps/zen-browser.sh b/setup/modules/optional-Modules/apps/zen-browser.sh index 87c99e5..f51e33d 100644 --- a/setup/modules/optional-Modules/apps/zen-browser.sh +++ b/setup/modules/optional-Modules/apps/zen-browser.sh @@ -1,3 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh" + +log "Installing Zen Browser (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm zen-browser-bin +log "Zen Browser installed." diff --git a/setup/modules/optional-Modules/python.sh b/setup/modules/optional-Modules/python.sh index ccd3906..d9b0310 100755 --- a/setup/modules/optional-Modules/python.sh +++ b/setup/modules/optional-Modules/python.sh @@ -1,2 +1,7 @@ #!/bin/bash +set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh" + +log "Installing Python tools..." sudo pacman -Syu python pyright python-pynvim python-pipx +log "Python tools installed." diff --git a/setup/modules/optional-Modules/wprs.sh b/setup/modules/optional-Modules/wprs.sh index 06bc546..6424b86 100755 --- a/setup/modules/optional-Modules/wprs.sh +++ b/setup/modules/optional-Modules/wprs.sh @@ -1,4 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh" +log "Installing wprs-git (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm wprs-git +log "wprs installed." diff --git a/setup/modules/optional-Modules/zfs.sh b/setup/modules/optional-Modules/zfs.sh index 9f8b564..fe8d38c 100755 --- a/setup/modules/optional-Modules/zfs.sh +++ b/setup/modules/optional-Modules/zfs.sh @@ -1,5 +1,7 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh" -echo "Installing ZFS kernel module..." +log "Installing ZFS kernel module (AUR)..." yay -S --answerdiff None --answerclean All --noconfirm zfs-dkms +log "ZFS installed." diff --git a/setup/modules/package-managers.sh b/setup/modules/package-managers.sh index 66cca03..f17ee79 100644 --- a/setup/modules/package-managers.sh +++ b/setup/modules/package-managers.sh @@ -1,35 +1,39 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/lib/logging.sh" +log "Updating system and installing Flatpak..." sudo pacman -Syu --noconfirm --needed flatpak # yay if ! command -v yay &>/dev/null; then - echo "Installing yay..." + log "Installing yay..." mkdir -p ~/install-tmp git clone https://aur.archlinux.org/yay.git ~/install-tmp/yay cd ~/install-tmp/yay makepkg -si --noconfirm cd ~ else - echo "yay already installed." + skip "yay already installed." fi # rustup / rust if ! command -v rustup &>/dev/null; then - echo "Installing rustup..." + log "Installing rustup..." sudo pacman -S --noconfirm --needed rustup fi rustup default stable # nvm + Node.js if ! command -v node &>/dev/null; then - echo "Installing nvm and Node.js 22..." + log "Installing nvm and Node.js 22..." if [ ! -d "$HOME/.nvm" ]; then curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash fi . "$HOME/.nvm/nvm.sh" nvm install 22 else - echo "Node.js already installed: $(node -v)" + skip "Node.js already installed: $(node -v)" fi + +log "Package managers ready." diff --git a/setup/modules/shell-setup.sh b/setup/modules/shell-setup.sh index 98ce7b5..9eb1ec8 100755 --- a/setup/modules/shell-setup.sh +++ b/setup/modules/shell-setup.sh @@ -1,18 +1,11 @@ #!/bin/bash set -euo pipefail +source "$(dirname "${BASH_SOURCE[0]}")/lib/logging.sh" -GREEN="\e[32m" -YELLOW="\e[33m" -RESET="\e[0m" - -log() { echo -e "${GREEN}✔ $1${RESET}"; } -skip() { echo -e "${YELLOW}↷ $1${RESET}"; } - -# Update system log "Updating system..." sudo pacman -Syu --noconfirm -# Install base packages +log "Installing base shell packages..." PACKAGES=(zsh neovim curl pyright bash atftp bash-language-server btop clang fastfetch fzf hyfetch lua-language-server micro nano pulsemixer yazi z qrencode distrobox dysk python python-pip glow) for pkg in "${PACKAGES[@]}"; do if ! pacman -Qi "$pkg" &>/dev/null; then @@ -55,10 +48,9 @@ else skip "Node.js already installed." fi -# git config +log "Configuring git..." git config --global core.editor nvim -# Dotfiles log "Deploying dotfiles..." mkdir -p ~/.config ~/Pictures @@ -69,9 +61,6 @@ ln -sf ~/Dotfiles/starship.toml ~/.config/starship.toml rm -rf ~/.config/micro cp -r ~/Dotfiles/micro ~/.config/ -# nvim — lazy.nvim bootstraps itself on first launch via init.lua -# airline cyberqueer theme lives at nvim/autoload/airline/themes/cyberqueer.vim -# and is discovered automatically via the rtp symlink below rm -rf ~/.config/nvim ln -sf ~/Dotfiles/nvim ~/.config/nvim @@ -91,7 +80,7 @@ else skip "Starship already installed." fi -# oh-my-zsh (RUNZSH=no prevents installer from spawning a new shell) +# oh-my-zsh if [ ! -d "$HOME/.oh-my-zsh" ]; then log "Installing oh-my-zsh..." RUNZSH=no CHSH=no sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" @@ -102,12 +91,14 @@ fi # oh-my-zsh plugins ZSH_CUSTOM="${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}" if [ ! -d "$ZSH_CUSTOM/plugins/zsh-syntax-highlighting" ]; then + log "Installing zsh-syntax-highlighting..." git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \ "$ZSH_CUSTOM/plugins/zsh-syntax-highlighting" else skip "zsh-syntax-highlighting already installed." fi if [ ! -d "$ZSH_CUSTOM/plugins/zsh-autosuggestions" ]; then + log "Installing zsh-autosuggestions..." git clone https://github.com/zsh-users/zsh-autosuggestions \ "$ZSH_CUSTOM/plugins/zsh-autosuggestions" else