From b504e16f941470d46c0f8495f7ea4368e5d14871 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Thu, 23 Jul 2026 10:00:34 +0200 Subject: windows: install-win.cmd durch install-win.ps1 ersetzt, neovim-dict-win.ps1 ergaenzt install-win.cmd entfernt, install-win.ps1 (reines PowerShell) uebernimmt dieselbe Aufgabe (Config-Kopie nach %LOCALAPPDATA%\nvim, .gitconfig, config-up2parts, npmrc). Ausserdem bootstrap/neovim-dict-win.ps1 als PowerShell-Pendant zu bootstrap/neovim-dict.sh: laedt die deutschen Rechtschreib-Woerterbuecher nach %LOCALAPPDATA%\nvim-data\site\spell. neovim-windows-setup.md aktualisiert: verweist jetzt durchgehend auf die .ps1-Skripte statt .cmd/Git-Bash, Python-Installationsschritt entfernt (Provider ist deaktiviert), Stolperstein-Liste bereinigt. --- install-win.ps1 | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 install-win.ps1 (limited to 'install-win.ps1') diff --git a/install-win.ps1 b/install-win.ps1 new file mode 100644 index 0000000..41b3b51 --- /dev/null +++ b/install-win.ps1 @@ -0,0 +1,93 @@ +#Requires -Version 5.1 +<# + Windows-natives Pendant zu install.sh (ersetzt install-win.cmd). + install.sh bleibt unveraendert - kopiert (statt zu verlinken) die + relevanten Konfigurationen an ihre nativen Windows-Zielorte. Keine + Admin-Rechte noetig (keine Symlinks). + + Aufruf: + .\install-win.ps1 + + Falls die Ausfuehrung durch die Execution Policy blockiert wird: + powershell -ExecutionPolicy Bypass -File .\install-win.ps1 + + Hinweis: Es wird KOPIERT, nicht verlinkt. Nach Aenderungen im Repo + dieses Skript erneut ausfuehren, um die Kopien zu aktualisieren. +#> + +$ErrorActionPreference = "Stop" + +function Write-Ok($msg) { + Write-Host "OK $msg" -ForegroundColor Green +} + +function Write-Step($msg) { + Write-Host "==> $msg" -ForegroundColor Cyan +} + +function Write-SkipMsg($msg) { + Write-Host "- $msg" -ForegroundColor DarkGray +} + +$RepoRoot = $PSScriptRoot + +$NvimSrc = Join-Path $RepoRoot "nvim" +$NvimDst = Join-Path $env:LOCALAPPDATA "nvim" + +$GitConfigSrc = Join-Path $RepoRoot "git\config" +$GitConfigDst = Join-Path $env:USERPROFILE ".gitconfig" + +$GitUp2partsSrc = Join-Path $RepoRoot "git\config-up2parts" +$GitXdgDir = Join-Path $env:USERPROFILE ".config\git" +$GitUp2partsDst = Join-Path $GitXdgDir "config-up2parts" + +$NpmrcSrc = Join-Path $RepoRoot "npm\npmrc" +$NpmrcDst = Join-Path $env:USERPROFILE ".npmrc" + +function Copy-NvimConfig { + Write-Step "nvim -> $NvimDst" + + if (Test-Path $NvimDst) { + Remove-Item -Recurse -Force $NvimDst + } + + Copy-Item -Recurse -Force $NvimSrc $NvimDst + Write-Ok $NvimDst +} + +function Copy-GitConfig { + Write-Step "git\config -> $GitConfigDst" + Copy-Item -Force $GitConfigSrc $GitConfigDst + Write-Ok $GitConfigDst + + if (-not (Test-Path $GitXdgDir)) { + New-Item -ItemType Directory -Path $GitXdgDir -Force | Out-Null + } + + Write-Step "git\config-up2parts -> $GitUp2partsDst" + Copy-Item -Force $GitUp2partsSrc $GitUp2partsDst + Write-Ok "$GitUp2partsDst (wird per includeIf aus .gitconfig eingebunden)" +} + +function Copy-Npmrc { + if (Test-Path $NpmrcDst) { + Write-SkipMsg "$NpmrcDst existiert bereits, uebersprungen" + return + } + + Write-Step "npm\npmrc -> $NpmrcDst" + Copy-Item -Force $NpmrcSrc $NpmrcDst + Write-Ok $NpmrcDst +} + +function Main { + Copy-NvimConfig + Copy-GitConfig + Copy-Npmrc + + Write-Host "" + Write-Host "Fertig. Dateien wurden KOPIERT, nicht verlinkt." -ForegroundColor Green + Write-Host "Nach Aenderungen im Repo dieses Skript erneut ausfuehren." +} + +Main -- cgit v1.3 From c196e9a59a47bcaceab93342af5cf7a2f6ddd853 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Thu, 23 Jul 2026 10:20:06 +0200 Subject: windows: manuelle Schritte reduzieren (PATH-Refresh, windows/bin automatisch im PATH) bootstrap/neovim-win.ps1: Update-SessionPath liest PATH nach der Git/Node-Installation aus der Registry neu ein, damit die folgenden npm-Installationen (Formatters/LSP) im selben Lauf nicht faelschlich 'npm nicht gefunden' melden. install-win.ps1: haengt windows/bin (gmake.cmd) automatisch und idempotent an den User-PATH an, statt das manuell per Anleitung zu verlangen. --- bootstrap/neovim-win.ps1 | 12 ++++++++++++ install-win.ps1 | 17 +++++++++++++++++ 2 files changed, 29 insertions(+) (limited to 'install-win.ps1') diff --git a/bootstrap/neovim-win.ps1 b/bootstrap/neovim-win.ps1 index a2e755b..1ea3b3c 100644 --- a/bootstrap/neovim-win.ps1 +++ b/bootstrap/neovim-win.ps1 @@ -89,9 +89,21 @@ function Test-Prerequisites { } } +function Update-SessionPath { + # winget/npm-Installer tragen PATH-Aenderungen in die Registry (User- + # und/oder Machine-Scope) ein, aber der laufende PowerShell-Prozess + # bekommt das nicht automatisch mit. Ohne diesen Refresh wuerde z.B. + # "npm" gleich im Anschluss an die Node-Installation als "nicht + # gefunden" gemeldet, obwohl es gerade erst installiert wurde. + $machine = [Environment]::GetEnvironmentVariable("PATH", "Machine") + $user = [Environment]::GetEnvironmentVariable("PATH", "User") + $env:PATH = "$machine;$user" +} + function Install-Prerequisites { Install-WingetPackage -Binary "git" -Id "Git.Git" Install-WingetPackage -Binary "node" -Id "OpenJS.NodeJS.LTS" + Update-SessionPath } function Install-Formatters { diff --git a/install-win.ps1 b/install-win.ps1 index 41b3b51..632c25e 100644 --- a/install-win.ps1 +++ b/install-win.ps1 @@ -80,14 +80,31 @@ function Copy-Npmrc { Write-Ok $NpmrcDst } +function Add-BinToUserPath { + $binDir = Join-Path $RepoRoot "windows\bin" + $userPath = [Environment]::GetEnvironmentVariable("PATH", "User") + $entries = $userPath -split ";" + + if ($entries -contains $binDir) { + Write-SkipMsg "$binDir bereits im User-PATH" + return + } + + Write-Step "$binDir zum User-PATH hinzufuegen (enthaelt gmake.cmd)" + [Environment]::SetEnvironmentVariable("PATH", "$userPath;$binDir", "User") + Write-Ok "$binDir (wirkt erst in neuen Terminal-Sitzungen)" +} + function Main { Copy-NvimConfig Copy-GitConfig Copy-Npmrc + Add-BinToUserPath Write-Host "" Write-Host "Fertig. Dateien wurden KOPIERT, nicht verlinkt." -ForegroundColor Green Write-Host "Nach Aenderungen im Repo dieses Skript erneut ausfuehren." + Write-Host "Neues Terminal oeffnen, damit PATH-Aenderungen wirksam werden." -ForegroundColor Yellow } Main -- cgit v1.3 From b91319846c364030074726fba73e76f19713e69d Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Fri, 24 Jul 2026 10:32:42 +0200 Subject: windows: eigene npmrc-Variante ohne ${HOME} (npm/npmrc-win) npm/npmrc setzt prefix=${HOME}/.local, damit globale npm-Installationen ohne sudo/root ins Home-Verzeichnis gehen. HOME ist unter Windows i.d.R. nicht gesetzt, ${HOME} wuerde also nicht expandieren. npm/npmrc-win laesst prefix komplett weg - npm nutzt unter Windows ohnehin schon %APPDATA%\npm als Praefix, von Node's eigenem Installer automatisch zum PATH hinzugefuegt, kein Workaround noetig. install-win.ps1 und neovim-windows-setup.md entsprechend angepasst. npm/npmrc (POSIX) bleibt unveraendert. --- install-win.ps1 | 4 ++-- neovim-windows-setup.md | 2 +- npm/npmrc-win | 26 ++++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 npm/npmrc-win (limited to 'install-win.ps1') diff --git a/install-win.ps1 b/install-win.ps1 index 632c25e..e52c0cb 100644 --- a/install-win.ps1 +++ b/install-win.ps1 @@ -41,7 +41,7 @@ $GitUp2partsSrc = Join-Path $RepoRoot "git\config-up2parts" $GitXdgDir = Join-Path $env:USERPROFILE ".config\git" $GitUp2partsDst = Join-Path $GitXdgDir "config-up2parts" -$NpmrcSrc = Join-Path $RepoRoot "npm\npmrc" +$NpmrcSrc = Join-Path $RepoRoot "npm\npmrc-win" $NpmrcDst = Join-Path $env:USERPROFILE ".npmrc" function Copy-NvimConfig { @@ -75,7 +75,7 @@ function Copy-Npmrc { return } - Write-Step "npm\npmrc -> $NpmrcDst" + Write-Step "npm\npmrc-win -> $NpmrcDst" Copy-Item -Force $NpmrcSrc $NpmrcDst Write-Ok $NpmrcDst } diff --git a/neovim-windows-setup.md b/neovim-windows-setup.md index f7dd1c8..c5fc3fc 100644 --- a/neovim-windows-setup.md +++ b/neovim-windows-setup.md @@ -39,7 +39,7 @@ Es kopiert (keine Symlinks, keine Admin-Rechte nötig): - `nvim/` → `%LOCALAPPDATA%\nvim` - `git/config` → `%USERPROFILE%\.gitconfig` - `git/config-up2parts` → `%USERPROFILE%\.config\git\config-up2parts` (Pfad ist im `includeIf` von `git/config` hartkodiert) -- `npm/npmrc` → `%USERPROFILE%\.npmrc` (nur falls dort noch keine Datei existiert) +- `npm/npmrc-win` → `%USERPROFILE%\.npmrc` (nur falls dort noch keine Datei existiert) – eigene Windows-Variante ohne `prefix=${HOME}/.local`: `HOME` ist unter Windows i. d. R. nicht gesetzt, npm nutzt dort ohnehin schon von Haus aus `%APPDATA%\npm` als Praefix Nach Änderungen im Repo `install-win.ps1` erneut ausführen, um die Kopien zu aktualisieren. diff --git a/npm/npmrc-win b/npm/npmrc-win new file mode 100644 index 0000000..3803390 --- /dev/null +++ b/npm/npmrc-win @@ -0,0 +1,26 @@ +; %USERPROFILE%\.npmrc (Windows) +; +; Kein "prefix" gesetzt, anders als in npm/npmrc (POSIX): dort dient +; prefix=${HOME}/.local dazu, globale Installationen ohne sudo/root ins +; Home-Verzeichnis zu legen. Unter Windows loest npm dieses Problem +; bereits selbst - der Standard-Praefix liegt ohnehin im Benutzerprofil +; (%APPDATA%\npm), von Node's eigenem Installer automatisch zum PATH +; hinzugefuegt. ${HOME} ist unter Windows i.d.R. nicht gesetzt und wuerde +; hier nicht expandieren. + +; default registry +registry=https://registry.npmjs.org/ + +; disable fund-spam +fund=false + +; suppresses notifications about new npm versions +update-notifier=false + +; reduce the attack surface for supply chain attacks +min-release-age=3 + +; disable pre- und post-scripts +ignore-scripts=true + +; vim: ft=dosini -- cgit v1.3 From 7dc291df70e115bf021240d0ea2616dffe28d9c8 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Fri, 24 Jul 2026 10:36:44 +0200 Subject: windows: npmrc-win wieder entfernt, prefix beim Kopieren auskommentieren statt zweite Datei zu pflegen Copy-Npmrc liest npm/npmrc jetzt zeilenweise und kommentiert die prefix=${HOME}/.local-Zeile beim Schreiben nach %USERPROFILE%\.npmrc aus, statt eine separate npm/npmrc-win zu unterhalten. Nur eine npmrc-Datei zu pflegen war der ausdrueckliche Wunsch. --- install-win.ps1 | 20 +++++++++++++++++--- neovim-windows-setup.md | 2 +- npm/npmrc-win | 26 -------------------------- 3 files changed, 18 insertions(+), 30 deletions(-) delete mode 100644 npm/npmrc-win (limited to 'install-win.ps1') diff --git a/install-win.ps1 b/install-win.ps1 index e52c0cb..15f39e4 100644 --- a/install-win.ps1 +++ b/install-win.ps1 @@ -41,7 +41,7 @@ $GitUp2partsSrc = Join-Path $RepoRoot "git\config-up2parts" $GitXdgDir = Join-Path $env:USERPROFILE ".config\git" $GitUp2partsDst = Join-Path $GitXdgDir "config-up2parts" -$NpmrcSrc = Join-Path $RepoRoot "npm\npmrc-win" +$NpmrcSrc = Join-Path $RepoRoot "npm\npmrc" $NpmrcDst = Join-Path $env:USERPROFILE ".npmrc" function Copy-NvimConfig { @@ -75,8 +75,22 @@ function Copy-Npmrc { return } - Write-Step "npm\npmrc-win -> $NpmrcDst" - Copy-Item -Force $NpmrcSrc $NpmrcDst + # npm/npmrc setzt "prefix=${HOME}/.local", damit globale npm-Installationen + # unter POSIX ohne sudo/root ins Home-Verzeichnis gehen. HOME ist unter + # Windows i.d.R. nicht gesetzt, ${HOME} wuerde also nicht expandieren. + # Der Grund fuer die Einstellung entfaellt unter Windows ohnehin (npm + # nutzt dort schon von Haus aus %APPDATA%\npm, automatisch im PATH) - + # die Zeile wird beim Kopieren einfach auskommentiert, statt eine zweite + # npmrc-Datei zu pflegen. + Write-Step "npm\npmrc -> $NpmrcDst (prefix-Zeile auskommentiert)" + $lines = Get-Content -Path $NpmrcSrc | ForEach-Object { + if ($_ -match "^\s*prefix\s*=") { + "; $_ (unter Windows auskommentiert, siehe install-win.ps1: Copy-Npmrc)" + } else { + $_ + } + } + Set-Content -Path $NpmrcDst -Value $lines Write-Ok $NpmrcDst } diff --git a/neovim-windows-setup.md b/neovim-windows-setup.md index c5fc3fc..568638c 100644 --- a/neovim-windows-setup.md +++ b/neovim-windows-setup.md @@ -39,7 +39,7 @@ Es kopiert (keine Symlinks, keine Admin-Rechte nötig): - `nvim/` → `%LOCALAPPDATA%\nvim` - `git/config` → `%USERPROFILE%\.gitconfig` - `git/config-up2parts` → `%USERPROFILE%\.config\git\config-up2parts` (Pfad ist im `includeIf` von `git/config` hartkodiert) -- `npm/npmrc-win` → `%USERPROFILE%\.npmrc` (nur falls dort noch keine Datei existiert) – eigene Windows-Variante ohne `prefix=${HOME}/.local`: `HOME` ist unter Windows i. d. R. nicht gesetzt, npm nutzt dort ohnehin schon von Haus aus `%APPDATA%\npm` als Praefix +- `npm/npmrc` → `%USERPROFILE%\.npmrc` (nur falls dort noch keine Datei existiert) – die Zeile `prefix=${HOME}/.local` wird dabei auskommentiert: `HOME` ist unter Windows i. d. R. nicht gesetzt, npm nutzt dort ohnehin schon von Haus aus `%APPDATA%\npm` als Präfix Nach Änderungen im Repo `install-win.ps1` erneut ausführen, um die Kopien zu aktualisieren. diff --git a/npm/npmrc-win b/npm/npmrc-win deleted file mode 100644 index 3803390..0000000 --- a/npm/npmrc-win +++ /dev/null @@ -1,26 +0,0 @@ -; %USERPROFILE%\.npmrc (Windows) -; -; Kein "prefix" gesetzt, anders als in npm/npmrc (POSIX): dort dient -; prefix=${HOME}/.local dazu, globale Installationen ohne sudo/root ins -; Home-Verzeichnis zu legen. Unter Windows loest npm dieses Problem -; bereits selbst - der Standard-Praefix liegt ohnehin im Benutzerprofil -; (%APPDATA%\npm), von Node's eigenem Installer automatisch zum PATH -; hinzugefuegt. ${HOME} ist unter Windows i.d.R. nicht gesetzt und wuerde -; hier nicht expandieren. - -; default registry -registry=https://registry.npmjs.org/ - -; disable fund-spam -fund=false - -; suppresses notifications about new npm versions -update-notifier=false - -; reduce the attack surface for supply chain attacks -min-release-age=3 - -; disable pre- und post-scripts -ignore-scripts=true - -; vim: ft=dosini -- cgit v1.3 From 7d29d60f7ca96cd0d76008345ec788671cfb7573 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Mon, 27 Jul 2026 08:26:18 +0200 Subject: windows: Kommentare in PowerShell-Skripten auf das Mindestmass reduziert --- bootstrap-win/neovim-dict.ps1 | 6 ---- bootstrap-win/neovim.ps1 | 75 ++++++++----------------------------------- install-win.ps1 | 21 +++--------- 3 files changed, 18 insertions(+), 84 deletions(-) (limited to 'install-win.ps1') diff --git a/bootstrap-win/neovim-dict.ps1 b/bootstrap-win/neovim-dict.ps1 index 7909ffa..5aeb117 100644 --- a/bootstrap-win/neovim-dict.ps1 +++ b/bootstrap-win/neovim-dict.ps1 @@ -2,13 +2,9 @@ <# Windows-natives Pendant zu bootstrap/neovim-dict.sh. Laedt die deutschen Rechtschreib-Woerterbuecher fuer Neovim herunter. - bootstrap/neovim-dict.sh bleibt unveraendert. Aufruf: .\bootstrap-win\neovim-dict.ps1 - - Falls die Ausfuehrung durch die Execution Policy blockiert wird: - powershell -ExecutionPolicy Bypass -File .\bootstrap-win\neovim-dict.ps1 #> $ErrorActionPreference = "Stop" @@ -25,8 +21,6 @@ function Write-SkipMsg($msg) { Write-Host "- $msg bereits vorhanden" -ForegroundColor DarkGray } -# Nativer Windows-Datenpfad von Neovim (kein XDG_DATA_HOME gesetzt): -# $env:LOCALAPPDATA\nvim-data\site\spell $SpellDir = Join-Path $env:LOCALAPPDATA "nvim-data\site\spell" $Urls = @( diff --git a/bootstrap-win/neovim.ps1 b/bootstrap-win/neovim.ps1 index 77abf83..32e2db7 100644 --- a/bootstrap-win/neovim.ps1 +++ b/bootstrap-win/neovim.ps1 @@ -1,29 +1,14 @@ #Requires -Version 5.1 <# - Windows-natives Pendant zu bootstrap/neovim.sh (macOS/FreeBSD). - bootstrap/neovim.sh bleibt unveraendert - dieses Skript ist bewusst - eigenstaendig, da sich die Paketquellen (winget/npm statt brew/pkg) und - das Fehlerverhalten zu stark unterscheiden fuer ein gemeinsames Skript. + Windows-natives Pendant zu bootstrap/neovim.sh - nutzt winget/npm statt + brew/pkg, daher eigenstaendiges Skript ohne Git-Bash-/WSL-Abhaengigkeit. - Nutzt ausschliesslich native Windows-Werkzeuge (winget, npm, pwsh/ - powershell.exe) - keine Git-Bash- oder WSL-Abhaengigkeit. - - Aufruf (PowerShell, keine Admin-Rechte noetig): + Aufruf (keine Admin-Rechte noetig): .\bootstrap-win\neovim.ps1 - Hinweis: yamlfmt, gawk und xmllint/libxml2 sind bewusst NICHT enthalten - - im Praxistest (24.07.2026) bestaetigt, dass es dafuer keine winget-Pakete - unter den urspruenglich vermuteten IDs gibt. Siehe Install-Formatters und - neovim-windows-setup.md fuer manuelle Alternativen. mvdan.shfmt und - astral-sh.ruff liefen im Test erfolgreich durch. - - Schlaegt eine winget-Installation trotzdem fehl, meldet das Skript das - als Warnung (bricht nicht ab) und zeigt die letzten Zeilen der winget- - Ausgabe zur Fehlersuche an. - - C-Compiler fuer nvim-treesitter: kein winget-Paket enthalten, da MSVC auf - den Zielsystemen bereits vorhanden ist. Neovim muss dafuer aus einer - "Developer PowerShell for VS" gestartet werden (siehe Install-Tools). + yamlfmt, gawk und xmllint sind bewusst nicht enthalten (siehe + neovim-windows-setup.md). Fehlgeschlagene Installationen werden als + Warnung gemeldet, das Skript bricht nicht ab. #> $ErrorActionPreference = "Stop" @@ -51,10 +36,8 @@ function Test-CommandExists([string]$Name) { } function Find-BinaryDirectory([string]$Binary) { - # Sucht nach ".exe" unter den ueblichen Installationswurzeln. - # Deckt den Fall ab, dass ein winget-Paket (v.a. im --silent-Modus) - # die PATH-Registrierung ausgelassen hat, obwohl es korrekt installiert - # wurde - beobachtet bei LLVM.LLVM/clangd. + # Deckt den Fall ab, dass winget (v.a. --silent) korrekt installiert, + # aber die PATH-Registrierung ausgelassen hat (beobachtet bei LLVM.LLVM). $searchRoots = @( $env:ProgramFiles, ${env:ProgramFiles(x86)}, @@ -98,12 +81,7 @@ function Install-WingetPackage([string]$Binary, [string]$Id) { $lastLine = ($output | Select-Object -Last 3) -join " / " if ($text -match "bereits ein vorhandenes Paket|already installed|No applicable update") { - # Paket ist laut winget installiert, aber die Binary steht trotzdem - # nicht im PATH - z.B. weil der Installer (im --silent-Modus) die - # PATH-Registrierung uebersprungen hat. winget search hilft hier - # nicht weiter, da das Paket ja gefunden wurde - stattdessen selbst - # danach suchen und den User-PATH ergaenzen (dauerhaft + fuer diese - # Sitzung). + # Installiert, aber nicht im PATH - Binary suchen und PATH ergaenzen. $dir = Find-BinaryDirectory $Binary if ($dir) { @@ -155,11 +133,7 @@ function Test-Prerequisites { } function Update-SessionPath { - # winget/npm-Installer tragen PATH-Aenderungen in die Registry (User- - # und/oder Machine-Scope) ein, aber der laufende PowerShell-Prozess - # bekommt das nicht automatisch mit. Ohne diesen Refresh wuerde z.B. - # "npm" gleich im Anschluss an die Node-Installation als "nicht - # gefunden" gemeldet, obwohl es gerade erst installiert wurde. + # Registry-PATH-Aenderungen durch winget/npm wirken erst nach diesem Refresh. $machine = [Environment]::GetEnvironmentVariable("PATH", "Machine") $user = [Environment]::GetEnvironmentVariable("PATH", "User") $env:PATH = "$machine;$user" @@ -178,14 +152,7 @@ function Install-Formatters { Install-WingetPackage -Binary "shfmt" -Id "mvdan.shfmt" Install-WingetPackage -Binary "stylua" -Id "JohnnyMorganz.StyLua" - # yamlfmt, gawk, xmllint: im Praxistest bestaetigt, dass es unter diesen - # IDs kein winget-Paket gibt ("Es wurde kein Paket gefunden, das den - # Eingabekriterien entspricht"). Kein verifizierter Ersatz gefunden, - # deshalb bewusst nicht automatisiert - siehe neovim-windows-setup.md - # fuer manuelle Alternativen. conform.nvim faellt bei fehlendem - # Formatter fuer die jeweilige Dateiart einfach auf LSP-Formatierung - # zurueck (default_format_opts.lsp_format = "fallback"), betrifft also - # nur awk/xml/xsd/yaml-Dateien. + # yamlfmt, gawk, xmllint: kein winget-Paket gefunden, siehe neovim-windows-setup.md. } function Install-Tools { @@ -193,24 +160,8 @@ function Install-Tools { Install-WingetPackage -Binary "fd" -Id "sharkdp.fd" Install-NpmPackage -Binary "tree-sitter" -Package "tree-sitter-cli" - # C-Compiler fuer nvim-treesitter: kein winget-Paket noetig, MSVC (cl.exe) - # ist auf diesen Systemen bereits vorhanden. nvim-treesitter findet cl.exe - # automatisch, ABER nur wenn INCLUDE/LIB gesetzt sind - das passiert nicht - # in einer normalen PowerShell, sondern nur in einer "Developer PowerShell - # for VS" bzw. "x64 Native Tools Command Prompt". Neovim also immer aus - # so einer Shell heraus starten, sonst schlaegt die Parser-Kompilierung - # mit "cannot find
.h" o.ae. fehl, obwohl cl.exe selbst gefunden wird. - - # 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 (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") - # GnuWin32.Make ist im Praxistest fehlgeschlagen (Paket 2006er-Stand, - # unklar ob im winget-Repo ueberhaupt noch gepflegt). ezwinports.make - # ist ein aktiver gepflegter GNU-Make-Port fuer Windows. + # MSVC (cl.exe) ist bereits vorhanden, kein winget-Paket noetig - Neovim + # dafuer aber aus einer "Developer PowerShell for VS" starten. Install-WingetPackage -Binary "make" -Id "ezwinports.make" } diff --git a/install-win.ps1 b/install-win.ps1 index 15f39e4..aa77243 100644 --- a/install-win.ps1 +++ b/install-win.ps1 @@ -1,18 +1,11 @@ #Requires -Version 5.1 <# - Windows-natives Pendant zu install.sh (ersetzt install-win.cmd). - install.sh bleibt unveraendert - kopiert (statt zu verlinken) die + Windows-natives Pendant zu install.sh - kopiert (statt zu verlinken) die relevanten Konfigurationen an ihre nativen Windows-Zielorte. Keine Admin-Rechte noetig (keine Symlinks). Aufruf: .\install-win.ps1 - - Falls die Ausfuehrung durch die Execution Policy blockiert wird: - powershell -ExecutionPolicy Bypass -File .\install-win.ps1 - - Hinweis: Es wird KOPIERT, nicht verlinkt. Nach Aenderungen im Repo - dieses Skript erneut ausfuehren, um die Kopien zu aktualisieren. #> $ErrorActionPreference = "Stop" @@ -75,17 +68,13 @@ function Copy-Npmrc { return } - # npm/npmrc setzt "prefix=${HOME}/.local", damit globale npm-Installationen - # unter POSIX ohne sudo/root ins Home-Verzeichnis gehen. HOME ist unter - # Windows i.d.R. nicht gesetzt, ${HOME} wuerde also nicht expandieren. - # Der Grund fuer die Einstellung entfaellt unter Windows ohnehin (npm - # nutzt dort schon von Haus aus %APPDATA%\npm, automatisch im PATH) - - # die Zeile wird beim Kopieren einfach auskommentiert, statt eine zweite - # npmrc-Datei zu pflegen. + # HOME ist unter Windows i.d.R. nicht gesetzt, ${HOME} in npm/npmrc wuerde + # nicht expandieren - Zeile daher auskommentieren statt zweite npmrc-Datei + # zu pflegen. Write-Step "npm\npmrc -> $NpmrcDst (prefix-Zeile auskommentiert)" $lines = Get-Content -Path $NpmrcSrc | ForEach-Object { if ($_ -match "^\s*prefix\s*=") { - "; $_ (unter Windows auskommentiert, siehe install-win.ps1: Copy-Npmrc)" + "; $_ (unter Windows auskommentiert)" } else { $_ } -- cgit v1.3