Prerequisites
Before setting up NVDA development, ensure you have:- Windows 10 (Version 22H2) or Windows 11
- Administrator access for installing development tools
- At least 10 GB of free disk space
- Internet connection for downloading dependencies
Getting the Source Code
The NVDA project uses Git for version control. The repository is hosted on GitHub.Fork and Clone
If you plan to contribute to NVDA, start by forking the repository:Fork the repository
Visit https://github.com/nvaccess/nvda and click the Fork button to create a copy in your GitHub account
Keeping Your Fork in Sync
When you fork the repository, GitHub creates a copy of the master branch. However, this branch won’t automatically update when the NV Access master branch is updated. To keep your work based on the latest commits:This configuration ensures your master branch stays synchronized with the official NVDA repository.
Managing Git Submodules
If you didn’t use--recursive when cloning, initialize submodules manually:
git pull, merge, or checkout, update submodules:
Installing Required Dependencies
Python 3.13.12
NVDA requires a specific version of Python:Check the required version
The exact version is specified in
.python-versions in the repository root. As of now, it’s Python 3.13.12, 64-bit.Download Python
Download Python 3.13.12 from python.org
Install Python
Run the installer and ensure you:
- Select the 64-bit version
- Add Python to PATH
- Install for all users (recommended)
uv Package Manager
NVDA uses uv as its package and project manager.Microsoft Visual Studio
Visual Studio is required for compiling C++ components.Choose Your Edition
Build Tools
Minimal installation for command-line buildsDownload Build Tools
Community Edition
Full IDE with debugging capabilitiesDownload Community
To replicate the production build environment, use the version of Visual Studio 2022 that GitHub Actions is using.
Required Components
During installation, you must include specific components:Automatic Installation (Recommended)
Automatic Installation (Recommended)
Use NVDA’s
.vsconfig file for automatic component selection:- Run the Visual Studio Installer
- Click “Import configuration”
- Select
.vsconfigfrom the NVDA repository root - The installer will automatically select all required components
Manual Installation
Manual Installation
If installing manually, select these components:Workloads Tab:
- Desktop development with C++
- Ensure “C++ Clang tools for Windows” is included in optional components
- Windows 11 SDK (10.0.26100.x)
- MSVC v143 - VS 2022 C++ ARM64/ARM64EC build tools
- MSVC v143 - VS 2022 C++ x64/x86 build tools
- C++ ATL for v143 build tools (x86 & x64)
- C++ ATL for v143 build tools (ARM64/ARM64EC)
Git Submodule Dependencies
NVDA includes several dependencies as Git submodules:Runtime Dependencies
- eSpeak NG (commit
b0b605c8a80f76c4c19e18033c6780c3cc4afc5b) - Speech synthesis - Sonic (commit
d2cdb40fbdc82b464be364a50b34e8dd82b6c80a) - Audio speed adjustment - IAccessible2 (commit
c9ae003d9c85eb707716928de97e055f5b77189c) - Accessibility API - liblouis (version 3.36.0) - Braille translation
- Unicode CLDR (version 48.0) - Locale data
- Microsoft Detours (commit
9764cebcb1a75940e68fa83d6730ffaf0f669401) - API hooking - Windows Implementation Library (WIL) (commit
7cf41936c5b4ab79daf0d9437211380dc69fa958) - Java Access Bridge 64-bit (Zulu 17.0.16+8)
- Adobe Acrobat accessibility interface (version XI)
- brlapi (version 0.8.7+) - Braille device communication
- Nullsoft Install System (version 3.11) - Installer creation
Build Time Dependencies
Included in themiscDeps submodule:
- xgettext and msgfmt from GNU gettext - Translation tools
Python Dependencies
NVDA depends on numerous Python packages specified inpyproject.toml. The build system automatically manages these dependencies using uv.
Key Python Packages
Runtime:- comtypes 1.4.13
- wxPython 4.2.4
- pywin32 311
- cryptography 46.0.5
- pyserial 3.5
- requests 2.32.5
- SCons 4.10.1
- py2exe 0.14.0.0
- setuptools ~80.10.2
- ruff 0.14.5 (linter and formatter)
- pyright 1.1.407 (type checker)
- pre-commit 4.2.0 (git hooks)
All Python dependencies are installed into an isolated virtual environment within the repository. They won’t affect your system-wide Python installation.
Visual Studio Code (Optional)
If you use VS Code, NVDA provides a preconfigured workspace: The.vscode submodule contains prepopulated workspace configuration.
Disable VS Code Configuration
If you prefer not to use the preconfigured workspace:Re-enable Later
Optional Dependencies
Doxygen (Developer Documentation)
Only needed if you want to generate nvdaHelper C++ documentation:- Download Doxygen Windows installer, version 1.8.15
Verifying Your Setup
After installing all dependencies, verify your setup:Next Steps
Building NVDA
Learn how to build NVDA from source
Running from Source
Run NVDA directly without building installers
Troubleshooting
Submodules not initialized
Submodules not initialized
If you see empty directories in
include/ or miscDeps/:Python version mismatch
Python version mismatch
Ensure you’re using Python 3.13.12 exactly:If incorrect, uninstall other Python versions or use virtual environments.
Visual Studio components missing
Visual Studio components missing
Re-run the Visual Studio Installer and import the
.vsconfig file from the NVDA repository root.Build tools not found
Build tools not found
Ensure Visual Studio’s build tools are in your PATH:
