- git
- .NET used to install
powershell 7 on Windows. Download the SDK if developing dotnet applications.
Download the
Hosting Bundleruntime as well if developing/running dotnet applications in IIS. - PowerShell 7
(Windows only) Install with
dotnet tool install --global PowerShell - neovim my editor. Use nightly release.
- ripgrep file finder used by pickers like telescope.nvim
- Treesitter CLI which is now required by nvim-treesitter
- mingw used by nvim-treesitter
to compile the parsers (can also be installed with
choco install mingw) - fd file finder used by venv-selector.nvim
- fzf fuzzy finder. Used by my powershell profile.
- node/npm used to run and install some LSPs, formatters, and debuggers (using mason.nvim)
- python/pip/py used to run and install some
LSPs, formatters, and debuggers (using mason.nvim). Note: On windows, only
pyis added to the path variables so the default python install location will need to be added so that mason.nvim can find it. Also used in Inlined Config Requirements - Rust specific tools:
- rust/cargo
- carg-bininstall used for installing nextest
- nextest the rust test runner that the plugin neotest-rust requires
- Go specific tools:
.\cli-tools\jupytext_venv\venvinstalls jupytext cli (via pip) used by my config to convert jupyter notebooks to a markdown format for editing and then convert them back to json when saving..\cli-tools\neovim_remote_plugin_python_venv\venvused for neovim python remote plugins (required by molten-nvim).\cli-tools\prettier\package.jsonused to install prettier with the xml plugin. This needs to be setup for conform.nvim to format xml
- wezterm
- hurl
- make used to run project makefiles
(can also be installed with
choco install make - chafa converts images to ascii. Used by
my telescope.nvim picker to preview images. (can also be installed with
winget install hpjansson.Chafa - choco a package manager for programs on Windows (optional way to install programs)
- clang clang c compiler
- GitHub CLI
- Azure CLI
- Azure Devops Extension to Azure CLI
- Used to build neovim
- cmake
- zig version 0.15.2 used by zig build
- windows sdk used by zig build. See neovim issue #36889
- User variables manually added
MY_NOTES=<path to my notes different per machine>used by notes file picker in neovimXDG_CONFIG_HOME=%USERPROFILE%\Documents\.config\the location this repository is checked outPath=%USERPROFILE%\AppData\Local\nvim-data\mason\binfor CLI's installed by mason.nvimPath=%USERPROFILE%\AppData\Local\Programs\Python\Python314so that mason.nvim can find the default pythonPath=%USERPROFILE%\Documents\tools\nvim-win64for neovimPath=%USERPROFILE%\Documents\tools\ripgrepfor ripgrepPath=%USERPROFILE%\Documents\tools\tree-sitter-windows-x64for Treesitter CLIPath=%USERPROFILE%\Documents\tools\mingwfor mingwPath=%USERPROFILE%\Documents\tools\fdfor fdPath=%USERPROFILE%\Documents\tools\fzffor fzfPath=%USERPROFILE%\Documents\tools\hurlfor hurlPath=%USERPROFILE%\Documents\tools\makefor makePath=%USERPROFILE%\Documents\tools\WezTermfor weztermPath=%USERPROFILE%\Documents\tools\chafafor chafaPath=%USERPROFILE%\Documents\tools\clangfor clangPath=%USERPROFILE%\Documents\tools\zigfor zig version 0.15.2
- User Variables that should be added by installers
Path=%USERPROFILE%\.cargo\binfor tools installed by rust's cargoPath=%USERPROFILE%\AppData\Local\Programs\Python\Launcher\for py python version managerPath=%USERPROFILE%\.dotnet\toolsfor tools installed by dotnet (If you install Powershell 7 using the dotnet CLI, thenpwshshould be accessible on path)Path=%USERPROFILE%\go\binfor tools installed by goPath=%USERPROFILE%\AppData\Roaming\npmfor tools installed globally by npm
- System Variables manually added
- None
- System Variables that should be added by installers:
C:\Program Files\Git\cmdPath=C:\ProgramData\chocolatey\binPath=C:\Program Files\nodejsPath=C:\Program Files\dotnet\Path=C:\Program Files\Go\binC:\Program Files\CMake\binC:\Program Files\GitHub CLI\
# Backup my config file for easier comparison
Copy-Item -Path "$env:XDG_CONFIG_HOME\nvim\lua\myconfig\config.lua" -Destination "$env:XDG_CONFIG_HOME\nvim\lua\myconfig\config.lua.bak"
git checkout -b <YYYY-MM-DD>
# review the changes to my repo
nvim ./ "+DiffviewOpen"
git add --all
git commit --message "Backing up changes"
git checkout main
git pull
# If treesitter.nvim fails to install parsers on some machines, I sometimes edit
# the curl request so I need to stash it before restoring plugins
$treesitterPath = "$env:USERPROFILE\AppData\Local\nvim-data\lazy\nvim-treesitter"
if ($env:XDG_DATA_HOME -ne $null) {
$treesitterPath = "$env:XDG_DATA_HOME\nvim-data\lazy\nvim-treesitter"
}
git -C "$treesitterPath" stash
# Restore plugins
nvim --headless "+Lazy! restore" +qa
# the first time lazy restore runs it puts the versions
# at HEAD so we need to stash the lock file and rerun
# so it properly sets versions to the lazy lock file
git stash
# Restore plugins a second time to checkout the commits in the lock file
nvim --headless "+Lazy! restore" +qa
# Compare the old config.lua with the new one in use `:diffget` to pull in any changes
nvim --clean -d $env:XDG_CONFIG_HOME\nvim\lua\myconfig\config.lua $env:XDG_CONFIG_HOME\nvim\lua\myconfig\config.lua.bak
# If treesitter.nvim fails to install parsers on some machines, I sometimes edit
# the curl request so I need pop the changes after restoring plugins
git -C "$treesitterPath" stash pop
# update jupytext_venv
& $env:XDG_CONFIG_HOME\cli-tools\jupytext_venv\venv\Scripts\python.exe -m pip install -r "$env:XDG_CONFIG_HOME\cli-tools\jupytext_venv\requirements.txt"
# update neovim_remote_plugin_python_venv
& $env:XDG_CONFIG_HOME\cli-tools\neovim_remote_plugin_python_venv\venv\Scripts\python.exe -m pip install -r "$env:XDG_CONFIG_HOME\cli-tools\neovim_remote_plugin_python_venv\requirements.txt"
# update prettier xml packages
npm --cwd "$env:XDG_CONFIG_HOME\cli-tools\prettier" install
# Open neovim and update treesitter parsers and mason cli's
nvim ./When having issues with treesitter.nvim try manually deleting the files and reinstalling