1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-12-12 03:51:07 +01:00

claude-code: fix wrapper to inject --mcp-config after subcommands

Manually wrap program to maintain options called from cli.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
This commit is contained in:
Austin Horstman 2025-12-04 12:13:20 -06:00
parent 9379fbf4f5
commit 05a56dbf24
2 changed files with 14 additions and 14 deletions

View file

@ -345,24 +345,23 @@ in
programs.claude-code.finalPackage = programs.claude-code.finalPackage =
let let
makeWrapperArgs = lib.flatten ( mcpConfigFile = jsonFormat.generate "claude-code-mcp-config.json" {
lib.filter (x: x != [ ]) [ inherit (cfg) mcpServers;
(lib.optional (cfg.mcpServers != { }) [ };
"--add-flags"
"--mcp-config ${jsonFormat.generate "claude-code-mcp-config.json" { inherit (cfg) mcpServers; }}"
])
]
);
hasWrapperArgs = makeWrapperArgs != [ ]; needsWrapper = cfg.mcpServers != { };
wrapperScript = pkgs.writeShellScriptBin "claude" ''
exec "${lib.getExe cfg.package}" "$@" --mcp-config "${mcpConfigFile}"
'';
in in
if hasWrapperArgs then if needsWrapper then
pkgs.symlinkJoin { pkgs.symlinkJoin {
name = "claude-code"; name = "claude-code";
paths = [ cfg.package ]; paths = [ cfg.package ];
nativeBuildInputs = [ pkgs.makeWrapper ];
postBuild = '' postBuild = ''
wrapProgram $out/bin/claude ${lib.escapeShellArgs makeWrapperArgs} rm $out/bin/claude
ln -s ${wrapperScript}/bin/claude $out/bin/claude
''; '';
inherit (cfg.package) meta; inherit (cfg.package) meta;
} }

View file

@ -1,2 +1,3 @@
#! /nix/store/00000000000000000000000000000000-bash/bin/bash -e #!/nix/store/00000000000000000000000000000000-bash/bin/bash
exec -a "$0" "/nix/store/00000000000000000000000000000000-claude-code/bin/.claude-wrapped" --mcp-config /nix/store/00000000000000000000000000000000-claude-code-mcp-config.json "$@" exec "/nix/store/00000000000000000000000000000000-claude-code/bin/claude-code" "$@" --mcp-config "/nix/store/00000000000000000000000000000000-claude-code-mcp-config.json"