diff --git a/scripts/macos-install.sh b/scripts/macos-install.sh deleted file mode 100755 index d67beb5..0000000 --- a/scripts/macos-install.sh +++ /dev/null @@ -1,218 +0,0 @@ -#!/usr/bin/env bash -# macos-install.sh — Bootstrap Doom Emacs development environment on macOS -# Run once on a fresh machine. Idempotent — safe to re-run. -# Usage: bash scripts/macos-install.sh - -set -euo pipefail - -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -RED='\033[0;31m' -NC='\033[0m' - -info() { echo -e "${GREEN}▶${NC} $*"; } -warn() { echo -e "${YELLOW}⚠${NC} $*"; } -error() { echo -e "${RED}✗${NC} $*"; } -section() { echo -e "\n${GREEN}══ $* ══${NC}"; } - -# ─── Homebrew ─────────────────────────────────────────────────────────────── -section "Homebrew" -if ! command -v brew &>/dev/null; then - info "Installing Homebrew..." - /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -else - info "Homebrew already installed" -fi - -# ─── Core GNU tools (Doom prefers GNU over BSD) ────────────────────────────── -section "Core GNU tools" -brew install --quiet \ - coreutils \ - gnu-sed \ - findutils \ - grep \ - git \ - curl \ - wget \ - jq - -# ─── Doom Emacs prerequisites ──────────────────────────────────────────────── -section "Doom Emacs prerequisites" -brew install --quiet \ - cmake \ - libtool \ - automake \ - autoconf \ - pkg-config \ - texinfo \ - sqlite \ - tree-sitter - -# ─── Emacs (if not already installed) ─────────────────────────────────────── -section "Emacs" -if ! command -v emacs &>/dev/null; then - warn "Emacs not found. Install manually:" - warn " brew install --cask emacs # pre-built GUI" - warn " OR build from source with MacPorts/Homebrew for latest patches" -else - info "Emacs: $(emacs --version | head -1)" -fi - -# ─── Search tools (Doom/Vertico/Consult use these) ─────────────────────────── -section "Search & navigation tools" -brew install --quiet \ - fd \ - ripgrep \ - fzf \ - bat \ - the_silver_searcher - -# ─── Spell & grammar ───────────────────────────────────────────────────────── -section "Spell & grammar" -brew install --quiet \ - ispell \ - languagetool - -# ─── Email (mu4e + mbsync) ─────────────────────────────────────────────────── -section "Email — mu4e" -brew install --quiet \ - mu \ - isync - -# ─── PDF tools ─────────────────────────────────────────────────────────────── -section "PDF tools" -brew install --quiet \ - poppler \ - mupdf-tools - -# ─── Fonts (Doom uses nerd-fonts) ──────────────────────────────────────────── -section "Fonts" -brew install --quiet --cask \ - font-jetbrains-mono-nerd-font \ - font-fira-code-nerd-font \ - 2>/dev/null || warn "Font casks may need manual install from nerd-fonts" - -# ─── Perl ──────────────────────────────────────────────────────────────────── -section "Perl" -brew install --quiet perl - -# Install cpanm -if ! command -v cpanm &>/dev/null; then - info "Installing cpanm..." - curl -L https://cpanmin.us | perl - App::cpanminus -fi - -info "Installing Perl modules (LSP, Tidy, Critic)..." -cpanm --quiet --notest \ - Perl::LanguageServer \ - Perl::Tidy \ - Perl::Critic \ - App::perlimports \ - 2>/dev/null || warn "Some Perl modules failed — run cpanm manually if needed" - -# ─── Python ────────────────────────────────────────────────────────────────── -section "Python" -brew install --quiet \ - python \ - pyenv \ - ruff \ - uv - -# Pyright LSP -if ! command -v pyright &>/dev/null; then - info "Installing pyright..." - npm install -g pyright 2>/dev/null || warn "npm not found, install node first: brew install node" -fi - -# ─── Go ────────────────────────────────────────────────────────────────────── -section "Go" -brew install --quiet go - -info "Installing Go tools..." -go install golang.org/x/tools/gopls@latest 2>/dev/null || warn "gopls install failed" -go install golang.org/x/tools/cmd/goimports@latest 2>/dev/null || warn "goimports install failed" -go install github.com/go-delve/delve/cmd/dlv@latest 2>/dev/null || warn "delve install failed" - -# ─── Node.js (needed for some LSPs) ───────────────────────────────────────── -section "Node.js" -brew install --quiet node - -# ─── Ansible ───────────────────────────────────────────────────────────────── -section "Ansible" -brew install --quiet \ - ansible \ - ansible-lint - -# ─── Terraform ─────────────────────────────────────────────────────────────── -section "Terraform" -brew install --quiet \ - terraform \ - terraform-ls \ - tflint - -# ─── Containers (Podman) ───────────────────────────────────────────────────── -section "Podman / Containers" -brew install --quiet \ - podman \ - hadolint - -# ─── Kubernetes ────────────────────────────────────────────────────────────── -section "Kubernetes tools" -brew install --quiet \ - kubectl \ - kubectx - -# ─── Version control extras ────────────────────────────────────────────────── -section "Git extras" -brew install --quiet \ - git-delta \ - gh - -# ─── perltidy config (if missing) ──────────────────────────────────────────── -section "perltidy config" -if [ ! -f "$HOME/.perltidyrc" ]; then - info "Creating ~/.perltidyrc..." - cat > "$HOME/.perltidyrc" << 'PERLTIDY' --l=100 --i=4 --ci=4 --ce --vt=0 --cti=0 --pt=0 --bt=0 --sbt=0 --bbt=0 --nsfs --nolq -PERLTIDY -fi - -# ─── Doom Emacs setup ──────────────────────────────────────────────────────── -section "Doom Emacs" -if [ ! -d "$HOME/.emacs.d" ]; then - warn "Doom not installed. To install:" - warn " git clone --depth 1 https://github.com/doomemacs/doomemacs ~/.emacs.d" - warn " ~/.emacs.d/bin/doom install" -elif [ ! -d "$HOME/.doom.d" ]; then - warn "~/.doom.d missing. Clone your config:" - warn " git clone https://git.apps.sukany.cz/martin/emacs-doom ~/.doom.d" - warn " git clone https://git.apps.sukany.cz/martin/emacs-org ~/org" - warn " ~/.emacs.d/bin/doom sync" -else - info "Doom config found at ~/.doom.d" - info "Run: ~/.emacs.d/bin/doom sync" -fi - -# ─── Summary ───────────────────────────────────────────────────────────────── -section "Done" -echo "" -echo "Manual steps remaining:" -echo " 1. Create ~/.authinfo with CalDAV credentials" -echo " machine cal.apps.sukany.cz login martin password YOUR_PASS" -echo " 2. Configure mbsync: cp ~/.doom.d/examples/mbsyncrc ~/.mbsyncrc" -echo " 3. If Emacs built from source: sudo port install texinfo tree-sitter" -echo " 4. doom sync (in ~/.doom.d)" -echo " 5. doom doctor (check for remaining issues)" -echo "" -info "Installation complete."