Files
dotfiles/install.sh

83 lines
2.0 KiB
Bash
Raw Normal View History

2024-06-20 00:53:35 +01:00
#!/bin/bash
set -euo pipefail
2024-06-20 00:53:35 +01:00
# Parse flags like: ./install.sh macos=1 linux=1
for arg in "$@"; do declare "$arg"='1'; done
2024-10-28 19:39:02 +00:00
# Determine OS if not explicitly provided
if [[ "$(uname -s)" == "Darwin" ]]; then
macos="${macos:-1}"
linux="${linux:-}"
2024-12-08 15:49:58 +00:00
else
linux="${linux:-1}"
macos="${macos:-}"
2024-12-08 15:49:58 +00:00
fi
2024-10-28 19:39:02 +00:00
need_cmd() { command -v "$1" >/dev/null 2>&1; }
install_neovim_linux() {
# Install latest stable Neovim from GitHub releases (official tarball)
local tmp
tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' RETURN
2026-01-16 11:54:09 +00:00
local url="https://github.com/neovim/neovim/releases/download/v0.11.5/nvim-linux-x86_64.tar.gz"
2026-01-16 11:52:15 +00:00
curl -fL --retry 3 --retry-delay 1 -o "$tmp/nvim.tar.gz" "$url"
sudo rm -rf /opt/nvim
sudo mkdir -p /opt
sudo tar -C /opt -xzf "$tmp/nvim.tar.gz"
sudo mv /opt/nvim-linux64 /opt/nvim
# Ensure /usr/local/bin exists and symlink nvim
sudo ln -sf /opt/nvim/bin/nvim /usr/local/bin/nvim
}
install_neovim_macos() {
if need_cmd brew; then
brew install neovim
else
echo "Homebrew not found. Install brew or neovim manually." >&2
return 1
fi
}
ensure_neovim() {
if need_cmd nvim; then
return 0
fi
echo "neovim not found; installing..."
if [[ -n "${linux:-}" ]]; then
install_neovim_linux
else
install_neovim_macos
fi
}
# --- Ensure nvim installed before linking config ---
ensure_neovim
2024-06-20 00:53:35 +01:00
# install neovim config
if [ ! -d "$HOME/.config/nvim" ]; then
mkdir -p "$HOME/.config"
ln -s "$HOME/dotfiles/nvim" "$HOME/.config/nvim" || :
2025-09-25 22:28:48 +01:00
fi
2024-06-20 00:53:35 +01:00
# install starship config
mkdir -p "$HOME/.config"
2024-12-08 15:49:58 +00:00
ln -s "$HOME/dotfiles/starship.toml" "$HOME/.config/starship.toml" || :
2024-06-20 00:53:35 +01:00
if [ ! -n "${linux:-}" ]; then
ln -s "$HOME/dotfiles/aerospace.toml" "$HOME/.aerospace.toml" || :
2024-12-08 15:49:58 +00:00
for d in sketchybar borders neovide ghostty; do
[ -d "$HOME/.config/$d" ] || ln -s "$HOME/dotfiles/$d" "$HOME/.config/$d" || :
done
2024-10-28 19:39:02 +00:00
else
for d in sway waybar rofi dunst; do
[ -d "$HOME/.config/$d" ] || ln -s "$HOME/dotfiles/$d" "$HOME/.config/$d" || :
done
2024-08-30 00:19:51 +01:00
fi