108 lines
3.5 KiB
Bash
Executable File
108 lines
3.5 KiB
Bash
Executable File
#!/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 ---" |