#!/bin/bash # 04-config-symlinks.sh # Copies Starship config, configures Teams for Linux, and symlinks dotfiles. # Relies on SCRIPT_ROOT_DIR being set by the caller. echo "--- Starting Configuration and Symlinking ---" if [ -z "$SCRIPT_ROOT_DIR" ]; then echo "ERROR: SCRIPT_ROOT_DIR must be set in the environment." exit 1 fi # Oh My Posh theme echo "" echo "Setting up Oh My Posh theme..." POSH_THEME_SOURCE="${SCRIPT_ROOT_DIR}/terminal/posh-theme.omp.json" POSH_THEME_DEST_DIR="$HOME/.config/oh-my-posh" POSH_THEME_DEST="${POSH_THEME_DEST_DIR}/theme.omp.json" if [ -f "$POSH_THEME_SOURCE" ]; then mkdir -p "$POSH_THEME_DEST_DIR" ln -sf "$POSH_THEME_SOURCE" "$POSH_THEME_DEST" echo "${POSH_THEME_SOURCE} ~> ${POSH_THEME_DEST}" else echo "WARNING: Oh My Posh theme not found: ${POSH_THEME_SOURCE}. Skipping." fi # Teams for Linux Configuration echo "" echo "Setting up Teams for Linux (Community/Flatpak) configuration..." TEAMS_FLATPAK_DIR="$HOME/.var/app/com.github.IsmaelMartinez.teams_for_linux" # Only proceed if the application data directory exists if [ -d "$TEAMS_FLATPAK_DIR" ]; then # Check for jq dependency if ! command -v jq &> /dev/null; then echo "WARNING: 'jq' is not installed. Skipping Teams for Linux config." else CONFIG_DIR="${TEAMS_FLATPAK_DIR}/config/teams-for-linux" CONFIG_FILE="${CONFIG_DIR}/config.json" # Ensure the target directory exists mkdir -p "$CONFIG_DIR" # Safely add/update the disableAutogain setting using jq # This handles a non-existent file gracefully by creating an empty JSON object cat "$CONFIG_FILE" 2>/dev/null || echo "{}" | jq '.disableAutogain = true' > "${CONFIG_FILE}.tmp" mv "${CONFIG_FILE}.tmp" "$CONFIG_FILE" echo "Successfully configured 'disableAutogain: true' in $CONFIG_FILE" fi else echo "Teams for Linux Flatpak directory not found. Skipping configuration." fi # Symlink files (keeping the original simple approach) echo "" echo "Symlinking dotfiles..." FILES=('bashrc' 'zshrc' 'aliases.bash' 'aliases.zsh' 'agignore' 'gitconfig' 'gitignore' 'commit-conventions.txt') for file in "${FILES[@]}"; do echo "" echo "Symlinking $file to $HOME" # Check if source file exists first if [ -e "${SCRIPT_ROOT_DIR}/${file}" ]; then ln -sf "${SCRIPT_ROOT_DIR}/${file}" "$HOME/.$file" if [ $? -eq 0 ]; then echo "${SCRIPT_ROOT_DIR}/${file} ~> $HOME/.$file" else echo "Install failed to symlink $file." exit 1 fi else echo "WARNING: Source file not found: ${SCRIPT_ROOT_DIR}/${file}. Skipping." fi done # Nushell config (~/.config/nushell) echo "" echo "Symlinking nushell config to ~/.config/nushell..." NUSHELL_SRC="${SCRIPT_ROOT_DIR}/terminal/nushell" NUSHELL_DEST="$HOME/.config/nushell" if [ -d "$NUSHELL_SRC" ]; then mkdir -p "$HOME/.config" ln -sf "$NUSHELL_SRC" "$NUSHELL_DEST" echo "${NUSHELL_SRC} ~> ${NUSHELL_DEST}" else echo "WARNING: nushell config source not found: ${NUSHELL_SRC}. Skipping." fi # Neovim config (~/.config/nvim) echo "" echo "Symlinking nvim config to ~/.config/nvim..." NVIM_SRC="${SCRIPT_ROOT_DIR}/nvim" NVIM_DEST="$HOME/.config/nvim" if [ -e "$NVIM_SRC" ]; then mkdir -p "$HOME/.config" ln -sf "$NVIM_SRC" "$NVIM_DEST" echo "${NVIM_SRC} ~> ${NVIM_DEST}" else echo "WARNING: nvim config source not found: ${NVIM_SRC}. Skipping." fi echo "" echo "--- Configuration and Symlinking Finished ---"