From bb70769ffdc3b93329f364f47c49148658a03d44 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Thu, 23 Jul 2026 10:16:22 +0200 Subject: windows: cmd-Style %VAR%-Syntax in PowerShell-Kontexten korrigiert setx PATH "%PATH%;..." funktioniert in PowerShell nicht wie in cmd.exe (kein automatisches Expandieren von %VAR%) und haette zusaetzlich den kompletten Prozess-PATH inkl. System-Anteil dauerhaft in den User-PATH kopiert. Ersetzt durch [Environment]::GetEnvironmentVariable/SetEnviron- mentVariable("PATH", ..., "User") in bootstrap/neovim-win.ps1 und neovim-windows-setup.md. Ausserdem klargestellt, dass windows/bin/gmake.cmd bewusst die einzige Nicht-PowerShell-Datei im Windows-Zweig bleibt. --- bootstrap/neovim-win.ps1 | 7 +++++-- neovim-windows-setup.md | 7 ++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/bootstrap/neovim-win.ps1 b/bootstrap/neovim-win.ps1 index 60ed0ea..a2e755b 100644 --- a/bootstrap/neovim-win.ps1 +++ b/bootstrap/neovim-win.ps1 @@ -115,8 +115,11 @@ function Install-Tools { # opt.makeprg = "gmake" (nvim/lua/config/options.lua) - Alias liegt in # windows/bin/gmake.cmd, reicht an "make" durch. Einmalig windows\bin - # zum PATH hinzufuegen, z.B.: - # setx PATH "%PATH%;%USERPROFILE%\dotfiles\windows\bin" + # zum PATH hinzufuegen (PowerShell, User-Scope, nicht setx mit %PATH% + # verwenden - das wuerde den gesamten Prozess-PATH inkl. System-Anteil + # dauerhaft in den User-PATH kopieren): + # $userPath = [Environment]::GetEnvironmentVariable("PATH", "User") + # [Environment]::SetEnvironmentVariable("PATH", "$userPath;$env:USERPROFILE\dotfiles\windows\bin", "User") Install-WingetPackage -Binary "make" -Id "GnuWin32.Make" } diff --git a/neovim-windows-setup.md b/neovim-windows-setup.md index bc27f4a..61c4b08 100644 --- a/neovim-windows-setup.md +++ b/neovim-windows-setup.md @@ -2,7 +2,7 @@ Checkliste für die Übernahme der bestehenden `nvim/`-Config aus dem Dotfiles-Repo auf ein natives Windows-System (kein WSL). Repo selbst bleibt unverändert. -Alle Windows-Skripte in diesem Repo sind reines PowerShell (kein Git Bash, kein WSL). Falls die Ausführung durch die Execution Policy blockiert wird, entweder pro Aufruf `powershell -ExecutionPolicy Bypass -File .\skript.ps1` verwenden, oder einmalig `Set-ExecutionPolicy -Scope CurrentUser RemoteSigned`. +Alle Windows-Skripte in diesem Repo sind reines PowerShell (kein Git Bash, kein WSL) – mit einer Ausnahme: `windows\bin\gmake.cmd` ist ein trivialer Ein-Zeiler-Wrapper, für den sich eine `.ps1`-Datei nicht lohnt. Falls die Ausführung der `.ps1`-Skripte durch die Execution Policy blockiert wird, entweder pro Aufruf `powershell -ExecutionPolicy Bypass -File .\skript.ps1` verwenden, oder einmalig `Set-ExecutionPolicy -Scope CurrentUser RemoteSigned`. ## 1. Grundwerkzeuge installieren @@ -41,9 +41,10 @@ Nach Änderungen im Repo `install-win.ps1` erneut ausführen, um die Kopien zu a Installiert per `winget`/`npm`: Git, Node, Formatter (jq, prettier, ruff, shfmt, stylua, yamlfmt, gawk, xmllint), Tools (ripgrep, fd, tree-sitter-cli, zig als C-Compiler für Treesitter, make) und LSP-Server (basedpyright, bash-language-server, clangd, shellcheck, vscode-langservers-extracted, lua-language-server, prisma, vtsls). Einzelne Pakete, die fehlschlagen, werden als Warnung gemeldet statt das Skript abzubrechen – Details siehe Kopfkommentar im Skript (einige winget-IDs, v. a. GnuWin32.Gawk/Libxml2, google.yamlfmt, mvdan.shfmt, astral-sh.ruff, zig.zig, sind ungeprüft). -`windows\bin` (enthält `gmake.cmd`, Wrapper für `opt.makeprg = "gmake"`) danach einmalig zum PATH hinzufügen: +`windows\bin` (enthält `gmake.cmd`, Wrapper für `opt.makeprg = "gmake"`) danach einmalig zum PATH hinzufügen (PowerShell, User-Scope – nicht `setx PATH "%PATH%;..."` verwenden, das würde den kompletten Prozess-PATH inkl. System-Anteil dauerhaft in den User-PATH kopieren): ```powershell -setx PATH "%PATH%;%USERPROFILE%\dotfiles\windows\bin" +$userPath = [Environment]::GetEnvironmentVariable("PATH", "User") +[Environment]::SetEnvironmentVariable("PATH", "$userPath;$env:USERPROFILE\dotfiles\windows\bin", "User") ``` ## 4. Bekannte Stolpersteine -- cgit v1.3