aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Schmucker <ts@its1.de>2026-09-05 09:49:59 +0200
committerThomas Schmucker <ts@its1.de>2026-09-05 09:49:59 +0200
commit84755d0981123ace06786b5477a73dbd39b1a9d6 (patch)
tree776b197fe227adaf5d09cb501967ba80b58bc0af
parent9a11bc2be48a8a9021cbf06c691bfb3ced886a4c (diff)
parent98b344cbacff5fad784b88abcf05186994edcef8 (diff)
downloaddotfiles-84755d0981123ace06786b5477a73dbd39b1a9d6.tar.gz
dotfiles-84755d0981123ace06786b5477a73dbd39b1a9d6.tar.bz2
dotfiles-84755d0981123ace06786b5477a73dbd39b1a9d6.zip
Merge branch 'master' into add-ansible-support
-rw-r--r--bootstrap-win/neovim.ps14
-rwxr-xr-xbootstrap/neovim.sh27
-rw-r--r--neovim-windows-setup.md6
-rw-r--r--nvim/lua/config/filetypes.lua7
-rw-r--r--nvim/lua/config/treesitter.lua2
-rw-r--r--nvim/lua/plugins/format.lua2
-rw-r--r--windows/bin/system-update.cmd6
-rw-r--r--zsh/zshrc24
8 files changed, 58 insertions, 20 deletions
diff --git a/bootstrap-win/neovim.ps1 b/bootstrap-win/neovim.ps1
index c12ed6b..40f6312 100644
--- a/bootstrap-win/neovim.ps1
+++ b/bootstrap-win/neovim.ps1
@@ -6,7 +6,7 @@
6 Aufruf (keine Admin-Rechte noetig): 6 Aufruf (keine Admin-Rechte noetig):
7 .\bootstrap-win\neovim.ps1 7 .\bootstrap-win\neovim.ps1
8 8
9 yamlfmt, gawk und xmllint sind bewusst nicht enthalten (siehe 9 yamlfmt, gawk, xmllint und djlint sind bewusst nicht enthalten (siehe
10 neovim-windows-setup.md). Fehlgeschlagene Installationen werden als 10 neovim-windows-setup.md). Fehlgeschlagene Installationen werden als
11 Warnung gemeldet, das Skript bricht nicht ab. 11 Warnung gemeldet, das Skript bricht nicht ab.
12#> 12#>
@@ -177,7 +177,7 @@ function Install-Formatters {
177 Install-WingetPackage -Binary "shfmt" -Id "mvdan.shfmt" 177 Install-WingetPackage -Binary "shfmt" -Id "mvdan.shfmt"
178 Install-WingetPackage -Binary "stylua" -Id "JohnnyMorganz.StyLua" 178 Install-WingetPackage -Binary "stylua" -Id "JohnnyMorganz.StyLua"
179 179
180 # yamlfmt, gawk, xmllint: kein winget-Paket gefunden, siehe neovim-windows-setup.md. 180 # yamlfmt, gawk, xmllint, djlint: kein winget-Paket gefunden, siehe neovim-windows-setup.md.
181} 181}
182 182
183function Install-Tools { 183function Install-Tools {
diff --git a/bootstrap/neovim.sh b/bootstrap/neovim.sh
index 6010af3..e1a9112 100755
--- a/bootstrap/neovim.sh
+++ b/bootstrap/neovim.sh
@@ -78,10 +78,36 @@ install_npm() {
78 npm install -g "$package" 78 npm install -g "$package"
79} 79}
80 80
81install_pipx() {
82 binary="$1"
83 package="$2"
84
85 if have "$binary"; then
86 printf "✓ %-32s vorhanden\n" "$binary"
87 return
88 fi
89
90 if ! have pipx; then
91 die "pipx wurde nicht gefunden."
92 fi
93
94 printf "→ Installiere pipx-Paket %s\n" "$package"
95 pipx install "$package"
96}
97
81install_prerequisites() { 98install_prerequisites() {
82 install_pkg curl curl 99 install_pkg curl curl
83 install_pkg git git 100 install_pkg git git
84 install_pkg node node 101 install_pkg node node
102
103 case "$OS" in
104 Darwin)
105 install_pkg pipx pipx
106 ;;
107 FreeBSD)
108 install_pkg pipx devel/py-pipx
109 ;;
110 esac
85} 111}
86 112
87install_formatters() { 113install_formatters() {
@@ -92,6 +118,7 @@ install_formatters() {
92 install_pkg shfmt shfmt 118 install_pkg shfmt shfmt
93 install_pkg stylua stylua 119 install_pkg stylua stylua
94 install_pkg yamlfmt yamlfmt 120 install_pkg yamlfmt yamlfmt
121 install_pipx djlint djlint
95 122
96 case "$OS" in 123 case "$OS" in
97 Darwin) 124 Darwin)
diff --git a/neovim-windows-setup.md b/neovim-windows-setup.md
index c2a4df6..801beef 100644
--- a/neovim-windows-setup.md
+++ b/neovim-windows-setup.md
@@ -9,7 +9,7 @@ Alle Windows-Skripte in diesem Repo sind reines PowerShell (kein Git Bash, kein
9- **`winget` selbst muss vorhanden sein** ("App Installer" aus dem Microsoft Store) – `bootstrap-win/neovim.ps1` prüft das und bricht mit klarer Meldung ab, kann `winget` aber nicht selbst nachinstallieren. 9- **`winget` selbst muss vorhanden sein** ("App Installer" aus dem Microsoft Store) – `bootstrap-win/neovim.ps1` prüft das und bricht mit klarer Meldung ab, kann `winget` aber nicht selbst nachinstallieren.
10- **Nach jedem Skript-Lauf ein neues Terminal öffnen**, bevor `nvim` das erste Mal gestartet wird. PATH-Änderungen (durch winget/npm-Installer oder `install-win.ps1`) landen in der Registry, aber die aktuell offene Shell bekommt das nicht automatisch mit. 10- **Nach jedem Skript-Lauf ein neues Terminal öffnen**, bevor `nvim` das erste Mal gestartet wird. PATH-Änderungen (durch winget/npm-Installer oder `install-win.ps1`) landen in der Registry, aber die aktuell offene Shell bekommt das nicht automatisch mit.
11- **PATH-Registrierung stichprobenartig prüfen** – manche winget-Pakete tragen sich nicht automatisch in den PATH ein (im Praxistest z. B. `LLVM.LLVM`: bereits installiert, aber `clangd` nicht im PATH, vermutlich weil der `--silent`-Installer die PATH-Registrierung überspringt). Nach einem neuen Terminal kurz `Get-Command clangd, jq, make` aufrufen; fehlt eins, dessen Installationsordner (bei LLVM z. B. `C:\Program Files\LLVM\bin`) manuell zum User-PATH hinzufügen (gleiches Muster wie `Add-BinToUserPath` in `install-win.ps1`). 11- **PATH-Registrierung stichprobenartig prüfen** – manche winget-Pakete tragen sich nicht automatisch in den PATH ein (im Praxistest z. B. `LLVM.LLVM`: bereits installiert, aber `clangd` nicht im PATH, vermutlich weil der `--silent`-Installer die PATH-Registrierung überspringt). Nach einem neuen Terminal kurz `Get-Command clangd, jq, make` aufrufen; fehlt eins, dessen Installationsordner (bei LLVM z. B. `C:\Program Files\LLVM\bin`) manuell zum User-PATH hinzufügen (gleiches Muster wie `Add-BinToUserPath` in `install-win.ps1`).
12- **yamlfmt, gawk, xmllint (libxml2) manuell installieren, falls benötigt** – im Praxistest bestätigt, dass es dafür keine winget-Pakete gibt ("Es wurde kein Paket gefunden, das den Eingabekriterien entspricht"), deshalb absichtlich nicht in `bootstrap-win/neovim.ps1` enthalten. Betrifft nur die Formatierung von awk-, xml/xsd- und yaml-Dateien (`conform.nvim` fällt sonst auf LSP-Formatierung zurück). Bekannte Alternativen: yamlfmt via `go install github.com/google/yamlfmt/cmd/yamlfmt@latest` (falls Go installiert) oder Binary von den GitHub-Releases; für gawk/xmllint keine verifizierte Windows-native Quelle gefunden, ggf. `winget search gawk` / `winget search libxml2` selbst prüfen. 12- **yamlfmt, gawk, xmllint (libxml2), djlint manuell installieren, falls benötigt** – im Praxistest bestätigt, dass es dafür keine winget-Pakete gibt ("Es wurde kein Paket gefunden, das den Eingabekriterien entspricht"), deshalb absichtlich nicht in `bootstrap-win/neovim.ps1` enthalten. Betrifft die Formatierung von awk-, xml/xsd-, yaml- und jinja-Dateien (`conform.nvim` fällt sonst auf LSP-Formatierung zurück, für `jinja` gibt es aktuell keinen LSP-Fallback). Bekannte Alternativen: yamlfmt via `go install github.com/google/yamlfmt/cmd/yamlfmt@latest` (falls Go installiert) oder Binary von den GitHub-Releases; djlint ist ein reines Python-Paket, daher `pip install djlint` bzw. `pipx install djlint` (Python muss dafür separat installiert sein, siehe Abschnitt 1); für gawk/xmllint keine verifizierte Windows-native Quelle gefunden, ggf. `winget search gawk` / `winget search libxml2` selbst prüfen.
13- **Reihenfolge**: `install-win.ps1`, `bootstrap-win/git.ps1`, `bootstrap-win/neovim.ps1` und `bootstrap-win/neovim-dict.ps1` sind unabhängig voneinander. Empfehlenswert: erst Neovim/Node (Abschnitt 1) installieren, dann alle Bootstrap-Skripte laufen lassen, dann neues Terminal öffnen, dann `nvim` starten (lädt beim ersten Start automatisch alle Lua-Plugins via `lazy.nvim` – Internetverbindung nötig). 13- **Reihenfolge**: `install-win.ps1`, `bootstrap-win/git.ps1`, `bootstrap-win/neovim.ps1` und `bootstrap-win/neovim-dict.ps1` sind unabhängig voneinander. Empfehlenswert: erst Neovim/Node (Abschnitt 1) installieren, dann alle Bootstrap-Skripte laufen lassen, dann neues Terminal öffnen, dann `nvim` starten (lädt beim ersten Start automatisch alle Lua-Plugins via `lazy.nvim` – Internetverbindung nötig).
14- **Neovim immer aus einer "Developer PowerShell for VS" starten** (Startmenü-Eintrag, den Visual Studio/die Build Tools mitbringen), nicht aus normalem Windows Terminal/PowerShell. `cl.exe` (MSVC) braucht die `INCLUDE`/`LIB`-Umgebungsvariablen aus `vcvarsall.bat`, die nur in dieser Developer-Shell gesetzt sind – siehe Abschnitt 4. 14- **Neovim immer aus einer "Developer PowerShell for VS" starten** (Startmenü-Eintrag, den Visual Studio/die Build Tools mitbringen), nicht aus normalem Windows Terminal/PowerShell. `cl.exe` (MSVC) braucht die `INCLUDE`/`LIB`-Umgebungsvariablen aus `vcvarsall.bat`, die nur in dieser Developer-Shell gesetzt sind – siehe Abschnitt 4.
15 15
@@ -29,7 +29,7 @@ Git und `delta` (Pager, von `git/config` vorausgesetzt: `pager = delta`, `diffFi
29.\bootstrap-win\git.ps1 29.\bootstrap-win\git.ps1
30``` 30```
31 31
32(Kein Python nötig – der Python-Provider ist in `options.lua` deaktiviert. Auch kein separater C-Compiler nötig – MSVC ist auf den Zielsystemen bereits vorhanden, siehe Abschnitt 3 bzw. 4.) 32(Kein Python nötig – der Python-Provider ist in `options.lua` deaktiviert. Auch kein separater C-Compiler nötig – MSVC ist auf den Zielsystemen bereits vorhanden, siehe Abschnitt 3 bzw. 4. Nur für `djlint` als Jinja-Formatter wird optional ein eigenes Python benötigt, siehe Abschnitt 0.)
33 33
34## 2. Konfiguration einrichten (Windows-nativer Weg) 34## 2. Konfiguration einrichten (Windows-nativer Weg)
35 35
@@ -56,7 +56,7 @@ Nach Änderungen im Repo `install-win.ps1` erneut ausführen, um die Kopien zu a
56.\bootstrap-win\neovim.ps1 56.\bootstrap-win\neovim.ps1
57``` 57```
58 58
59Installiert per `winget`/`npm`: Git, Node, Formatter (jq, prettier, ruff, shfmt, stylua), Tools (ripgrep, fd, tree-sitter-cli, make über `ezwinports.make`) und LSP-Server (basedpyright, bash-language-server, clangd, shellcheck, vscode-langservers-extracted, lua-language-server, prisma, vtsls). Im Praxistest (24.07.2026) erfolgreich; yamlfmt/gawk/xmllint bewusst nicht enthalten (siehe Abschnitt 0). Einzelne Pakete, die trotzdem fehlschlagen, werden als Warnung gemeldet statt das Skript abzubrechen, inklusive der letzten Zeilen der winget-Fehlermeldung. 59Installiert per `winget`/`npm`: Git, Node, Formatter (jq, prettier, ruff, shfmt, stylua), Tools (ripgrep, fd, tree-sitter-cli, make über `ezwinports.make`) und LSP-Server (basedpyright, bash-language-server, clangd, shellcheck, vscode-langservers-extracted, lua-language-server, prisma, vtsls). Im Praxistest (24.07.2026) erfolgreich; yamlfmt/gawk/xmllint/djlint bewusst nicht enthalten (siehe Abschnitt 0). Einzelne Pakete, die trotzdem fehlschlagen, werden als Warnung gemeldet statt das Skript abzubrechen, inklusive der letzten Zeilen der winget-Fehlermeldung.
60 60
61Kein C-Compiler-Paket enthalten: MSVC ist auf den Zielsystemen bereits vorhanden, `nvim-treesitter` nutzt `cl.exe`. Dafür muss Neovim aber aus einer "Developer PowerShell for VS" gestartet werden (siehe Abschnitt 4). 61Kein C-Compiler-Paket enthalten: MSVC ist auf den Zielsystemen bereits vorhanden, `nvim-treesitter` nutzt `cl.exe`. Dafür muss Neovim aber aus einer "Developer PowerShell for VS" gestartet werden (siehe Abschnitt 4).
62 62
diff --git a/nvim/lua/config/filetypes.lua b/nvim/lua/config/filetypes.lua
index a850028..3161d40 100644
--- a/nvim/lua/config/filetypes.lua
+++ b/nvim/lua/config/filetypes.lua
@@ -33,4 +33,11 @@ vim.filetype.add({
33-- yaml.ansible soll den regulaeren yaml-Parser von Treesitter verwenden. 33-- yaml.ansible soll den regulaeren yaml-Parser von Treesitter verwenden.
34vim.treesitter.language.register("yaml", M.ANSIBLE_YAML) 34vim.treesitter.language.register("yaml", M.ANSIBLE_YAML)
35 35
36-- jinja support
37vim.filetype.add({
38 extension = {
39 j2 = "jinja",
40 },
41})
42
36return M 43return M
diff --git a/nvim/lua/config/treesitter.lua b/nvim/lua/config/treesitter.lua
index 1eee267..f122f37 100644
--- a/nvim/lua/config/treesitter.lua
+++ b/nvim/lua/config/treesitter.lua
@@ -7,6 +7,8 @@ M.languages = {
7 "cpp", 7 "cpp",
8 "html", 8 "html",
9 "javascript", 9 "javascript",
10 -- "jinja",
11 -- "jinja_inline",
10 "jq", 12 "jq",
11 "json", 13 "json",
12 "lua", 14 "lua",
diff --git a/nvim/lua/plugins/format.lua b/nvim/lua/plugins/format.lua
index 8ca7f1b..8b40229 100644
--- a/nvim/lua/plugins/format.lua
+++ b/nvim/lua/plugins/format.lua
@@ -1,6 +1,7 @@
1-- Verfügbare Formater: https://github.com/stevearc/conform.nvim/tree/master/lua/conform/formatters 1-- Verfügbare Formater: https://github.com/stevearc/conform.nvim/tree/master/lua/conform/formatters
2 2
3local clang = {} 3local clang = {}
4local djlint = { "djlint" } -- pipx install djlint (macOS & FreeBSD); unter Windows kein winget-Paket, siehe neovim-windows-setup.md
4local gawk = { "gawk" } -- brew install gawk, pkg install gawk 5local gawk = { "gawk" } -- brew install gawk, pkg install gawk
5local jq = { "jq" } -- brew install jq, pkg install jq 6local jq = { "jq" } -- brew install jq, pkg install jq
6local prettier = { "prettier" } -- npm install -g prettier 7local prettier = { "prettier" } -- npm install -g prettier
@@ -30,6 +31,7 @@ return {
30 cpp = clang, 31 cpp = clang,
31 html = prettier, 32 html = prettier,
32 javascript = prettier, 33 javascript = prettier,
34 jinja = djlint,
33 json = jq, 35 json = jq,
34 lua = stylua, 36 lua = stylua,
35 python = ruff, 37 python = ruff,
diff --git a/windows/bin/system-update.cmd b/windows/bin/system-update.cmd
index 64a7b9f..6c355d0 100644
--- a/windows/bin/system-update.cmd
+++ b/windows/bin/system-update.cmd
@@ -1,10 +1,10 @@
1@echo off 1@echo off
2 2
3call npm-update.cmd 3call pkg-update.cmd
4if errorlevel 1 exit /b 1 4if errorlevel 1 exit /b 1
5 5
6call nvim-update.cmd 6call npm-update.cmd
7if errorlevel 1 exit /b 1 7if errorlevel 1 exit /b 1
8 8
9call pkg-update.cmd 9call nvim-update.cmd
10if errorlevel 1 exit /b 1 10if errorlevel 1 exit /b 1
diff --git a/zsh/zshrc b/zsh/zshrc
index acd9ed5..41dc612 100644
--- a/zsh/zshrc
+++ b/zsh/zshrc
@@ -80,17 +80,6 @@ alias pwgen='pwgen -s 48 1'
80alias ls='ls -G' 80alias ls='ls -G'
81 81
82# Funktionen 82# Funktionen
83npm-update() {
84 npm update -g --loglevel=info
85}
86
87nvim-update() {
88 nvim --headless \
89 -c "lua require[[lazy]].sync({ wait = true })" \
90 -c "UpdateParsers" \
91 -c "qa"
92}
93
94pkg-update() { 83pkg-update() {
95 case "$OSTYPE" in 84 case "$OSTYPE" in
96 darwin*) 85 darwin*)
@@ -106,6 +95,17 @@ pkg-update() {
106 esac 95 esac
107} 96}
108 97
98npm-update() {
99 npm update -g --loglevel=info
100}
101
102nvim-update() {
103 nvim --headless \
104 -c "lua require[[lazy]].sync({ wait = true })" \
105 -c "UpdateParsers" \
106 -c "qa"
107}
108
109pkg-clean() { 109pkg-clean() {
110 case "$OSTYPE" in 110 case "$OSTYPE" in
111 darwin*) 111 darwin*)
@@ -122,9 +122,9 @@ pkg-clean() {
122} 122}
123 123
124system-update() { 124system-update() {
125 pkg-update || return
125 npm-update || return 126 npm-update || return
126 nvim-update || return 127 nvim-update || return
127 pkg-update || return
128 128
129 if [[ "$1" == "--clean" ]]; then 129 if [[ "$1" == "--clean" ]]; then
130 pkg-clean 130 pkg-clean