nix-like package management for Windows.
Declare your desired packages in Lua. NTIX figures out what to install, upgrade, and remove across winget, Chocolatey, and Scoop, plus arbitrary config files (dotfiles, settings) managed declaratively.
Read the docs · Quick Start · Report a Bug
- Install NTIX or build from source
- Create a
config.lua:
local options = {
winget = { enable = true, acceptAgreements = true },
chocolatey = { enable = true, yes = true },
scoop = { enable = true, buckets = { "main", "extras" } }
}
local pkgs = {}
pkgs.winget = { "Google.Chrome", "7zip.7zip" }
pkgs.chocolatey = { "ripgrep" }
pkgs.scoop = { "fd", "bat" }
return { options = options, pkgs = pkgs }ntix diff config.lua— preview what would changentix apply config.lua— apply changes (requires admin)
Arbitrary config files — manage dotfiles, shell configs, and system settings declaratively (like NixOS Home Manager)Added in v2.1.0- Windows optional features — enable/disable Hyper-V, OpenSSH, WSL, and other Windows features
- Nix-shells — temporary environments with specific packages for your current session
Copyright © 2026 Cristian Izzo. Licensed under LGPLv2.1, see LICENSE. Branding assets are licensed under CC BY 4.0.
If you find this useful, here are a few ways to help out - pick whichever fits:
- Contribute — open a PR, fix a bug, improve the docs, or tackle an open issue.
- Donate — if the project saves you time or money, consider sponsoring to help cover dev time.
- Spread the word — star the repo, share it, or mention it to someone who might find it useful.
Every bit helps keep this maintained. Thanks for using it! 🙏

