From 39675a8feed7d9bd23e0acc5168465302a32f985 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Tue, 7 Jul 2026 16:14:41 +0200 Subject: neovim: bootstrap Skript hinzugefügt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bootstrap-nvim.sh | 141 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100755 bootstrap-nvim.sh (limited to 'bootstrap-nvim.sh') diff --git a/bootstrap-nvim.sh b/bootstrap-nvim.sh new file mode 100755 index 0000000..d3135a5 --- /dev/null +++ b/bootstrap-nvim.sh @@ -0,0 +1,141 @@ +#!/bin/sh + +set -eu + +OS="$(uname -s)" + +have() { + command -v "$1" >/dev/null 2>&1 +} + +check_prerequisites() { + case "$OS" in + Darwin) + if ! have brew; then + echo "Homebrew ist nicht installiert." + exit 1 + fi + ;; + esac +} + +setup_homebrew_env() { + case "$OS" in + Darwin) + export HOMEBREW_NO_AUTO_UPDATE=1 + export HOMEBREW_NO_INSTALL_CLEANUP=1 + ;; + esac +} + +install() { + case "$OS" in + Darwin) + brew install "$1" + ;; + FreeBSD) + pkg install -y "$1" + ;; + esac +} + +install_pkg() { + binary="$1" + package="$2" + + if have "$binary"; then + printf "✓ %-32s vorhanden\n" "$binary" + return + fi + + printf "→ Installiere %s\n" "$package" + install "$package" +} + +install_npm() { + binary="$1" + package="$2" + + if have "$binary"; then + printf "✓ %-32s vorhanden\n" "$binary" + return + fi + + if ! have npm; then + echo "npm wurde nicht gefunden." + exit 1 + fi + + printf "→ Installiere npm-Paket %s\n" "$package" + npm install -g "$package" +} + +# === Voraussetzungen === + +check_prerequisites +setup_homebrew_env + +install_pkg curl curl +install_pkg git git +install_pkg node node +install_pkg python3 python + +# === Formatter === + +install_pkg gawk gawk +install_pkg jq jq +install_npm prettier prettier +install_pkg ruff ruff +install_pkg shfmt shfmt +install_pkg stylua stylua +install_pkg yamlfmt yamlfmt + +case "$OS" in +Darwin) + install_pkg clang-format clang-format + ;; +FreeBSD) + install_pkg xmllint libxml2 + ;; +esac + +# === Tools === + +install_pkg rg ripgrep + +case "$OS" in +Darwin) + install_pkg gmake make + install_pkg fd fd + install_pkg tree-sitter tree-sitter + ;; +FreeBSD) + install_pkg gmake gmake + install_pkg fd fd-find + install_pkg tree-sitter tree-sitter-cli + ;; +esac + +# === Language Server === + +install_npm basedpyright-langserver basedpyright +install_npm bash-language-server bash-language-server + +case "$OS" in +Darwin) + install_pkg shellcheck shellcheck + ;; +FreeBSD) + install_pkg shellcheck hs-ShellCheck + ;; +esac + +install_pkg clangd llvm +install_npm vscode-html-language-server vscode-langservers-extracted +install_npm vscode-json-language-server vscode-langservers-extracted +install_pkg lua-language-server lua-language-server +install_npm prisma-language-server @prisma/language-server +install_npm vtsls @vtsls/language-server + +echo +echo "Bootstrap abgeschlossen." -- cgit v1.3