Files
home-manager/tests/modules/programs/claude-code/config-dir.nix
Austin Horstman e28654b710 claude-code: mark hook scripts executable
Inline hooks are scripts, so write them with the executable bit set. Add NMT assertions covering default and custom config directories.

(cherry picked from commit d0af9b8bf3)
2026-06-01 19:47:05 -05:00

78 lines
1.6 KiB
Nix

{ config, ... }:
{
programs.claude-code = {
enable = true;
configDir = "${config.xdg.configHome}/claude";
settings = {
theme = "dark";
};
context = ''
# Custom context
'';
agents = {
reviewer = ''
---
name: reviewer
description: code reviewer
---
body
'';
};
commands = {
hello = ''
---
description: hello command
---
body
'';
};
rules = {
style = "rule body";
};
hooks = {
pre-edit = ''
#!/usr/bin/env bash
echo hi
'';
};
outputStyles = {
concise = "concise body";
};
skills = {
pdf = ''
---
name: pdf
description: pdf skill
---
body
'';
};
};
nmt.script = ''
assertPathNotExists home-files/.claude
assertFileExists home-files/.config/claude/settings.json
assertFileExists home-files/.config/claude/CLAUDE.md
assertFileExists home-files/.config/claude/agents/reviewer.md
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
assertFileExists home-path/etc/profile.d/hm-session-vars.sh
assertFileRegex home-path/etc/profile.d/hm-session-vars.sh \
'export CLAUDE_CONFIG_DIR="/home/hm-user/.config/claude"'
'';
}