feat(installer): add structured logging to all modules and installers
Add modules/lib/logging.sh with log(), skip(), warn(), err() helpers. Source it in all 84 scripts (core, DEs, optional apps) and replace bare echo calls with structured log messages. Add log file capture to install.sh. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>main
parent
242a544909
commit
0c88a09a0f
|
|
@ -1,4 +1,10 @@
|
||||||
#!/bin/bash
|
#!/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"
|
echo "Running Core installation Scripts"
|
||||||
bash ~/Dotfiles/setup/modules/package-managers.sh
|
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/zfs.sh
|
||||||
# bash ~/Dotfiles/setup/modules/optional-Modules/wprs.sh
|
# bash ~/Dotfiles/setup/modules/optional-Modules/wprs.sh
|
||||||
|
|
||||||
|
printf "\nDone. Log: %s\n" "$LOG"
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh"
|
||||||
|
|
||||||
echo "=== COSMIC Desktop Installer ==="
|
log "Installing COSMIC desktop..."
|
||||||
|
|
||||||
echo "[+] Installing COSMIC..."
|
|
||||||
sudo pacman -S --noconfirm --needed \
|
sudo pacman -S --noconfirm --needed \
|
||||||
cosmic \
|
cosmic \
|
||||||
pipewire wireplumber pipewire-alsa pipewire-jack pipewire-pulse \
|
pipewire wireplumber pipewire-alsa pipewire-jack pipewire-pulse \
|
||||||
|
|
@ -11,7 +10,7 @@ sudo pacman -S --noconfirm --needed \
|
||||||
bluez bluez-utils \
|
bluez bluez-utils \
|
||||||
flatpak
|
flatpak
|
||||||
|
|
||||||
echo "[+] Enabling services..."
|
log "Enabling services..."
|
||||||
# cosmic-greeter is COSMIC's own display manager; fall back to sddm if absent
|
# cosmic-greeter is COSMIC's own display manager; fall back to sddm if absent
|
||||||
if pacman -Qi cosmic-greeter &>/dev/null; then
|
if pacman -Qi cosmic-greeter &>/dev/null; then
|
||||||
sudo systemctl enable cosmic-greeter.service
|
sudo systemctl enable cosmic-greeter.service
|
||||||
|
|
@ -22,4 +21,4 @@ fi
|
||||||
sudo systemctl enable NetworkManager.service
|
sudo systemctl enable NetworkManager.service
|
||||||
sudo systemctl enable bluetooth.service
|
sudo systemctl enable bluetooth.service
|
||||||
|
|
||||||
echo "=== COSMIC installation complete. Reboot to start. ==="
|
log "COSMIC installation complete. Reboot to start."
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh"
|
||||||
|
|
||||||
echo "=== GNOME Installer ==="
|
log "Installing GNOME desktop..."
|
||||||
|
|
||||||
echo "[+] Installing GNOME..."
|
|
||||||
sudo pacman -S --noconfirm --needed \
|
sudo pacman -S --noconfirm --needed \
|
||||||
gnome \
|
gnome \
|
||||||
gnome-tweaks \
|
gnome-tweaks \
|
||||||
|
|
@ -12,8 +11,8 @@ sudo pacman -S --noconfirm --needed \
|
||||||
networkmanager \
|
networkmanager \
|
||||||
flatpak
|
flatpak
|
||||||
|
|
||||||
echo "[+] Enabling services..."
|
log "Enabling services..."
|
||||||
sudo systemctl enable gdm.service
|
sudo systemctl enable gdm.service
|
||||||
sudo systemctl enable NetworkManager.service
|
sudo systemctl enable NetworkManager.service
|
||||||
|
|
||||||
echo "=== GNOME installation complete. Reboot to start. ==="
|
log "GNOME installation complete. Reboot to start."
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,15 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
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
|
# 1. Update system and install Flatpak
|
||||||
echo "Updating system and installing Flatpak..."
|
log "Updating system and installing Flatpak..."
|
||||||
sudo pacman -Syu --noconfirm --needed flatpak
|
sudo pacman -Syu --noconfirm --needed flatpak
|
||||||
|
|
||||||
# 2. Install required packages
|
# 2. Install required packages
|
||||||
echo "Installing required packages..."
|
log "Installing required packages..."
|
||||||
sudo pacman -Syu --noconfirm --needed \
|
sudo pacman -Syu --noconfirm --needed \
|
||||||
hyprland hyprcursor wl-clipboard hyprpaper hyprlock wofi kitty dunst \
|
hyprland hyprcursor wl-clipboard hyprpaper hyprlock wofi kitty dunst \
|
||||||
nwg-dock-hyprland nwg-drawer nwg-menu nwg-look \
|
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
|
hyprpolkitagent pavucontrol playerctl wf-recorder sound-theme-freedesktop
|
||||||
|
|
||||||
# 3. Enable essential services
|
# 3. Enable essential services
|
||||||
echo "Enabling essential services..."
|
log "Enabling essential services..."
|
||||||
sudo systemctl enable NetworkManager.service
|
sudo systemctl enable NetworkManager.service
|
||||||
sudo systemctl disable getty@tty1.service || true
|
sudo systemctl disable getty@tty1.service || true
|
||||||
sudo systemctl enable ly@tty1.service
|
sudo systemctl enable ly@tty1.service
|
||||||
sudo systemctl enable udisks2.service
|
sudo systemctl enable udisks2.service
|
||||||
|
|
||||||
# 4. Install AUR packages
|
# 4. Install AUR packages
|
||||||
echo "Installing AUR packages..."
|
log "Installing AUR packages..."
|
||||||
rustup default stable
|
rustup default stable
|
||||||
yay -Syu --answerdiff None --answerclean All --noconfirm \
|
yay -Syu --answerdiff None --answerclean All --noconfirm \
|
||||||
hyprland-workspaces vicinae-bin bluetuith wvkbd iwmenu pinta \
|
hyprland-workspaces vicinae-bin bluetuith wvkbd iwmenu pinta \
|
||||||
|
|
@ -43,7 +44,7 @@ yay -Syu --answerdiff None --answerclean All --noconfirm \
|
||||||
wofi-calc bri chamel
|
wofi-calc bri chamel
|
||||||
|
|
||||||
# 5. EWW bar selection and compilation
|
# 5. EWW bar selection and compilation
|
||||||
echo "Setting up EWW bar..."
|
log "Setting up EWW bar..."
|
||||||
rm -rf ~/.config/eww
|
rm -rf ~/.config/eww
|
||||||
read -n1 -p "Install eww bar for PC, Notebook or Tablet [P/N/T]: " doit
|
read -n1 -p "Install eww bar for PC, Notebook or Tablet [P/N/T]: " doit
|
||||||
echo
|
echo
|
||||||
|
|
@ -51,10 +52,10 @@ case $doit in
|
||||||
n|N) cp -rf ~/Dotfiles/desktopenvs/hyprland/eww/ ~/.config/ ;;
|
n|N) cp -rf ~/Dotfiles/desktopenvs/hyprland/eww/ ~/.config/ ;;
|
||||||
p|P) cp -rf ~/Dotfiles/desktopenvs/hyprland/eww-nobattery/ ~/.config/eww ;;
|
p|P) cp -rf ~/Dotfiles/desktopenvs/hyprland/eww-nobattery/ ~/.config/eww ;;
|
||||||
t|T) cp -rf ~/Dotfiles/desktopenvs/hyprland/eww-touch/ ~/.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
|
esac
|
||||||
|
|
||||||
echo "Compiling EWW..."
|
log "Compiling EWW..."
|
||||||
mkdir -p ~/install-tmp
|
mkdir -p ~/install-tmp
|
||||||
cd ~/install-tmp
|
cd ~/install-tmp
|
||||||
git clone https://github.com/elkowar/eww
|
git clone https://github.com/elkowar/eww
|
||||||
|
|
@ -65,6 +66,7 @@ sudo cp target/release/eww /usr/bin/
|
||||||
cd ~
|
cd ~
|
||||||
|
|
||||||
# 6. Theme and icon setup
|
# 6. Theme and icon setup
|
||||||
|
log "Installing themes and icons..."
|
||||||
sudo cp -r ~/Dotfiles/gtk-themes/cyberqueer /usr/share/themes
|
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 ~/Dotfiles/desktopenvs/hyprland/btop/themes/cyberqueer.theme /usr/share/btop/themes
|
||||||
sudo cp -f ~/Dotfiles/etc-ly-config.ini /etc/ly/config.ini
|
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
|
sudo ln -sf /usr/bin/ksshaskpass /usr/lib/ssh/ssh-askpass
|
||||||
|
|
||||||
# 7. Cursor setup
|
# 7. Cursor setup
|
||||||
|
log "Installing cursor theme..."
|
||||||
mkdir -p ~/.icons
|
mkdir -p ~/.icons
|
||||||
wget -O ~/install-tmp/Nordzy-cursors-lefthand.tar.gz \
|
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
|
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/
|
tar -zxf ~/install-tmp/Nordzy-cursors-lefthand.tar.gz -C ~/.icons/
|
||||||
|
|
||||||
# 8. Enable Bluetooth and wireless services
|
# 8. Enable Bluetooth and wireless services
|
||||||
|
log "Enabling Bluetooth and wireless services..."
|
||||||
sudo systemctl enable bluez
|
sudo systemctl enable bluez
|
||||||
sudo systemctl enable bluetooth.service
|
sudo systemctl enable bluetooth.service
|
||||||
sudo systemctl enable iwd.service
|
sudo systemctl enable iwd.service
|
||||||
|
|
@ -88,7 +92,7 @@ sudo systemctl enable iwd.service
|
||||||
# hyprpm add https://github.com/hyprwm/hyprland-plugins
|
# hyprpm add https://github.com/hyprwm/hyprland-plugins
|
||||||
|
|
||||||
# 10. Copy configs
|
# 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)
|
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
|
for cfg in "${CONFIGS[@]}"; do
|
||||||
rm -rf ~/.config/"$cfg"
|
rm -rf ~/.config/"$cfg"
|
||||||
|
|
@ -99,16 +103,18 @@ cp ~/Dotfiles/desktopenvs/hyprland/hypr-usr/* ~/.config/
|
||||||
cp ~/Dotfiles/colors.conf ~/.config/colors.conf
|
cp ~/Dotfiles/colors.conf ~/.config/colors.conf
|
||||||
|
|
||||||
# 11. Wallpaper and resources
|
# 11. Wallpaper and resources
|
||||||
|
log "Copying wallpaper and resources..."
|
||||||
mkdir -p ~/Pictures
|
mkdir -p ~/Pictures
|
||||||
cp ~/Dotfiles/resources/fflogo.svg ~/Pictures/fflogo.svg
|
cp ~/Dotfiles/resources/fflogo.svg ~/Pictures/fflogo.svg
|
||||||
wget "https://cloud.abdelbaki.eu/apps/theming/image/background?v=15" -O ~/Pictures/background.jpg
|
wget "https://cloud.abdelbaki.eu/apps/theming/image/background?v=15" -O ~/Pictures/background.jpg
|
||||||
|
|
||||||
# 12. Python venv for scripts
|
# 12. Python venv for scripts
|
||||||
|
log "Setting up Python venv for scripts..."
|
||||||
python -m venv ~/.config/python-script
|
python -m venv ~/.config/python-script
|
||||||
~/.config/python-script/bin/pip install speedtest-cli requests pint simpleeval parsedatetime
|
~/.config/python-script/bin/pip install speedtest-cli requests pint simpleeval parsedatetime
|
||||||
|
|
||||||
# 13. Udiskie icon fix
|
# 13. Udiskie icon fix
|
||||||
echo "Applying Udiskie icon fix..."
|
log "Applying Udiskie icon fix..."
|
||||||
PAPIRUS_DIR="/usr/share/icons/Papirus-Dark/status"
|
PAPIRUS_DIR="/usr/share/icons/Papirus-Dark/status"
|
||||||
HICOLOR_DIR="/usr/share/icons/hicolor/scalable/status"
|
HICOLOR_DIR="/usr/share/icons/hicolor/scalable/status"
|
||||||
if [ -d "$PAPIRUS_DIR" ]; then
|
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 ln -sf "$PAPIRUS_DIR/checkbox-unchecked.svg" "$HICOLOR_DIR/udiskie-checkbox-unchecked.svg"
|
||||||
sudo gtk-update-icon-cache -f -t /usr/share/icons/hicolor
|
sudo gtk-update-icon-cache -f -t /usr/share/icons/hicolor
|
||||||
else
|
else
|
||||||
echo "Papirus-Dark not found — skipping udiskie icon fix."
|
warn "Papirus-Dark not found — skipping udiskie icon fix."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 14. Enable udiskie
|
# 14. Enable udiskie
|
||||||
|
log "Enabling udiskie service..."
|
||||||
sudo systemctl enable udiskie.service
|
sudo systemctl enable udiskie.service
|
||||||
sudo systemctl start udiskie.service
|
sudo systemctl start udiskie.service
|
||||||
|
|
||||||
# 15. Install config updater and theme script
|
# 15. Install config updater and theme script
|
||||||
|
log "Installing config updater and theme script..."
|
||||||
mkdir -p ~/.config/config-updater
|
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/updater.conf ~/.config/config-updater/updater.conf
|
||||||
ln -sf ~/Dotfiles/desktopenvs/hyprland/config-updater/update-configs.sh ~/update-configs.sh
|
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 \
|
# | grep -Po '"browser_download_url": "\K[^"]+' | grep WallRizz)" | tar -xz \
|
||||||
# && sudo mv WallRizz /usr/bin/
|
# && sudo mv WallRizz /usr/bin/
|
||||||
|
|
||||||
echo "=== Hyprland installation complete. Reboot to start. ==="
|
log "Hyprland installation complete. Reboot to start."
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,15 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
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
|
# 1. Update system and install Flatpak
|
||||||
echo "Updating system and installing Flatpak..."
|
log "Updating system and installing Flatpak..."
|
||||||
sudo pacman -Syu --noconfirm --needed flatpak
|
sudo pacman -Syu --noconfirm --needed flatpak
|
||||||
|
|
||||||
# 2. Install required packages
|
# 2. Install required packages
|
||||||
echo "Installing required packages..."
|
log "Installing required packages..."
|
||||||
sudo pacman -Syu --noconfirm --needed \
|
sudo pacman -Syu --noconfirm --needed \
|
||||||
hyprland hyprcursor wl-clipboard hyprpaper hyprlock wofi kitty dunst \
|
hyprland hyprcursor wl-clipboard hyprpaper hyprlock wofi kitty dunst \
|
||||||
nwg-dock-hyprland nwg-drawer nwg-menu nwg-look \
|
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
|
hyprpolkitagent pavucontrol playerctl wf-recorder sound-theme-freedesktop
|
||||||
|
|
||||||
# 3. Enable essential services
|
# 3. Enable essential services
|
||||||
echo "Enabling essential services..."
|
log "Enabling essential services..."
|
||||||
sudo systemctl enable NetworkManager.service
|
sudo systemctl enable NetworkManager.service
|
||||||
sudo systemctl disable getty@tty1.service || true
|
sudo systemctl disable getty@tty1.service || true
|
||||||
sudo systemctl enable ly@tty1.service
|
sudo systemctl enable ly@tty1.service
|
||||||
sudo systemctl enable udisks2.service
|
sudo systemctl enable udisks2.service
|
||||||
|
|
||||||
# 4. Install AUR packages
|
# 4. Install AUR packages
|
||||||
echo "Installing AUR packages..."
|
log "Installing AUR packages..."
|
||||||
rustup default stable
|
rustup default stable
|
||||||
yay -Syu --answerdiff None --answerclean All --noconfirm \
|
yay -Syu --answerdiff None --answerclean All --noconfirm \
|
||||||
hyprland-workspaces vicinae-bin bluetuith wvkbd iwmenu pinta \
|
hyprland-workspaces vicinae-bin bluetuith wvkbd iwmenu pinta \
|
||||||
|
|
@ -43,7 +44,7 @@ yay -Syu --answerdiff None --answerclean All --noconfirm \
|
||||||
wofi-calc bri chamel
|
wofi-calc bri chamel
|
||||||
|
|
||||||
# 5. EWW bar selection and compilation
|
# 5. EWW bar selection and compilation
|
||||||
echo "Setting up EWW bar..."
|
log "Setting up EWW bar..."
|
||||||
rm -rf ~/.config/eww
|
rm -rf ~/.config/eww
|
||||||
read -n1 -p "Install eww bar for PC, Notebook or Tablet [P/N/T]: " doit
|
read -n1 -p "Install eww bar for PC, Notebook or Tablet [P/N/T]: " doit
|
||||||
echo
|
echo
|
||||||
|
|
@ -51,10 +52,10 @@ case $doit in
|
||||||
n|N) cp -rf ~/Dotfiles/desktopenvs/hyprlua/eww/ ~/.config/ ;;
|
n|N) cp -rf ~/Dotfiles/desktopenvs/hyprlua/eww/ ~/.config/ ;;
|
||||||
p|P) cp -rf ~/Dotfiles/desktopenvs/hyprlua/eww-nobattery/ ~/.config/eww ;;
|
p|P) cp -rf ~/Dotfiles/desktopenvs/hyprlua/eww-nobattery/ ~/.config/eww ;;
|
||||||
t|T) cp -rf ~/Dotfiles/desktopenvs/hyprlua/eww-touch/ ~/.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
|
esac
|
||||||
|
|
||||||
echo "Compiling EWW..."
|
log "Compiling EWW..."
|
||||||
mkdir -p ~/install-tmp
|
mkdir -p ~/install-tmp
|
||||||
cd ~/install-tmp
|
cd ~/install-tmp
|
||||||
git clone https://github.com/elkowar/eww
|
git clone https://github.com/elkowar/eww
|
||||||
|
|
@ -65,6 +66,7 @@ sudo cp target/release/eww /usr/bin/
|
||||||
cd ~
|
cd ~
|
||||||
|
|
||||||
# 6. Theme and icon setup
|
# 6. Theme and icon setup
|
||||||
|
log "Installing themes and icons..."
|
||||||
sudo cp -r ~/Dotfiles/gtk-themes/cyberqueer /usr/share/themes
|
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 ~/Dotfiles/desktopenvs/hyprlua/btop/themes/cyberqueer.theme /usr/share/btop/themes
|
||||||
sudo cp -f ~/Dotfiles/etc-ly-config.ini /etc/ly/config.ini
|
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'
|
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
|
||||||
|
|
||||||
# 7. Cursor setup
|
# 7. Cursor setup
|
||||||
|
log "Installing cursor theme..."
|
||||||
mkdir -p ~/.icons
|
mkdir -p ~/.icons
|
||||||
wget -O ~/install-tmp/Nordzy-cursors-lefthand.tar.gz \
|
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
|
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/
|
tar -zxf ~/install-tmp/Nordzy-cursors-lefthand.tar.gz -C ~/.icons/
|
||||||
|
|
||||||
# 8. Enable Bluetooth and wireless services
|
# 8. Enable Bluetooth and wireless services
|
||||||
|
log "Enabling Bluetooth and wireless services..."
|
||||||
sudo systemctl enable bluez
|
sudo systemctl enable bluez
|
||||||
sudo systemctl enable bluetooth.service
|
sudo systemctl enable bluetooth.service
|
||||||
sudo systemctl enable iwd.service
|
sudo systemctl enable iwd.service
|
||||||
|
|
@ -90,7 +94,7 @@ sudo systemctl enable iwd.service
|
||||||
# hyprpm add https://github.com/hyprwm/hyprland-plugins
|
# hyprpm add https://github.com/hyprwm/hyprland-plugins
|
||||||
|
|
||||||
# 10. Copy configs
|
# 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)
|
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
|
for cfg in "${CONFIGS[@]}"; do
|
||||||
rm -rf ~/.config/"$cfg"
|
rm -rf ~/.config/"$cfg"
|
||||||
|
|
@ -105,16 +109,18 @@ cp ~/Dotfiles/desktopenvs/hyprlua/hypr-usr/wallpaper.conf ~/.config/
|
||||||
cp ~/Dotfiles/colors.conf ~/.config/colors.conf
|
cp ~/Dotfiles/colors.conf ~/.config/colors.conf
|
||||||
|
|
||||||
# 11. Wallpaper and resources
|
# 11. Wallpaper and resources
|
||||||
|
log "Copying wallpaper and resources..."
|
||||||
mkdir -p ~/Pictures
|
mkdir -p ~/Pictures
|
||||||
cp ~/Dotfiles/resources/fflogo.svg ~/Pictures/fflogo.svg
|
cp ~/Dotfiles/resources/fflogo.svg ~/Pictures/fflogo.svg
|
||||||
wget "https://cloud.abdelbaki.eu/apps/theming/image/background?v=15" -O ~/Pictures/background.jpg
|
wget "https://cloud.abdelbaki.eu/apps/theming/image/background?v=15" -O ~/Pictures/background.jpg
|
||||||
|
|
||||||
# 12. Python venv for scripts
|
# 12. Python venv for scripts
|
||||||
|
log "Setting up Python venv for scripts..."
|
||||||
python -m venv ~/.config/python-script
|
python -m venv ~/.config/python-script
|
||||||
~/.config/python-script/bin/pip install speedtest-cli requests pint simpleeval parsedatetime
|
~/.config/python-script/bin/pip install speedtest-cli requests pint simpleeval parsedatetime
|
||||||
|
|
||||||
# 13. Udiskie icon fix
|
# 13. Udiskie icon fix
|
||||||
echo "Applying Udiskie icon fix..."
|
log "Applying Udiskie icon fix..."
|
||||||
PAPIRUS_DIR="/usr/share/icons/Papirus-Dark/status"
|
PAPIRUS_DIR="/usr/share/icons/Papirus-Dark/status"
|
||||||
HICOLOR_DIR="/usr/share/icons/hicolor/scalable/status"
|
HICOLOR_DIR="/usr/share/icons/hicolor/scalable/status"
|
||||||
if [ -d "$PAPIRUS_DIR" ]; then
|
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 ln -sf "$PAPIRUS_DIR/checkbox-unchecked.svg" "$HICOLOR_DIR/udiskie-checkbox-unchecked.svg"
|
||||||
sudo gtk-update-icon-cache -f -t /usr/share/icons/hicolor
|
sudo gtk-update-icon-cache -f -t /usr/share/icons/hicolor
|
||||||
else
|
else
|
||||||
echo "Papirus-Dark not found — skipping udiskie icon fix."
|
warn "Papirus-Dark not found — skipping udiskie icon fix."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 14. Enable udiskie
|
# 14. Enable udiskie
|
||||||
|
log "Enabling udiskie service..."
|
||||||
sudo systemctl enable udiskie.service
|
sudo systemctl enable udiskie.service
|
||||||
sudo systemctl start udiskie.service
|
sudo systemctl start udiskie.service
|
||||||
|
|
||||||
# 15. Install config updater and theme script
|
# 15. Install config updater and theme script
|
||||||
|
log "Installing config updater and theme script..."
|
||||||
mkdir -p ~/.config/config-updater
|
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/updater.conf ~/.config/config-updater/updater.conf
|
||||||
ln -sf ~/Dotfiles/desktopenvs/hyprlua/config-updater/update-configs.sh ~/update-configs.sh
|
ln -sf ~/Dotfiles/desktopenvs/hyprlua/config-updater/update-configs.sh ~/update-configs.sh
|
||||||
cp ~/Dotfiles/apply-theme.sh ~/apply-theme.sh
|
cp ~/Dotfiles/apply-theme.sh ~/apply-theme.sh
|
||||||
chmod +x ~/apply-theme.sh
|
chmod +x ~/apply-theme.sh
|
||||||
|
|
||||||
echo "=== HyprLua installation complete. Reboot to start. ==="
|
log "HyprLua installation complete. Reboot to start."
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh"
|
||||||
|
|
||||||
echo "=== KDE Plasma Installer ==="
|
log "Installing KDE Plasma desktop..."
|
||||||
|
|
||||||
echo "[+] Installing KDE Plasma..."
|
|
||||||
sudo pacman -S --noconfirm --needed \
|
sudo pacman -S --noconfirm --needed \
|
||||||
plasma-meta \
|
plasma-meta \
|
||||||
sddm sddm-kcm \
|
sddm sddm-kcm \
|
||||||
|
|
@ -16,9 +15,9 @@ sudo pacman -S --noconfirm --needed \
|
||||||
power-profiles-daemon \
|
power-profiles-daemon \
|
||||||
flatpak
|
flatpak
|
||||||
|
|
||||||
echo "[+] Enabling services..."
|
log "Enabling services..."
|
||||||
sudo systemctl enable sddm.service
|
sudo systemctl enable sddm.service
|
||||||
sudo systemctl enable NetworkManager.service
|
sudo systemctl enable NetworkManager.service
|
||||||
sudo systemctl enable bluetooth.service
|
sudo systemctl enable bluetooth.service
|
||||||
|
|
||||||
echo "=== KDE Plasma installation complete. Reboot to start. ==="
|
log "KDE Plasma installation complete. Reboot to start."
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh"
|
||||||
|
|
||||||
echo "=== LXQt Installer ==="
|
log "Installing LXQt desktop..."
|
||||||
|
|
||||||
echo "[+] Installing LXQt..."
|
|
||||||
sudo pacman -S --noconfirm --needed \
|
sudo pacman -S --noconfirm --needed \
|
||||||
lxqt \
|
lxqt \
|
||||||
openbox obconf-qt \
|
openbox obconf-qt \
|
||||||
|
|
@ -17,9 +16,9 @@ sudo pacman -S --noconfirm --needed \
|
||||||
gvfs gvfs-smb gvfs-mtp \
|
gvfs gvfs-smb gvfs-mtp \
|
||||||
flatpak
|
flatpak
|
||||||
|
|
||||||
echo "[+] Enabling services..."
|
log "Enabling services..."
|
||||||
sudo systemctl enable sddm.service
|
sudo systemctl enable sddm.service
|
||||||
sudo systemctl enable NetworkManager.service
|
sudo systemctl enable NetworkManager.service
|
||||||
sudo systemctl enable bluetooth.service
|
sudo systemctl enable bluetooth.service
|
||||||
|
|
||||||
echo "=== LXQt installation complete. Reboot to start. ==="
|
log "LXQt installation complete. Reboot to start."
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh"
|
||||||
|
|
||||||
echo "=== Sway Environment Installer ==="
|
log "Starting Sway installer..."
|
||||||
|
|
||||||
# 1. Install packages
|
# 1. Install packages
|
||||||
echo "Installing required packages..."
|
log "Installing required packages..."
|
||||||
sudo pacman -Syu --noconfirm --needed \
|
sudo pacman -Syu --noconfirm --needed \
|
||||||
brightnessctl btop dmenu foot glfw grim \
|
brightnessctl btop dmenu foot glfw grim \
|
||||||
greetd-tuigreet gst-plugin-pipewire imagemagick iwd libpulse \
|
greetd-tuigreet gst-plugin-pipewire imagemagick iwd libpulse \
|
||||||
|
|
@ -18,15 +19,16 @@ sudo pacman -Syu --noconfirm --needed \
|
||||||
zram-generator
|
zram-generator
|
||||||
|
|
||||||
# 2. Enable services
|
# 2. Enable services
|
||||||
echo "Enabling services..."
|
log "Enabling services..."
|
||||||
sudo systemctl enable NetworkManager.service
|
sudo systemctl enable NetworkManager.service
|
||||||
|
|
||||||
# 3. greetd config
|
# 3. greetd config
|
||||||
|
log "Deploying greetd config..."
|
||||||
sudo cp -f ~/Dotfiles/desktopenvs/hyprland/greetd-tuigreet/config.toml /etc/greetd/config.toml
|
sudo cp -f ~/Dotfiles/desktopenvs/hyprland/greetd-tuigreet/config.toml /etc/greetd/config.toml
|
||||||
sudo systemctl enable greetd.service
|
sudo systemctl enable greetd.service
|
||||||
|
|
||||||
# 4. Copy DE configs
|
# 4. Copy DE configs
|
||||||
echo "Copying configs..."
|
log "Copying Sway configs..."
|
||||||
CONFIGS=(sway alacritty)
|
CONFIGS=(sway alacritty)
|
||||||
for cfg in "${CONFIGS[@]}"; do
|
for cfg in "${CONFIGS[@]}"; do
|
||||||
rm -rf ~/.config/"$cfg"
|
rm -rf ~/.config/"$cfg"
|
||||||
|
|
@ -37,4 +39,4 @@ cp ~/Dotfiles/colors.conf ~/.config/colors.conf
|
||||||
cp ~/Dotfiles/apply-theme.sh ~/apply-theme.sh
|
cp ~/Dotfiles/apply-theme.sh ~/apply-theme.sh
|
||||||
chmod +x ~/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."
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../lib/logging.sh"
|
||||||
|
|
||||||
echo "=== XFCE Installer ==="
|
log "Installing XFCE desktop..."
|
||||||
|
|
||||||
echo "[+] Installing XFCE..."
|
|
||||||
sudo pacman -S --noconfirm --needed \
|
sudo pacman -S --noconfirm --needed \
|
||||||
xfce4 xfce4-goodies \
|
xfce4 xfce4-goodies \
|
||||||
lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings \
|
lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings \
|
||||||
|
|
@ -15,9 +14,9 @@ sudo pacman -S --noconfirm --needed \
|
||||||
gvfs gvfs-smb gvfs-mtp \
|
gvfs gvfs-smb gvfs-mtp \
|
||||||
flatpak
|
flatpak
|
||||||
|
|
||||||
echo "[+] Enabling services..."
|
log "Enabling services..."
|
||||||
sudo systemctl enable lightdm.service
|
sudo systemctl enable lightdm.service
|
||||||
sudo systemctl enable NetworkManager.service
|
sudo systemctl enable NetworkManager.service
|
||||||
sudo systemctl enable bluetooth.service
|
sudo systemctl enable bluetooth.service
|
||||||
|
|
||||||
echo "=== XFCE installation complete. Reboot to start. ==="
|
log "XFCE installation complete. Reboot to start."
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing core packages..."
|
||||||
sudo pacman -Syu --noconfirm --needed \
|
sudo pacman -Syu --noconfirm --needed \
|
||||||
7zip arch-install-scripts atftp atool \
|
7zip arch-install-scripts atftp atool \
|
||||||
base base-devel bc bind bluez btrfs-progs btop \
|
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 \
|
vim vnstat wget whois wireplumber wireless_tools wpa_supplicant wprs \
|
||||||
yazi zip unzip zram-generator
|
yazi zip unzip zram-generator
|
||||||
|
|
||||||
|
log "Installing AUR packages..."
|
||||||
yay -S --aur --noconfirm --needed pamtester
|
yay -S --aur --noconfirm --needed pamtester
|
||||||
|
|
||||||
|
log "Core packages installed."
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,21 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/lib/logging.sh"
|
||||||
|
|
||||||
#networkmanager setup
|
log "Enabling NetworkManager..."
|
||||||
echo "enabling NetworkManager"
|
|
||||||
sudo systemctl enable NetworkManager.service
|
sudo systemctl enable NetworkManager.service
|
||||||
|
|
||||||
#cron setup
|
log "Enabling cronie..."
|
||||||
echo "enabling cronie"
|
|
||||||
sudo systemctl enable cronie.service
|
sudo systemctl enable cronie.service
|
||||||
|
|
||||||
#greetd setup
|
log "Deploying greetd config..."
|
||||||
echo "Installing greetd"
|
|
||||||
sudo cp -f ~/Dotfiles/desktopenvs/hyprland/greetd-tuigreet/config.toml /etc/greetd/config.toml
|
sudo cp -f ~/Dotfiles/desktopenvs/hyprland/greetd-tuigreet/config.toml /etc/greetd/config.toml
|
||||||
sudo systemctl enable greetd.service
|
sudo systemctl enable greetd.service
|
||||||
|
|
||||||
|
log "Enabling fail2ban..."
|
||||||
sudo systemctl enable fail2ban.service
|
sudo systemctl enable fail2ban.service
|
||||||
|
|
||||||
|
log "Enabling udisks2..."
|
||||||
sudo systemctl enable udisks2.service
|
sudo systemctl enable udisks2.service
|
||||||
|
|
||||||
|
log "Core services enabled."
|
||||||
|
|
|
||||||
|
|
@ -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; }
|
||||||
|
|
@ -1,24 +1,33 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing anti-malware tools (clamav, clamtk, rkhunter)..."
|
||||||
sudo pacman -S --noconfirm --needed \
|
sudo pacman -S --noconfirm --needed \
|
||||||
clamav clamtk rkhunter
|
clamav clamtk rkhunter
|
||||||
|
|
||||||
|
log "Installing chkrootkit (AUR)..."
|
||||||
yay -S --aur --noconfirm --needed chkrootkit
|
yay -S --aur --noconfirm --needed chkrootkit
|
||||||
|
|
||||||
# initialise ClamAV database (first run)
|
# initialise ClamAV database (first run)
|
||||||
if [[ ! -f /var/lib/clamav/main.cvd ]] && [[ ! -f /var/lib/clamav/main.cld ]]; then
|
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
|
sudo freshclam
|
||||||
|
else
|
||||||
|
skip "ClamAV database already present."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# cron job: update virus definitions twice a day
|
# cron job: update virus definitions twice a day
|
||||||
CRON_FILE=/etc/cron.d/freshclam
|
CRON_FILE=/etc/cron.d/freshclam
|
||||||
if [[ ! -f "$CRON_FILE" ]]; then
|
if [[ ! -f "$CRON_FILE" ]]; then
|
||||||
echo "Installing freshclam cron job..."
|
log "Installing freshclam cron job (twice daily)..."
|
||||||
sudo tee "$CRON_FILE" > /dev/null <<'EOF'
|
sudo tee "$CRON_FILE" > /dev/null <<'EOF'
|
||||||
# Update ClamAV virus definitions twice a day
|
# Update ClamAV virus definitions twice a day
|
||||||
0 */12 * * * root /usr/bin/freshclam --quiet 2>/dev/null
|
0 */12 * * * root /usr/bin/freshclam --quiet 2>/dev/null
|
||||||
EOF
|
EOF
|
||||||
sudo chmod 644 "$CRON_FILE"
|
sudo chmod 644 "$CRON_FILE"
|
||||||
|
else
|
||||||
|
skip "freshclam cron job already configured."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
log "Anti-malware tools installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Ardour (professional DAW)..."
|
||||||
sudo pacman -S --noconfirm --needed ardour
|
sudo pacman -S --noconfirm --needed ardour
|
||||||
|
log "Ardour installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Audacity (audio editor)..."
|
||||||
sudo pacman -S --noconfirm --needed audacity
|
sudo pacman -S --noconfirm --needed audacity
|
||||||
|
log "Audacity installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Blender and POV-Ray..."
|
||||||
sudo pacman -S --noconfirm --needed blender povray
|
sudo pacman -S --noconfirm --needed blender povray
|
||||||
|
log "Blender and POV-Ray installed."
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing btrfs-progs..."
|
||||||
sudo pacman -S --noconfirm --needed btrfs-progs
|
sudo pacman -S --noconfirm --needed btrfs-progs
|
||||||
|
|
||||||
|
log "Installing butter (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm butter
|
yay -S --answerdiff None --answerclean All --noconfirm butter
|
||||||
|
log "butter installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Cecilia (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm cecilia
|
yay -S --answerdiff None --answerclean All --noconfirm cecilia
|
||||||
|
log "Cecilia installed."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Chromium..."
|
||||||
sudo pacman -S --noconfirm --needed chromium
|
sudo pacman -S --noconfirm --needed chromium
|
||||||
|
log "Chromium installed."
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,13 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Claude Code via npm..."
|
||||||
if ! command -v npm &>/dev/null; then
|
if ! command -v npm &>/dev/null; then
|
||||||
|
log "Sourcing nvm to get npm..."
|
||||||
export NVM_DIR="$HOME/.nvm"
|
export NVM_DIR="$HOME/.nvm"
|
||||||
[[ -s "$NVM_DIR/nvm.sh" ]] && source "$NVM_DIR/nvm.sh"
|
[[ -s "$NVM_DIR/nvm.sh" ]] && source "$NVM_DIR/nvm.sh"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
npm install -g @anthropic-ai/claude-code
|
npm install -g @anthropic-ai/claude-code
|
||||||
|
log "Claude Code installed."
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,19 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
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 \
|
sudo pacman -S --noconfirm --needed \
|
||||||
cockpit \
|
cockpit \
|
||||||
cockpit-pcp \
|
cockpit-pcp \
|
||||||
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 \
|
yay -S --answerdiff None --answerclean All --noconfirm \
|
||||||
cockpit-machines \
|
cockpit-machines \
|
||||||
cockpit-podman \
|
cockpit-podman \
|
||||||
cockpit-navigator
|
cockpit-navigator
|
||||||
|
|
||||||
|
log "Enabling Cockpit socket..."
|
||||||
sudo systemctl enable 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"
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Code::Blocks..."
|
||||||
sudo pacman -S --noconfirm --needed codeblocks
|
sudo pacman -S --noconfirm --needed codeblocks
|
||||||
|
log "Code::Blocks installed."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing croc (file transfer)..."
|
||||||
sudo pacman -S --noconfirm --needed croc
|
sudo pacman -S --noconfirm --needed croc
|
||||||
|
log "croc installed."
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing pgcli..."
|
||||||
sudo pacman -S --noconfirm --needed pgcli
|
sudo pacman -S --noconfirm --needed pgcli
|
||||||
|
|
||||||
|
log "Installing mycli (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm mycli
|
yay -S --answerdiff None --answerclean All --noconfirm mycli
|
||||||
|
log "DB clients installed."
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing ddrescue..."
|
||||||
sudo pacman -S --noconfirm --needed ddrescue
|
sudo pacman -S --noconfirm --needed ddrescue
|
||||||
|
|
||||||
|
log "Installing f3 (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm f3
|
yay -S --answerdiff None --answerclean All --noconfirm f3
|
||||||
|
log "Disk recovery tools installed."
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,14 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
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
|
sudo pacman -S --noconfirm --needed docker docker-compose
|
||||||
|
|
||||||
|
log "Enabling Docker service..."
|
||||||
sudo systemctl enable docker.service
|
sudo systemctl enable docker.service
|
||||||
|
|
||||||
|
log "Adding $USER to docker group..."
|
||||||
sudo usermod -aG docker "$USER"
|
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."
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
# chocolate-doom: faithful vanilla Doom port; freedoom: free game data (playable without IWADs)
|
# 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
|
sudo pacman -S --noconfirm --needed chocolate-doom freedoom
|
||||||
|
log "Doom installed."
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,9 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing FFmpeg extras (thumbnailer + GStreamer codecs)..."
|
||||||
sudo pacman -S --noconfirm --needed \
|
sudo pacman -S --noconfirm --needed \
|
||||||
ffmpeg ffmpegthumbnailer \
|
ffmpeg ffmpegthumbnailer \
|
||||||
gst-libav gst-plugins-good gst-plugins-bad gst-plugins-ugly
|
gst-libav gst-plugins-good gst-plugins-bad gst-plugins-ugly
|
||||||
|
log "FFmpeg extras installed."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Firefox..."
|
||||||
sudo pacman -S --noconfirm --needed firefox
|
sudo pacman -S --noconfirm --needed firefox
|
||||||
|
log "Firefox installed."
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Starting FreeIPA client installer..."
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
FREEIPA_DIR="$SCRIPT_DIR/../../FreeipaAnsible"
|
FREEIPA_DIR="$SCRIPT_DIR/../../FreeipaAnsible"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# freeipa-image-builder.sh — build a FreeIPA server image for multiple targets
|
# 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):
|
# Targets (TUI chooser):
|
||||||
# docker Build Docker/Podman image and optionally push to a registry
|
# docker Build Docker/Podman image and optionally push to a registry
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,9 @@
|
||||||
# and optionally auto-enroll-ansible.sh) ready for distribution.
|
# and optionally auto-enroll-ansible.sh) ready for distribution.
|
||||||
|
|
||||||
set -euo pipefail
|
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'
|
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'
|
BLUE='\033[0;34m'; CYAN='\033[0;36m'; MAGENTA='\033[0;35m'; NC='\033[0m'
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Geany and plugins..."
|
||||||
sudo pacman -S --noconfirm --needed geany geany-plugins
|
sudo pacman -S --noconfirm --needed geany geany-plugins
|
||||||
|
log "Geany installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing GIMP..."
|
||||||
sudo pacman -S --noconfirm --needed gimp
|
sudo pacman -S --noconfirm --needed gimp
|
||||||
|
log "GIMP installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Gnuplot..."
|
||||||
sudo pacman -S --noconfirm --needed gnuplot
|
sudo pacman -S --noconfirm --needed gnuplot
|
||||||
|
log "Gnuplot installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Himalaya (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm himalaya-bin
|
yay -S --answerdiff None --answerclean All --noconfirm himalaya-bin
|
||||||
|
log "Himalaya installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing ImageMagick..."
|
||||||
sudo pacman -S --noconfirm --needed imagemagick
|
sudo pacman -S --noconfirm --needed imagemagick
|
||||||
|
log "ImageMagick installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Inkscape..."
|
||||||
sudo pacman -S --noconfirm --needed inkscape
|
sudo pacman -S --noconfirm --needed inkscape
|
||||||
|
log "Inkscape installed."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
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
|
sudo pacman -S --noconfirm --needed kubectl podman-desktop
|
||||||
|
log "Kubernetes tools installed."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Kate..."
|
||||||
sudo pacman -S --noconfirm --needed kate
|
sudo pacman -S --noconfirm --needed kate
|
||||||
|
log "Kate installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Kdenlive..."
|
||||||
sudo pacman -S --noconfirm --needed kdenlive
|
sudo pacman -S --noconfirm --needed kdenlive
|
||||||
|
log "Kdenlive installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Krita..."
|
||||||
sudo pacman -S --noconfirm --needed krita
|
sudo pacman -S --noconfirm --needed krita
|
||||||
|
log "Krita installed."
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,16 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
# lamco-rdp-server — native Wayland RDP server (Rust, H.264, VA-API)
|
# lamco-rdp-server — native Wayland RDP server (Rust, H.264, VA-API)
|
||||||
# Builds from AUR; requires cargo, clang, cmake, nasm (auto-pulled as makedeps)
|
# 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
|
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
|
systemctl --user enable lamco-rdp-server.service
|
||||||
|
|
||||||
echo "lamco-rdp-server enabled as a user service."
|
log "lamco-rdp-server enabled as a user service."
|
||||||
echo "Start it with: systemctl --user start lamco-rdp-server"
|
log "Start it with: systemctl --user start lamco-rdp-server"
|
||||||
echo "Or launch the GUI tray: lamco-rdp-server-gui"
|
log "Or launch the GUI tray: lamco-rdp-server-gui"
|
||||||
echo ""
|
warn "Install a matching xdg-desktop-portal for your compositor: xdg-desktop-portal-hyprland / -wlr / -gnome / -kde"
|
||||||
echo "Optional: install a matching xdg-desktop-portal for your compositor:"
|
|
||||||
echo " xdg-desktop-portal-hyprland / -wlr / -gnome / -kde"
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing LibreWolf (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm librewolf-bin
|
yay -S --answerdiff None --answerclean All --noconfirm librewolf-bin
|
||||||
|
log "LibreWolf installed."
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,10 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
# Provides standalone llama-cli, llama-server, and related tools.
|
# Provides standalone llama-cli, llama-server, and related tools.
|
||||||
# Ollama bundles its own copy of llama.cpp internally — the two coexist
|
# Ollama bundles its own copy of llama.cpp internally — the two coexist
|
||||||
# at the package level but share GPU resources at runtime.
|
# at the package level but share GPU resources at runtime.
|
||||||
|
log "Installing llama.cpp (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm llama-cpp
|
yay -S --answerdiff None --answerclean All --noconfirm llama-cpp
|
||||||
|
log "llama.cpp installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing LMMS..."
|
||||||
sudo pacman -S --noconfirm --needed lmms
|
sudo pacman -S --noconfirm --needed lmms
|
||||||
|
log "LMMS installed."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing LocalSend (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm localsend
|
yay -S --answerdiff None --answerclean All --noconfirm localsend
|
||||||
|
log "LocalSend installed."
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing LocalTunnel..."
|
||||||
if command -v npm &>/dev/null; then
|
if command -v npm &>/dev/null; then
|
||||||
npm install -g localtunnel
|
npm install -g localtunnel
|
||||||
else
|
else
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm localtunnel
|
yay -S --answerdiff None --answerclean All --noconfirm localtunnel
|
||||||
fi
|
fi
|
||||||
|
log "LocalTunnel installed."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Min browser (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm min
|
yay -S --answerdiff None --answerclean All --noconfirm min
|
||||||
|
log "Min browser installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Mixxx (DJ software)..."
|
||||||
sudo pacman -S --noconfirm --needed mixxx
|
sudo pacman -S --noconfirm --needed mixxx
|
||||||
|
log "Mixxx installed."
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,17 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing MariaDB..."
|
||||||
sudo pacman -S --noconfirm --needed mariadb
|
sudo pacman -S --noconfirm --needed mariadb
|
||||||
|
|
||||||
if [[ ! -d /var/lib/mysql/mysql ]]; then
|
if [[ ! -d /var/lib/mysql/mysql ]]; then
|
||||||
|
log "Initialising MariaDB data directory..."
|
||||||
sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
|
sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
|
||||||
|
else
|
||||||
|
skip "MariaDB data directory already initialised."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
log "Enabling MariaDB service..."
|
||||||
sudo systemctl enable --now mariadb.service
|
sudo systemctl enable --now mariadb.service
|
||||||
|
log "MariaDB installed and running."
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,9 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing networking CLI tools..."
|
||||||
sudo pacman -S --noconfirm --needed \
|
sudo pacman -S --noconfirm --needed \
|
||||||
httpie ipcalc mitmproxy mtr net-tools nethogs \
|
httpie ipcalc mitmproxy mtr net-tools nethogs \
|
||||||
nmap tcpdump traceroute
|
nmap tcpdump traceroute
|
||||||
|
log "Networking CLI tools installed."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Nyxt browser (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm nyxt
|
yay -S --answerdiff None --answerclean All --noconfirm nyxt
|
||||||
|
log "Nyxt installed."
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,15 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
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.
|
# 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.
|
# The base package runs on CPU and auto-uses GPU libs if present at runtime.
|
||||||
|
log "Installing Ollama..."
|
||||||
sudo pacman -S --noconfirm --needed ollama
|
sudo pacman -S --noconfirm --needed ollama
|
||||||
|
|
||||||
|
log "Enabling Ollama service..."
|
||||||
sudo systemctl enable --now ollama.service
|
sudo systemctl enable --now ollama.service
|
||||||
|
|
||||||
echo "Ollama running on http://localhost:11434"
|
log "Ollama running on http://localhost:11434"
|
||||||
echo "Pull models with: ollama pull <model>"
|
log "Pull models with: ollama pull <model>"
|
||||||
echo "Note: if llama.cpp is also installed, avoid running both GPU-bound at once."
|
warn "If llama.cpp is also installed, avoid running both GPU-bound at once."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing OnlyOffice (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm onlyoffice-bin
|
yay -S --answerdiff None --answerclean All --noconfirm onlyoffice-bin
|
||||||
|
log "OnlyOffice installed."
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
# Open WebUI — browser UI for Ollama and other LLM backends.
|
# Open WebUI — browser UI for Ollama and other LLM backends.
|
||||||
# Ollama module should be installed first for full functionality.
|
# Ollama module should be installed first for full functionality.
|
||||||
|
log "Installing Open WebUI (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm open-webui
|
yay -S --answerdiff None --answerclean All --noconfirm open-webui
|
||||||
|
|
||||||
|
log "Enabling Open WebUI service..."
|
||||||
sudo systemctl enable --now 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"
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing OpenArena..."
|
||||||
sudo pacman -S --noconfirm --needed openarena
|
sudo pacman -S --noconfirm --needed openarena
|
||||||
|
log "OpenArena installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing OpenShot..."
|
||||||
sudo pacman -S --noconfirm --needed openshot
|
sudo pacman -S --noconfirm --needed openshot
|
||||||
|
log "OpenShot installed."
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,10 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
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
|
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"
|
loginctl enable-linger "$USER"
|
||||||
echo "Podman installed (rootless, no daemon). User lingering enabled."
|
log "Podman installed (rootless, no daemon). User lingering enabled."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing PrismLauncher (Flatpak)..."
|
||||||
flatpak install -y flathub org.prismlauncher.PrismLauncher
|
flatpak install -y flathub org.prismlauncher.PrismLauncher
|
||||||
|
log "PrismLauncher installed."
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing taskwarrior..."
|
||||||
sudo pacman -S --noconfirm --needed task
|
sudo pacman -S --noconfirm --needed task
|
||||||
|
|
||||||
|
log "Installing watson and jrnl (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm watson python-jrnl
|
yay -S --answerdiff None --answerclean All --noconfirm watson python-jrnl
|
||||||
|
log "Productivity tools installed."
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
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 \
|
sudo pacman -S --noconfirm --needed \
|
||||||
qemu-full \
|
qemu-full \
|
||||||
libvirt \
|
libvirt \
|
||||||
|
|
@ -13,10 +14,12 @@ sudo pacman -S --noconfirm --needed \
|
||||||
swtpm \
|
swtpm \
|
||||||
vde2
|
vde2
|
||||||
|
|
||||||
|
log "Enabling libvirtd service..."
|
||||||
sudo systemctl enable --now 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
|
sudo virsh net-autostart default 2>/dev/null || true
|
||||||
|
|
||||||
|
log "Adding $USER to libvirt and kvm groups..."
|
||||||
sudo usermod -aG libvirt,kvm "$USER"
|
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."
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
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 \
|
sudo pacman -S --noconfirm --needed \
|
||||||
remmina \
|
remmina \
|
||||||
freerdp \
|
freerdp \
|
||||||
libvncserver
|
libvncserver
|
||||||
|
log "Remmina installed with RDP (freerdp) and VNC support."
|
||||||
echo "Remmina installed with RDP (freerdp) and VNC support."
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Sauerbraten (Cube 2 FPS)..."
|
||||||
sudo pacman -S --noconfirm --needed sauerbraten
|
sudo pacman -S --noconfirm --needed sauerbraten
|
||||||
|
log "Sauerbraten installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Shotcut..."
|
||||||
sudo pacman -S --noconfirm --needed shotcut
|
sudo pacman -S --noconfirm --needed shotcut
|
||||||
|
log "Shotcut installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing SoX (audio processing toolkit)..."
|
||||||
sudo pacman -S --noconfirm --needed sox
|
sudo pacman -S --noconfirm --needed sox
|
||||||
|
log "SoX installed."
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,14 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Spotify launcher..."
|
||||||
sudo pacman -S --noconfirm --needed 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
|
curl -fsSL https://raw.githubusercontent.com/spicetify/cli/main/install.sh | sh
|
||||||
|
|
||||||
|
log "Deploying Spicetify config..."
|
||||||
rm -rf ~/.config/spicetify
|
rm -rf ~/.config/spicetify
|
||||||
cp -r ~/Dotfiles/desktopenvs/hyprland/spicetify ~/.config/
|
cp -r ~/Dotfiles/desktopenvs/hyprland/spicetify ~/.config/
|
||||||
|
log "Spotify installed with Spicetify theming."
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,17 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing OpenSSH server..."
|
||||||
sudo pacman -S --noconfirm --needed openssh
|
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
|
SSHD_CONF=/etc/ssh/sshd_config
|
||||||
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' "$SSHD_CONF"
|
sudo sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' "$SSHD_CONF"
|
||||||
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' "$SSHD_CONF"
|
sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' "$SSHD_CONF"
|
||||||
sudo sed -i 's/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/' "$SSHD_CONF"
|
sudo sed -i 's/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/' "$SSHD_CONF"
|
||||||
|
|
||||||
|
log "Enabling sshd service..."
|
||||||
sudo systemctl enable sshd.service
|
sudo systemctl enable sshd.service
|
||||||
echo "SSH server installed and enabled (key auth only, root login disabled)."
|
log "SSH server installed and enabled (key auth only, root login disabled)."
|
||||||
echo "Add your public key to ~/.ssh/authorized_keys before first use."
|
warn "Add your public key to ~/.ssh/authorized_keys before first use."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Steam..."
|
||||||
sudo pacman -S --noconfirm --needed steam
|
sudo pacman -S --noconfirm --needed steam
|
||||||
|
log "Steam installed."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Stunt Rally (Flatpak)..."
|
||||||
flatpak install -y flathub io.github.stuntrally.StuntRally3
|
flatpak install -y flathub io.github.stuntrally.StuntRally3
|
||||||
|
log "Stunt Rally installed."
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing bastet (Tetris CLI)..."
|
||||||
sudo pacman -S --noconfirm --needed bastet
|
sudo pacman -S --noconfirm --needed bastet
|
||||||
|
|
||||||
|
log "Installing vitetris (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm vitetris
|
yay -S --answerdiff None --answerclean All --noconfirm vitetris
|
||||||
|
log "Tetris CLI tools installed."
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,13 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Timeshift and cronie..."
|
||||||
sudo pacman -S --noconfirm --needed timeshift 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
|
yay -S --answerdiff None --answerclean All --noconfirm timeshift-autosnap
|
||||||
|
|
||||||
|
log "Enabling cronie service..."
|
||||||
sudo systemctl enable --now cronie.service
|
sudo systemctl enable --now cronie.service
|
||||||
|
log "Timeshift installed with autosnap on pacman transactions."
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,12 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
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
|
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 --now tlp.service
|
||||||
sudo systemctl enable NetworkManager-dispatcher.service
|
sudo systemctl enable NetworkManager-dispatcher.service
|
||||||
sudo systemctl mask systemd-rfkill.service systemd-rfkill.socket
|
sudo systemctl mask systemd-rfkill.service systemd-rfkill.socket
|
||||||
|
log "TLP installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
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
|
yay -S --answerdiff None --answerclean All --noconfirm toot
|
||||||
|
log "toot installed."
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,12 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Vesktop (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm vesktop
|
yay -S --answerdiff None --answerclean All --noconfirm vesktop
|
||||||
|
|
||||||
|
log "Deploying Vencord config..."
|
||||||
rm -rf ~/.config/Vencord ~/.config/vesktop
|
rm -rf ~/.config/Vencord ~/.config/vesktop
|
||||||
cp -r ~/Dotfiles/desktopenvs/hyprland/Vencord ~/.config/
|
cp -r ~/Dotfiles/desktopenvs/hyprland/Vencord ~/.config/
|
||||||
cp -r ~/Dotfiles/desktopenvs/hyprland/Vencord ~/.config/vesktop
|
cp -r ~/Dotfiles/desktopenvs/hyprland/Vencord ~/.config/vesktop
|
||||||
|
log "Vesktop installed with Vencord theme."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Vintage Story (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm vintagestory
|
yay -S --answerdiff None --answerclean All --noconfirm vintagestory
|
||||||
|
log "Vintage Story installed."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing VSCodium (AUR)..."
|
||||||
yay -S --answerdiff None --answerclean All --noconfirm vscodium-bin
|
yay -S --answerdiff None --answerclean All --noconfirm vscodium-bin
|
||||||
|
log "VSCodium installed."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Wireshark..."
|
||||||
sudo pacman -S --noconfirm --needed wireshark-qt
|
sudo pacman -S --noconfirm --needed wireshark-qt
|
||||||
|
log "Wireshark installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Xournal++ (PDF annotator)..."
|
||||||
sudo pacman -S --noconfirm --needed xournalpp
|
sudo pacman -S --noconfirm --needed xournalpp
|
||||||
|
log "Xournal++ installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing yt-dlp (media downloader)..."
|
||||||
sudo pacman -S --noconfirm --needed yt-dlp
|
sudo pacman -S --noconfirm --needed yt-dlp
|
||||||
|
log "yt-dlp installed."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/../../lib/logging.sh"
|
||||||
|
|
||||||
|
log "Installing Zed editor..."
|
||||||
sudo pacman -S --noconfirm --needed zed
|
sudo pacman -S --noconfirm --needed zed
|
||||||
|
log "Zed installed."
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
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
|
yay -S --answerdiff None --answerclean All --noconfirm zen-browser-bin
|
||||||
|
log "Zen Browser installed."
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,7 @@
|
||||||
#!/bin/bash
|
#!/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
|
sudo pacman -Syu python pyright python-pynvim python-pipx
|
||||||
|
log "Python tools installed."
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
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
|
yay -S --answerdiff None --answerclean All --noconfirm wprs-git
|
||||||
|
log "wprs installed."
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
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
|
yay -S --answerdiff None --answerclean All --noconfirm zfs-dkms
|
||||||
|
log "ZFS installed."
|
||||||
|
|
|
||||||
|
|
@ -1,35 +1,39 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
source "$(dirname "${BASH_SOURCE[0]}")/lib/logging.sh"
|
||||||
|
|
||||||
|
log "Updating system and installing Flatpak..."
|
||||||
sudo pacman -Syu --noconfirm --needed flatpak
|
sudo pacman -Syu --noconfirm --needed flatpak
|
||||||
|
|
||||||
# yay
|
# yay
|
||||||
if ! command -v yay &>/dev/null; then
|
if ! command -v yay &>/dev/null; then
|
||||||
echo "Installing yay..."
|
log "Installing yay..."
|
||||||
mkdir -p ~/install-tmp
|
mkdir -p ~/install-tmp
|
||||||
git clone https://aur.archlinux.org/yay.git ~/install-tmp/yay
|
git clone https://aur.archlinux.org/yay.git ~/install-tmp/yay
|
||||||
cd ~/install-tmp/yay
|
cd ~/install-tmp/yay
|
||||||
makepkg -si --noconfirm
|
makepkg -si --noconfirm
|
||||||
cd ~
|
cd ~
|
||||||
else
|
else
|
||||||
echo "yay already installed."
|
skip "yay already installed."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# rustup / rust
|
# rustup / rust
|
||||||
if ! command -v rustup &>/dev/null; then
|
if ! command -v rustup &>/dev/null; then
|
||||||
echo "Installing rustup..."
|
log "Installing rustup..."
|
||||||
sudo pacman -S --noconfirm --needed rustup
|
sudo pacman -S --noconfirm --needed rustup
|
||||||
fi
|
fi
|
||||||
rustup default stable
|
rustup default stable
|
||||||
|
|
||||||
# nvm + Node.js
|
# nvm + Node.js
|
||||||
if ! command -v node &>/dev/null; then
|
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
|
if [ ! -d "$HOME/.nvm" ]; then
|
||||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
|
||||||
fi
|
fi
|
||||||
. "$HOME/.nvm/nvm.sh"
|
. "$HOME/.nvm/nvm.sh"
|
||||||
nvm install 22
|
nvm install 22
|
||||||
else
|
else
|
||||||
echo "Node.js already installed: $(node -v)"
|
skip "Node.js already installed: $(node -v)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
log "Package managers ready."
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,11 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -euo pipefail
|
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..."
|
log "Updating system..."
|
||||||
sudo pacman -Syu --noconfirm
|
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)
|
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
|
for pkg in "${PACKAGES[@]}"; do
|
||||||
if ! pacman -Qi "$pkg" &>/dev/null; then
|
if ! pacman -Qi "$pkg" &>/dev/null; then
|
||||||
|
|
@ -55,10 +48,9 @@ else
|
||||||
skip "Node.js already installed."
|
skip "Node.js already installed."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# git config
|
log "Configuring git..."
|
||||||
git config --global core.editor nvim
|
git config --global core.editor nvim
|
||||||
|
|
||||||
# Dotfiles
|
|
||||||
log "Deploying dotfiles..."
|
log "Deploying dotfiles..."
|
||||||
mkdir -p ~/.config ~/Pictures
|
mkdir -p ~/.config ~/Pictures
|
||||||
|
|
||||||
|
|
@ -69,9 +61,6 @@ ln -sf ~/Dotfiles/starship.toml ~/.config/starship.toml
|
||||||
rm -rf ~/.config/micro
|
rm -rf ~/.config/micro
|
||||||
cp -r ~/Dotfiles/micro ~/.config/
|
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
|
rm -rf ~/.config/nvim
|
||||||
ln -sf ~/Dotfiles/nvim ~/.config/nvim
|
ln -sf ~/Dotfiles/nvim ~/.config/nvim
|
||||||
|
|
||||||
|
|
@ -91,7 +80,7 @@ else
|
||||||
skip "Starship already installed."
|
skip "Starship already installed."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# oh-my-zsh (RUNZSH=no prevents installer from spawning a new shell)
|
# oh-my-zsh
|
||||||
if [ ! -d "$HOME/.oh-my-zsh" ]; then
|
if [ ! -d "$HOME/.oh-my-zsh" ]; then
|
||||||
log "Installing oh-my-zsh..."
|
log "Installing oh-my-zsh..."
|
||||||
RUNZSH=no CHSH=no sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
|
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
|
# oh-my-zsh plugins
|
||||||
ZSH_CUSTOM="${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}"
|
ZSH_CUSTOM="${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}"
|
||||||
if [ ! -d "$ZSH_CUSTOM/plugins/zsh-syntax-highlighting" ]; then
|
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 \
|
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
|
||||||
"$ZSH_CUSTOM/plugins/zsh-syntax-highlighting"
|
"$ZSH_CUSTOM/plugins/zsh-syntax-highlighting"
|
||||||
else
|
else
|
||||||
skip "zsh-syntax-highlighting already installed."
|
skip "zsh-syntax-highlighting already installed."
|
||||||
fi
|
fi
|
||||||
if [ ! -d "$ZSH_CUSTOM/plugins/zsh-autosuggestions" ]; then
|
if [ ! -d "$ZSH_CUSTOM/plugins/zsh-autosuggestions" ]; then
|
||||||
|
log "Installing zsh-autosuggestions..."
|
||||||
git clone https://github.com/zsh-users/zsh-autosuggestions \
|
git clone https://github.com/zsh-users/zsh-autosuggestions \
|
||||||
"$ZSH_CUSTOM/plugins/zsh-autosuggestions"
|
"$ZSH_CUSTOM/plugins/zsh-autosuggestions"
|
||||||
else
|
else
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue