programs.claude-code.plugins

Home-Manager option

(attribute set of (package or absolute path)) or list of (package or absolute path)

Plugins to use when running Claude Code. The attribute name becomes the plugin directory name, and the value is either: - A path to the plugin directory - The plugin package, whether a nix package or the output of a fetcher With Claude Code 2.1.157 or later, each plugin is symlinked into the skills/ subdirectory of programs.claude-code.configDir and loaded as a personal plugin, exposing its skills, agents, commands, hooks, and MCP servers. Versions 2.1.76 through 2.1.156 fall back to a legacy --plugin-dir wrapper, as do packages without detectable version metadata. Strict-parser subcommands such as claude rc may reject arguments from that compatibility path. A plugin that lives in a subdirectory of a larger repository can be referenced through a store path, in which case only that subdirectory is linked and the surrounding repository is left out. A plain list of plugins is still accepted but deprecated, since the directory name is then derived from each entry's base name and store paths produce unstable names such as bxa1s0m3h4sh-source.

type: (attribute set of (package or absolute path)) or list of (package or absolute path)
Default
{ }
Example
{ my-local-plugin = ./my-local-plugin; claude-plugin = fetchFromGitHub { owner = "some-github-org"; repo = "claude-plugin"; rev = "779a68ebc2a75e4a184d2c87e5a43a758e6458a1"; sha256 = "228fdd7e5908ea1d2f65218ecd9c71e1eefa0834d200d55fbb8bf8b5563acec0"; }; # A plugin can also be a subdirectory within a package source # (store path). nested-plugin = "${pkgs.some-package.src}/claude-plugin"; }
declared in: <home-manager/modules/programs/claude-code/options.nix>source unavailable