diff --git a/modules/programs/claude-code.nix b/modules/programs/claude-code.nix index 676c74565..52dc1e3f6 100644 --- a/modules/programs/claude-code.nix +++ b/modules/programs/claude-code.nix @@ -558,10 +558,14 @@ in name: content: nameValuePair "${cfg.configDir}/${subdir}/${name}.md" (mkSourceEntry content) ) attrs; - mkTextEntries = - subdir: attrs: + mkHookEntries = + attrs: lib.mapAttrs' ( - name: content: nameValuePair "${cfg.configDir}/${subdir}/${name}" { text = content; } + name: content: + nameValuePair "${cfg.configDir}/hooks/${name}" { + text = content; + executable = true; + } ) attrs; mkRecursiveDirAttrs = @@ -727,7 +731,7 @@ in recursive = true; }; }) - (mkTextEntries "hooks" cfg.hooks) + (mkHookEntries cfg.hooks) (lib.optionalAttrs (builtins.isAttrs cfg.skills) (lib.mapAttrs' mkSkillEntry cfg.skills)) (mkMarkdownEntries "output-styles" cfg.outputStyles) ]; diff --git a/tests/modules/programs/claude-code/config-dir.nix b/tests/modules/programs/claude-code/config-dir.nix index 50692f881..ab98328e6 100644 --- a/tests/modules/programs/claude-code/config-dir.nix +++ b/tests/modules/programs/claude-code/config-dir.nix @@ -66,6 +66,7 @@ assertFileExists home-files/.config/claude/commands/hello.md assertFileExists home-files/.config/claude/rules/style.md assertFileExists home-files/.config/claude/hooks/pre-edit + assertFileIsExecutable home-files/.config/claude/hooks/pre-edit assertFileExists home-files/.config/claude/output-styles/concise.md assertFileExists home-files/.config/claude/skills/pdf/SKILL.md diff --git a/tests/modules/programs/claude-code/full-config.nix b/tests/modules/programs/claude-code/full-config.nix index 8841865c1..a1e547293 100644 --- a/tests/modules/programs/claude-code/full-config.nix +++ b/tests/modules/programs/claude-code/full-config.nix @@ -135,9 +135,11 @@ assertFileContent home-files/.claude/commands/commit.md ${./expected-commit} assertFileExists home-files/.claude/hooks/pre-edit + assertFileIsExecutable home-files/.claude/hooks/pre-edit assertFileRegex home-files/.claude/hooks/pre-edit "About to edit file" assertFileExists home-files/.claude/hooks/post-commit + assertFileIsExecutable home-files/.claude/hooks/post-commit assertFileRegex home-files/.claude/hooks/post-commit "Committed with message" ''; }