Files
provision/scripts/apps.sh
2025-12-30 16:51:16 -08:00

161 lines
5.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/../lib/common.sh"
source "$SCRIPT_DIR/../lib/package.sh"
log_info "Installing applications"
# VSCodium
if command_exists codium || command_exists code; then
log_success "VSCodium/VSCode already installed"
else
log_info "Installing VSCodium"
case "$OS_TYPE" in
macos)
install_cask vscodium
;;
debian)
wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg \
| gpg --dearmor \
| maybe_sudo dd of=/usr/share/keyrings/vscodium-archive-keyring.gpg
echo 'deb [ signed-by=/usr/share/keyrings/vscodium-archive-keyring.gpg ] https://download.vscodium.com/debs vscodium main' \
| maybe_sudo tee /etc/apt/sources.list.d/vscodium.list
update_package_cache
install_package codium
;;
arch)
install_aur vscodium-bin
;;
esac
fi
# 1Password
if command_exists 1password || [ -d "/Applications/1Password.app" ] 2>/dev/null; then
log_success "1Password already installed"
else
log_info "Installing 1Password"
case "$OS_TYPE" in
macos)
install_cask 1password
;;
debian)
curl -sS https://downloads.1password.com/linux/keys/1password.asc | \
maybe_sudo gpg --dearmor --output /usr/share/keyrings/1password-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/1password-archive-keyring.gpg] https://downloads.1password.com/linux/debian/$(dpkg --print-architecture) stable main" | \
maybe_sudo tee /etc/apt/sources.list.d/1password.list
maybe_sudo mkdir -p /etc/debsig/policies/AC2D62742012EA22/
curl -sS https://downloads.1password.com/linux/debian/debsig/1password.pol | \
maybe_sudo tee /etc/debsig/policies/AC2D62742012EA22/1password.pol
maybe_sudo mkdir -p /usr/share/debsig/keyrings/AC2D62742012EA22
curl -sS https://downloads.1password.com/linux/keys/1password.asc | \
maybe_sudo gpg --dearmor --output /usr/share/debsig/keyrings/AC2D62742012EA22/debsig.gpg
update_package_cache
install_package 1password
;;
arch)
install_aur 1password
;;
esac
fi
# Obsidian
if command_exists obsidian || [ -d "/Applications/Obsidian.app" ] 2>/dev/null; then
log_success "Obsidian already installed"
else
log_info "Installing Obsidian"
case "$OS_TYPE" in
macos)
install_cask obsidian
;;
debian)
TEMP_DIR=$(mktemp -d)
cd "$TEMP_DIR"
wget -q "https://github.com/obsidianmd/obsidian-releases/releases/download/v1.5.3/obsidian_1.5.3_amd64.deb"
maybe_sudo dpkg -i obsidian_*.deb
maybe_sudo apt-get install -f -y
cd -
rm -rf "$TEMP_DIR"
;;
arch)
install_aur obsidian
;;
esac
fi
# Google Chrome
if command_exists google-chrome || command_exists google-chrome-stable || [ -d "/Applications/Google Chrome.app" ] 2>/dev/null; then
log_success "Google Chrome already installed"
else
log_info "Installing Google Chrome"
case "$OS_TYPE" in
macos)
install_cask google-chrome
;;
debian)
TEMP_DIR=$(mktemp -d)
cd "$TEMP_DIR"
wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
maybe_sudo dpkg -i google-chrome-stable_current_amd64.deb
maybe_sudo apt-get install -f -y
cd -
rm -rf "$TEMP_DIR"
;;
arch)
install_aur google-chrome
;;
esac
fi
# Todoist
if command_exists todoist || [ -d "/Applications/Todoist.app" ] 2>/dev/null; then
log_success "Todoist already installed"
else
log_info "Installing Todoist"
case "$OS_TYPE" in
macos)
install_cask todoist
;;
debian)
# Install via snap
if ! command_exists snap; then
log_info "Installing snapd"
maybe_sudo apt-get install -y snapd
fi
maybe_sudo snap install todoist
;;
arch)
install_aur todoist-appimage
;;
esac
fi
# Claude Desktop
if [ -d "/Applications/Claude.app" ] 2>/dev/null || command_exists claude; then
log_success "Claude Desktop already installed"
else
log_info "Installing Claude Desktop"
case "$OS_TYPE" in
macos)
install_cask claude
;;
debian)
# Install via snap (unofficial community build)
if ! command_exists snap; then
log_info "Installing snapd"
maybe_sudo apt-get install -y snapd
fi
maybe_sudo snap install claudeai-desktop
;;
arch)
install_aur claude-desktop
;;
esac
fi
log_success "Applications installed"