overhaul of some dotfiles

This commit is contained in:
Blake Ridgway
2026-04-05 10:42:44 -05:00
parent 05cdb1ca14
commit 8a006faf65
69 changed files with 697 additions and 6191 deletions

View File

@@ -7,22 +7,31 @@ echo "--- Starting Development Tools Setup ---"
# Setup NVIM
echo "Setting up Neovim..."
if command -v nvim &>/dev/null && [[ "$(nvim --version | head -n 1)" == "NVIM"* ]]; then
echo "Neovim appears to be installed. Checking version/source or skipping."
# Add logic here if you want to ensure it's your /opt/nvim version
_nvim_asset_name() {
case "$(uname -m)" in
x86_64) echo "nvim-linux-x86_64" ;;
aarch64) echo "nvim-linux-arm64" ;;
*) echo "Unsupported arch for Neovim: $(uname -m)" >&2; exit 1 ;;
esac
}
NVIM_LATEST="$(curl -fsSL https://api.github.com/repos/neovim/neovim/releases/latest | grep '"tag_name"' | cut -d'"' -f4)"
NVIM_INSTALLED="$(nvim --version 2>/dev/null | head -n1 | awk '{print $2}')"
if [ "$NVIM_INSTALLED" = "$NVIM_LATEST" ]; then
echo "Neovim ${NVIM_LATEST} already up-to-date."
else
echo "Downloading and installing Neovim to /opt/nvim..."
NVIM_ASSET="$(_nvim_asset_name)"
echo "Installing Neovim ${NVIM_LATEST} (${NVIM_ASSET})..."
TEMP_NVIM_DIR=$(mktemp -d)
curl -Lo "${TEMP_NVIM_DIR}/nvim-linux64.tar.gz" https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz
curl -fsSLo "${TEMP_NVIM_DIR}/${NVIM_ASSET}.tar.gz" \
"https://github.com/neovim/neovim/releases/latest/download/${NVIM_ASSET}.tar.gz"
sudo rm -rf /opt/nvim
sudo tar -C /opt -xzf "${TEMP_NVIM_DIR}/nvim-linux64.tar.gz"
rm -rf "${TEMP_NVIM_DIR}" # Clean up
echo "Neovim installed to /opt/nvim. Add /opt/nvim-linux64/bin to your PATH."
# Consider adding to PATH via a profile script if not handled by zshrc/bashrc symlinks
if [ ! -f /usr/local/bin/nvim ] && [ -d /opt/nvim-linux64/bin ]; then
sudo ln -sf /opt/nvim-linux64/bin/nvim /usr/local/bin/nvim
echo "Symlinked nvim to /usr/local/bin/nvim"
fi
sudo tar -C /opt -xzf "${TEMP_NVIM_DIR}/${NVIM_ASSET}.tar.gz"
sudo mv "/opt/${NVIM_ASSET}" /opt/nvim 2>/dev/null || true
rm -rf "${TEMP_NVIM_DIR}"
sudo ln -sf /opt/nvim/bin/nvim /usr/local/bin/nvim
echo "Neovim ${NVIM_LATEST} installed to /opt/nvim, symlinked to /usr/local/bin/nvim"
fi
# pynvim
@@ -116,17 +125,16 @@ if ! command -v oh-my-posh &>/dev/null; then
echo "➤ Installing Oh-My-Posh latest release..."
# GitHub /releases/latest/download will 302 redirect to actual asset
BIN_URL="https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-${OS}-${ARCH}"
THEME_URL="https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/jandedobbeleer.omp.json"
mkdir -p "${HOME}/.local/bin"
TMPBIN="$(mktemp)"
curl -fsSL -L "${BIN_URL}" -o "${TMPBIN}"
sudo install -m755 "${TMPBIN}" /usr/local/bin/oh-my-posh
install -m755 "${TMPBIN}" "${HOME}/.local/bin/oh-my-posh"
rm -f "${TMPBIN}"
echo "Installed oh-my-posh to /usr/local/bin/oh-my-posh"
echo "Installed oh-my-posh to ~/.local/bin/oh-my-posh"
mkdir -p "${HOME}/.poshthemes"
curl -fsSL -L "${THEME_URL}" -o "${HOME}/.poshthemes/jandedobbeleer.omp.json"
echo "Downloaded default theme to ~/.poshthemes/"
echo "Theme is managed via dotfiles repo at terminal/posh-theme.omp.json"
echo "Run 04-config-symlinks.sh to link it to ~/.config/oh-my-posh/theme.omp.json"
else
echo "✔ Oh-My-Posh already installed: $(oh-my-posh --version | head -n1)"
@@ -144,18 +152,5 @@ else
echo "For the current session, you can run: source \"\$HOME/.cargo/env\""
fi
# Setup Starship
echo "Installing Starship prompt..."
if command -v starship &>/dev/null; then
echo "Starship already installed."
else
# The -y flag attempts a non-interactive install
if curl -sS https://starship.rs/install.sh | sh -s -- -y; then
echo "Starship installed. Add 'eval \"\$(starship init zsh)\"' (or bash/fish) to your shell config."
else
echo "ERROR: Starship installation failed."
fi
fi
echo "--- Development Tools Setup Finished ---"

View File

@@ -11,19 +11,19 @@ if [ -z "$SCRIPT_ROOT_DIR" ]; then
exit 1
fi
# Starship Config File
STARSHIP_CONFIG_SOURCE="${SCRIPT_ROOT_DIR}/terminal/starship.toml"
STARSHIP_CONFIG_DEST_DIR="$HOME/.config"
STARSHIP_CONFIG_DEST_FILE="${STARSHIP_CONFIG_DEST_DIR}/starship.toml"
# Oh My Posh theme
echo ""
echo "Setting up Starship configuration..."
if [ -f "$STARSHIP_CONFIG_SOURCE" ]; then
mkdir -p "$STARSHIP_CONFIG_DEST_DIR"
cp "$STARSHIP_CONFIG_SOURCE" "$STARSHIP_CONFIG_DEST_FILE"
echo "Copied starship.toml to $STARSHIP_CONFIG_DEST_FILE"
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: Starship config source not found: $STARSHIP_CONFIG_SOURCE. Skipping copy."
echo "WARNING: Oh My Posh theme not found: ${POSH_THEME_SOURCE}. Skipping."
fi
# Teams for Linux Configuration
@@ -58,7 +58,7 @@ fi
echo ""
echo "Symlinking dotfiles..."
FILES=('vimrc' 'vim' 'bashrc' 'zsh' 'agignore' 'gitconfig' 'gitignore' 'commit-conventions.txt' 'aliases.zsh')
FILES=('bashrc' 'zshrc' 'aliases.bash' 'aliases.zsh' 'agignore' 'gitconfig' 'gitignore' 'commit-conventions.txt')
for file in "${FILES[@]}"; do
echo ""
@@ -78,5 +78,31 @@ for file in "${FILES[@]}"; do
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 ---"