Skip to content

feat(cua-driver): register the nur-packages driver with Claude Code - #301

Merged
NoSugarCoffee merged 7 commits into
mainfrom
cursor/cua-driver-mcp-d95c
Oct 30, 2026
Merged

NoSugarCoffee merged 7 commits into
mainfrom
cursor/cua-driver-mcp-d95c

Conversation

@NoSugarCoffee

@NoSugarCoffee NoSugarCoffee commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

Summary

Installs the MIT-licensed cua-driver from NoSugarCoffee/nur-packages (pkgs.nosugarcoffee.cua-driver), same pattern as JetBrains Air. The input is the default branch, locked at 6c59677. This repo does not fetch or unpack the release, and it does not register MCP servers. Claude Code's server list belongs to dotai via APM. Cua Spaces and the perception extension are not installed.

What this repo still does

  • PATH. home.packages is a package that contains only a symlink to cua-driver. The NUR package also ships $out/Applications/CuaDriver.app; this nixpkgs buildEnv lndirs a whole package and ignores pathsToLink, so a symlinkJoin would still publish that bundle and copyApps would install a second copy under ~/Applications/Home Manager Apps. The bin-only package gives copyApps nothing to copy.
  • macOS app. A switch dittos the NUR bundle to /Applications/CuaDriver.app (a real directory, not a store symlink). That is the path cua-driver mcp relaunches. The staged copy is made writable first: the store bundle is mode 555, and ditto keeps that, so xattr and a later rm would otherwise fail and abort the switch. The copy is stamped with the same home-manager.copied xattr copyApps uses. If /Applications/CuaDriver.app is already there and has no stamp, the switch warns and leaves it alone.
  • Skill. cua-driver.skills is linked at ~/.cua-driver/skills/cua-driver, and ~/.claude/skills/cua-driver points at that home copy.
  • MCP. Not written here. Register it from the APM user manifest:
apm install -g --target claude,codex --mcp cua-driver -- cua-driver mcp

macOS permissions

After the first switch, grant Accessibility and Screen Recording to Cua Driver (/Applications/CuaDriver.app) in System Settings → Privacy & Security. Grant them again if a later pin changes the app's code signature. A switch that replaces a stamped bundle stops a running cua-driver first.

If you already switched this branch before the stamp, that copy has no xattr, so the next switch will not replace it. Remove /Applications/CuaDriver.app once and switch again.

…de Code

Pin the signed 0.38.0 release so macOS copies CuaDriver.app to
/Applications, and declare the stdio MCP server plus the Claude skill.
The signed release now lives in NoSugarCoffee/nur-packages. This module
installs that package, copies CuaDriver.app to /Applications, and
registers the Claude Code MCP server. The input is pinned to the PR
branch until that package is on main.
@cursor cursor Bot changed the title feat(cua-driver): install the pinned driver and register it with Claude Code feat(cua-driver): register the nur-packages driver with Claude Code Oct 29, 2026
Put only the CLI on PATH so copyApps does not install a second bundle,
and refuse to replace an /Applications/CuaDriver.app this config did
not stamp.
Stub ditto and codesign so the failure path does not depend on the
host, and assert a stamped older CuaDriver.app is replaced.
The package landed in 6c59677. Drop the PR-branch pin and lock that
commit.
The Nix store bundle is mode 555. ditto keeps that, so xattr and the
cleanup rm fail and abort the macOS switch.
A switch installs the driver and the skill pack. Claude Code's MCP
server list is owned by APM, so this module no longer writes
~/.claude.json.
@NoSugarCoffee
NoSugarCoffee marked this pull request as ready for review October 30, 2026 06:59
@NoSugarCoffee
NoSugarCoffee merged commit fba534c into main Oct 30, 2026
3 checks passed
@NoSugarCoffee
NoSugarCoffee deleted the cursor/cua-driver-mcp-d95c branch October 30, 2026 07:00
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-30T07:02:39.856561Z 203cfea Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@mergestorm-vortex

Copy link
Copy Markdown

Mergestorm reviews this repository's pull requests

Every PR gets AI code review that flags real bugs before they merge. This account's 30 free credits for this monthly window are used, so reviews are paused at 203cfea and resume automatically when the next window starts.

Upgrade for more reviews →

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 203cfea968

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread home.nix
Comment on lines +326 to +327
if [[ "$name" == "CuaDriver.app" ]]; then
continue

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Clean up CuaDriver when its package disappears

When a future NUR update stops exposing pkgs.nosugarcoffee.cua-driver for a Darwin system, the module's package and activation are disabled by cua-driver == null, but this unconditional exception prevents copyApps from removing the previously stamped bundle. The old app can therefore remain installed—and retain Accessibility and Screen Recording grants—despite no longer being declared; gate this exception on package availability or add an absent-package cleanup path for stamped copies.

AGENTS.md reference: AGENTS.md:L29-L30

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant