#!/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"