Persist managed plugins in Claude Code's personal skills directory so strict-parser subcommands do not receive injected --plugin-dir arguments. Retain version-gated legacy behavior for older and unversioned packages.
43 lines
1.1 KiB
Nix
43 lines
1.1 KiB
Nix
{ config, ... }:
|
|
|
|
{
|
|
programs.claude-code = {
|
|
package = config.lib.test.mkStubPackage {
|
|
name = "claude-code";
|
|
version = "2.1.197";
|
|
buildScript = ''
|
|
mkdir -p $out/bin
|
|
touch $out/bin/claude
|
|
chmod 755 $out/bin/claude
|
|
'';
|
|
};
|
|
enable = true;
|
|
|
|
lspServers = {
|
|
go = {
|
|
command = "gopls";
|
|
args = [ "serve" ];
|
|
extensionToLanguage = {
|
|
".go" = "go";
|
|
};
|
|
};
|
|
typescript = {
|
|
command = "typescript-language-server";
|
|
args = [ "--stdio" ];
|
|
extensionToLanguage = {
|
|
".ts" = "typescript";
|
|
".tsx" = "typescriptreact";
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
nmt.script = ''
|
|
assertPathNotExists "$TESTED/home-path/bin/.claude-wrapped"
|
|
|
|
pluginDir="$TESTED/home-files/.claude/skills/claude-code-home-manager"
|
|
assertFileContent "$pluginDir/.claude-plugin/plugin.json" ${./expected-plugin-manifest.json}
|
|
assertFileContent "$pluginDir/.lsp.json" ${./expected-lsp-plugin.json}
|
|
assertPathNotExists "$pluginDir/.mcp.json"
|
|
'';
|
|
}
|