diff --git a/home/aerospace.nix b/home/aerospace.nix index 01aa9b8..e0d0c71 100644 --- a/home/aerospace.nix +++ b/home/aerospace.nix @@ -140,9 +140,10 @@ alt-backtick = "workspace-back-and-forth"; # Monitor focus/move - alt-period = "focus-monitor next"; - alt-shift-period = "move-node-to-monitor next"; - alt-shift-comma = "move-workspace-to-monitor next"; + alt-period = "focus-monitor --wrap-around next"; + alt-shift-period = "move-node-to-monitor --wrap-around --focus-follows-window next"; + alt-shift-comma = "move-workspace-to-monitor --wrap-around next"; + ctrl-alt-cmd-space = "move-node-to-monitor --wrap-around --focus-follows-window next"; # Modes alt-shift-r = "mode resize"; diff --git a/home/common.nix b/home/common.nix index d642240..f86089a 100644 --- a/home/common.nix +++ b/home/common.nix @@ -7,6 +7,7 @@ ./bat.nix ./eza.nix ./claude.nix + ./cursor.nix ./devin.nix ./xdg.nix ./security.nix diff --git a/home/cursor.nix b/home/cursor.nix new file mode 100644 index 0000000..62071d3 --- /dev/null +++ b/home/cursor.nix @@ -0,0 +1,28 @@ +{ pkgs, ... }: +let + jsonFormat = pkgs.formats.json { }; + + # Cursor reads ~/.cursor/mcp.json on startup for every CLI session. Declaring + # it here keeps the MCP surface in-repo and reviewable. + cursorMcp = jsonFormat.generate "cursor-mcp.json" { + mcpServers = { + rube = { + url = "https://rube.composio.dev/mcp?agent=cursor"; + headers = { }; + }; + context7 = { + command = "npx"; + args = [ + "-y" + "@upstash/context7-mcp@latest" + ]; + }; + }; + }; +in +{ + # Cursor CLI mutates ~/.cursor/cli-config.json directly (auth, privacy cache, + # per-session slash-command state), so we intentionally do NOT manage that + # file here. Only MCP config is declarative. + home.file.".cursor/mcp.json".source = cursorMcp; +} diff --git a/home/zsh.nix b/home/zsh.nix index 475acb1..0b55fec 100644 --- a/home/zsh.nix +++ b/home/zsh.nix @@ -30,6 +30,8 @@ shellAliases = { co = "codex --dangerously-bypass-approvals-and-sandbox"; ca = "cursor-agent"; + agent-claude = "cursor-agent --model=claude-opus-4-7-thinking-max --force"; + agent-codex = "cursor-agent --model=gpt-5.4-xhigh-fast --force"; cc = "claude"; ch = "claude-handoff"; cl = "clear";