50 lines
1.8 KiB
Bash
Executable File
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"
|