#!/usr/bin/env bash # Personal workstation dev dependencies — Fedora # Languages: C, C++, Rust, Go, Emacs Lisp, LaTeX set -euo pipefail # --- Core tools --- sudo dnf install -y \ emacs \ git \ ripgrep \ fd-find \ stow # --- C / C++ --- sudo dnf install -y \ gcc \ gcc-c++ \ clang \ clang-tools-extra \ cmake \ ninja-build # --- Rust (latest stable via rustup) --- if ! command -v rustup &>/dev/null; then curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path fi # shellcheck source=/dev/null source "$HOME/.cargo/env" rustup update stable rustup component add rust-analyzer rust-src clippy rustfmt # --- Go (latest stable — go.dev does not use LTS; update GO_VERSION as needed) --- GO_VERSION="1.24.2" INSTALLED=$(go version 2>/dev/null | awk '{print $3}' || true) if [[ "$INSTALLED" != "go${GO_VERSION}" ]]; then curl -fsSL "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" -o /tmp/go.tar.gz sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf /tmp/go.tar.gz rm /tmp/go.tar.gz fi export PATH="/usr/local/go/bin:$PATH" # gopls language server go install golang.org/x/tools/gopls@latest # --- LaTeX --- # texlive-scheme-medium covers most common packages including latexmk # liturg is a liturgical typesetting package (plainchant, etc.) sudo dnf install -y \ texlive-scheme-medium \ texlive-liturg \ zathura \ zathura-pdf-mupdf \ aspell \ aspell-en # Inverse search: Zathura → Emacs via Ctrl+click # Add to ~/.config/zathura/zathurarc if not already present: # set synctex-editor-command "emacsclient +%{line} %{input}" ZATHURA_RC="$HOME/.config/zathura/zathurarc" if ! grep -q "synctex-editor-command" "$ZATHURA_RC" 2>/dev/null; then mkdir -p "$(dirname "$ZATHURA_RC")" echo 'set synctex-editor-command "emacsclient +%{line} %{input}"' >> "$ZATHURA_RC" fi echo "Personal dev dependencies installed."