Files
linux-provisioning/stages/12-other-apps.sh
Julian Prester 5f8640c057 Simplify and clean up provisioning scripts
- lib/distro.sh: add DISTRO_CODENAME from VERSION_CODENAME; remove
  unused REPO_ADD_RPM variable; export DISTRO_CODENAME

- stages/01-repos.sh: replace repeated '. /etc/os-release' subshell
  calls with $DISTRO_CODENAME in Docker and Tailscale repo lines

- stages/00-envcheck.sh: combine four mkdir -p calls into one

- stages/02-packages.sh: remove identical if/else branches in fd
  symlink block; both branches were the same command

- stages/03-toolchains.sh: set NVM_DIR once before the if/else instead
  of twice; remove dead commented-out duplicate curl line

- stages/04-shell.sh: capture $(date +%Y%m%d) into _bak_date once per
  backup and reuse in cp and warn to avoid redundant forks

- stages/06-scripts.sh: split 'export VAR=$(cmd)' into assignment +
  export to correctly propagate errors under set -euo pipefail

- stages/07-uv-projects.sh: remove unused has_package_json field (always
  false, never read); fix stage completion message 06 -> 07

- stages/08-systemd.sh: remove mempi-sync.timer (deploy, enable, header
  comment); deploy mempi-sync.service only

- stages/09-desktop.sh: remove duplicate mkdir -p in COSMIC section;
  remove unused repo_url parameter from install_nerd_font()

- stages/12-other-apps.sh: replace manual distro branch for Nextcloud
  with pkg_install_mapped

- config/scripts/bw-load-ssh.sh: split 'export BW_SESSION=$(cat ...)'
  into assignment + export

- config/systemd/mempi-sync.timer: delete file
2026-06-07 15:18:12 +10:00

81 lines
3.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# ===========================================================================
# Stage 12: Other Applications
# Depends on: stage 01 (repos), stage 02 (packages)
# Chrome, Signal, Zotero, Obsidian, Nextcloud client, FreeRDP.
# Distro-agnostic — uses pkg_install / Flatpak / tarball.
# ===========================================================================
# ---- Google Chrome ----
info "Installing Google Chrome..."
pkg_install google-chrome-stable 2>/dev/null && ok "Chrome installed." \
|| warn "Chrome not available. Install from https://www.google.com/chrome/"
# ---- Signal Desktop ----
info "Installing Signal Desktop..."
if pkg_install signal-desktop 2>/dev/null; then
ok "Signal installed via DNF."
elif command -v flatpak &>/dev/null; then
flatpak install -y flathub org.signal.Signal 2>/dev/null && ok "Signal installed via Flatpak." \
|| warn "Signal Flatpak failed. Install from https://signal.org/download/"
else
warn "Signal not installed. Install from https://signal.org/download/"
fi
# ---- Zotero (reference manager) ----
info "Installing Zotero..."
if command -v zotero &>/dev/null || flatpak list 2>/dev/null | grep -qi "zotero"; then
ok "Zotero already installed."
elif command -v flatpak &>/dev/null; then
flatpak install -y flathub org.zotero.Zotero 2>/dev/null && ok "Zotero installed via Flatpak." \
|| warn "Zotero Flatpak failed. Try manual tarball from zotero.org."
else
warn "Zotero not installed. Get it from https://www.zotero.org/download/"
fi
# ---- Obsidian (knowledge base) ----
info "Installing Obsidian..."
if command -v obsidian &>/dev/null || flatpak list 2>/dev/null | grep -qi "obsidian"; then
ok "Obsidian already installed."
elif command -v flatpak &>/dev/null; then
flatpak install -y flathub md.obsidian.Obsidian 2>/dev/null && ok "Obsidian installed." \
|| warn "Obsidian Flatpak failed. Download from https://obsidian.md/"
else
warn "Obsidian not installed."
fi
# ---- Nextcloud Desktop Client ----
info "Installing Nextcloud Desktop Client..."
pkg_install_mapped "nextcloud-desktop" "nextcloud-client" 2>/dev/null && ok "Nextcloud client installed." || \
warn "Nextcloud client not available."
# ---- Thunderbird (email client) ----
info "Installing Thunderbird..."
pkg_install thunderbird 2>/dev/null && ok "Thunderbird installed." \
|| warn "Thunderbird not available."
# ---- Oracle VirtualBox (VM manager) ----
info "Installing VirtualBox..."
if [ "$DISTRO_FAMILY" = "fedora" ]; then
# Available from RPM Fusion free
pkg_install VirtualBox 2>/dev/null && ok "VirtualBox installed." \
|| warn "VirtualBox not available. Enable RPM Fusion free in stage 01."
else
warn "VirtualBox not available on Debian via this script. Install manually."
fi
# ---- Zoom (video conferencing) ----
info "Installing Zoom..."
# The zoom wrapper script (~/.local/bin/zoom) is deployed in stage 06.
# The actual Zoom app is best installed via Flatpak.
if command -v zoom &>/dev/null && ! grep -q "wrapper" "$(which zoom)" 2>/dev/null; then
ok "Zoom already installed."
elif command -v flatpak &>/dev/null; then
flatpak install -y flathub us.zoom.Zoom 2>/dev/null && ok "Zoom installed via Flatpak." \
|| warn "Zoom Flatpak failed. Download from https://zoom.us/download"
else
warn "Zoom not installed. Download from https://zoom.us/download"
fi
ok "Stage 12 complete: additional applications installed."