Links: Portfolio | GitHub | LinkedIn
Browse toolsets stored on disk in a Qt user interface: insert .nk toolsets or run .py toolsets via a standard execute() entry point. Compatibility: The Foundry Nuke 13+; tested on Windows. macOS and Linux not yet tested.
- Insert Nuke toolsets (
toolset.nk) into the nodegraph (or DAG) - Run Python toolsets (
toolset.py) by calling a top-levelexecute()
A consistent on-disk toolset library reduces duplication and makes reuse predictable across a team.
This tool browses a per-user structure under NUKE_TOOLSETS_ROOT (local or shared storage).
- Browse users + toolsets from disk
- Filter toolsets by name and tags
- View toolset metadata (user, tags, description)
- Insert
.nktoolsets into the DAG - Run
.pytoolsets viaexecute() - Create new toolsets:
- Nuke: from current Nuke node selection
- Python: from script text
- Edit existing toolsets:
- Tags + description for both types
- Script editing for Python toolsets
- Overwrite
.nkpayload from current selection (with confirmation)
- No packaging/pip installer
- No network sync / publishing workflows
- No automated test suite (manual checklist only)
- Nuke: 13.x → 16+
- OS: Windows / macOS / Linux
- Windows: 13.0v10, 15.2v6, 16.0v8
Note: macOS/Linux are supported (cross-platform paths + Qt usage) but not tested yet.
This repo is structured as a “drop-in” Nuke plugin folder.
- Copy the repo’s
toolsets/folder into your Nuke.nukedirectory:
- Windows:
%USERPROFILE%\.nuke\toolsets\ - macOS/Linux:
~/.nuke/toolsets/
- Add the plugin folder to Nuke’s plugin path (one-time):
-
Open (or create) your Nuke init file:
- Windows:
%USERPROFILE%\.nuke\init.py - macOS/Linux:
~/.nuke/init.py
- Windows:
-
Add these lines:
import nuke
nuke.pluginAddPath("./toolsets") # relative to your ~/.nuke folder- Restart Nuke.
- Use:
Scripts > Toolsets > Show
Important: There are two separate folders:
~/.nuke/toolsets/= the plugin install folder (this repo’stoolsets/folder goes here)NUKE_TOOLSETS_ROOT(default~/.nuke/toolsets_data/) = where your toolset data lives (<user>/<toolset_name>/...)
This repo includes a tiny demo pack.
Option A (recommended): point the tool to the examples folder:
- Set
NUKE_TOOLSETS_ROOTto:- Windows:
<this_repo>\examples\toolsets_data - macOS/Linux:
<this_repo>/examples/toolsets_data
- Windows:
Option B: copy the included examples into your default data folder:
- Copy
examples/toolsets_data/Demo User/into:- Windows:
%USERPROFILE%\.nuke\toolsets_data\ - macOS/Linux:
~/.nuke/toolsets_data/
- Windows:
toolsets/ # copy this folder into ~/.nuke/
init.py # Nuke init entry point
menu.py # Nuke menu entry point
toolsets/ # Python package
config.py
loader.py
saver.py
toolset.py
icons/
Nuke.png
Python.png
Warning.png
mvc/
controller.py
main.py
model.py
view.py
widgets.py
examples/ # optional demo TOOLSETS_ROOT content
toolsets_data/ # point NUKE_TOOLSETS_ROOT here OR copy into your default toolsets_data
Demo User/
Validate Read nodes/
data.json
toolset.py
Expression nodes for despilling/
data.json
toolset.nk
By default, toolsets are stored in:
~/.nuke/toolsets_data
TOOLSETS_ROOT/
<user>/
<toolset_name>/
data.json
toolset.nk OR toolset.py
{
"description": "My blur setup",
"tags": ["blur", "utility"]
}You can override the default storage location using:
NUKE_TOOLSETS_ROOT=/path/to/toolsets
If the env var is not set, the tool falls back to:
~/.nuke/toolsets_data
Scripts > Toolsets > Show
- Select a toolset and click Insert, or double-click the toolset:
.nktoolset: inserts nodes into the DAG.pytoolset: imports the file and callsexecute()
⚠️ Safety note (Python toolsets):.pytoolsets execute arbitrary Python code inside Nuke. Only run toolsets you trust, and review thetoolset.pyfile if you didn’t create it.
Scripts > Toolsets > New Toolset > Nuke- Saves the current Nuke node selection to
toolset.nk
- Saves the current Nuke node selection to
Scripts > Toolsets > New Toolset > Python- Saves your script to
toolset.py
- Saves your script to
- Select toolset → Edit
- Save or Cancel
- Nuke toolsets require a current selection to overwrite
toolset.nk
- Confirm
TOOLSETS_ROOTexists and contains user folders. - If you set
NUKE_TOOLSETS_ROOT, confirm it points to the correct folder.
- Ensure
toolset.pydefines a top-level callable:def execute(): pass
- This tool is intended to run inside Nuke’s bundled Python/Qt environment.
- Nuke 13 uses PySide2; Nuke 16+ uses PySide6. The codebase must support both.
- Open UI:
Scripts > Toolsets > Show - User search filters list correctly
- Toolset name filter works
- Tag filter works (comma/space-separated)
- Insert
.nktoolset inserts nodes - Run
.pytoolset callsexecute() - Create Nuke toolset:
- no selection → shows error
- with selection → saves toolset folder +
toolset.nk
- Create Python toolset:
- empty script → shows error
- valid script → saves
toolset.py
- Edit/save/cancel:
- metadata updates persist in
data.json - Python script edits persist to disk
- metadata updates persist in
MIT (see LICENSE).
Mauricio Gidi
