Files
dotfiles/install/bootstrap.sh
2026-03-26 22:12:36 +02:00

50 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# bootstrap.sh — run this on a fresh Linux Mint install
set -euo pipefail
DOTFILES_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
CONFIGS_DIR="$DOTFILES_DIR/configs"
echo "==> Dotfiles bootstrap"
echo " dotfiles: $DOTFILES_DIR"
echo ""
# ─── install packages and tools ───────────────────────────────────────────────
bash "$CONFIGS_DIR/install/apt-packages.sh"
bash "$CONFIGS_DIR/install/rust.sh"
bash "$CONFIGS_DIR/install/docker.sh"
bash "$CONFIGS_DIR/install/node.sh"
bash "$CONFIGS_DIR/install/tools.sh"
bash "$CONFIGS_DIR/install/fonts.sh"
# ─── symlink configs with stow ────────────────────────────────────────────────
echo ""
echo "==> Symlinking configs with stow..."
cd "$CONFIGS_DIR"
for group in shell tmux alacritty git vscode; do
echo " stow $group -> ~"
stow -v --target="$HOME" "$group"
done
# ─── tmux plugins ─────────────────────────────────────────────────────────────
echo ""
echo "==> Installing tmux plugins (tpm)..."
if [ ! -d "$HOME/.tmux/plugins/tpm" ]; then
git clone https://github.com/tmux-plugins/tpm "$HOME/.tmux/plugins/tpm"
fi
# install plugins headlessly
"$HOME/.tmux/plugins/tpm/bin/install_plugins" || true
echo ""
echo "==> Installing VSCode extensions..."
if command -v code &>/dev/null; then
grep -v '^#' "$CONFIGS_DIR/vscode/extensions.txt" | grep -v '^$' | xargs -L1 code --install-extension
else
echo " code not found, skipping extensions"
fi
echo ""
echo "==> Done! Open a new terminal or run: source ~/.bashrc"