feat: split machine-specific section out of CLAUDE.md
The entry file assumed passwordless root and LAN-exposed dev servers, which is only true on yolo. It now @imports ~/.claude/machine.md, linked from claude-md/machines/<name>.md via programs.agentSkills.machine. Defaults to the conservative profile. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+37
-7
@@ -3,17 +3,45 @@
|
||||
#
|
||||
# inputs.agent-skills.url = "git+https://git.naps.pt/yolo/agent-skills.git";
|
||||
# # in home.nix imports: inputs.agent-skills.homeModules.default
|
||||
# # and pick a machine profile:
|
||||
# programs.agentSkills.machine = "yolo";
|
||||
#
|
||||
# recursive=true links each FILE individually, so machine-local skills can still
|
||||
# live alongside the managed ones in the same dir (a whole-dir symlink would not).
|
||||
{ agent-skills }:
|
||||
{ ... }:
|
||||
{ config, lib, ... }:
|
||||
let
|
||||
cfg = config.programs.agentSkills;
|
||||
in
|
||||
{
|
||||
home.file = {
|
||||
".claude/skills" = { source = "${agent-skills}/skills"; recursive = true; };
|
||||
".agents/skills" = { source = "${agent-skills}/skills"; recursive = true; };
|
||||
".claude/commands" = { source = "${agent-skills}/commands"; recursive = true; };
|
||||
".claude/hooks" = { source = "${agent-skills}/hooks"; recursive = true; };
|
||||
options.programs.agentSkills.machine = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "default";
|
||||
example = "yolo";
|
||||
description = ''
|
||||
Which claude-md/machines/<name>.md to link as ~/.claude/machine.md.
|
||||
The shared entry file @imports it, so it always has to resolve; the
|
||||
"default" profile is the conservative one (no passwordless root).
|
||||
'';
|
||||
};
|
||||
|
||||
config.home.file = {
|
||||
".claude/skills" = {
|
||||
source = "${agent-skills}/skills";
|
||||
recursive = true;
|
||||
};
|
||||
".agents/skills" = {
|
||||
source = "${agent-skills}/skills";
|
||||
recursive = true;
|
||||
};
|
||||
".claude/commands" = {
|
||||
source = "${agent-skills}/commands";
|
||||
recursive = true;
|
||||
};
|
||||
".claude/hooks" = {
|
||||
source = "${agent-skills}/hooks";
|
||||
recursive = true;
|
||||
};
|
||||
|
||||
# CLAUDE.md fragments land in ~/.claude root, pulled in by `@name.md` imports.
|
||||
# Listed one by one: recursive on ~/.claude would fight every other tool
|
||||
@@ -21,6 +49,9 @@
|
||||
".claude/writing.md".source = "${agent-skills}/claude-md/writing.md";
|
||||
".claude/operating.md".source = "${agent-skills}/claude-md/operating.md";
|
||||
|
||||
# Per-machine section: what this box permits (sudo, network exposure).
|
||||
".claude/machine.md".source = "${agent-skills}/claude-md/machines/${cfg.machine}.md";
|
||||
|
||||
# Path-scoped: loads only when Claude reads a matching source file.
|
||||
".claude/rules/code-comments.md".source = "${agent-skills}/claude-md/code-comments.md";
|
||||
".claude/RTK.md".source = "${agent-skills}/claude-md/RTK.md";
|
||||
@@ -28,7 +59,6 @@
|
||||
# Entry files: machine-local sections + @imports of the fragments above.
|
||||
".claude/CLAUDE.md".source = "${agent-skills}/entry/CLAUDE.md";
|
||||
".codex/AGENTS.md".source = "${agent-skills}/entry/codex-AGENTS.md";
|
||||
|
||||
};
|
||||
}
|
||||
# Hook wiring lives in ~/.claude/settings.json, which this module does not own.
|
||||
|
||||
Reference in New Issue
Block a user