{ pkgs, lib, config, ... }: let enabled = config.mod.ai.enable; # Shared statusline: show the logged-in account email. statusLine = { type = "command"; command = "jq -r '.oauthAccount.emailAddress' \"$CLAUDE_CONFIG_DIR/.claude.json\""; }; # PostToolUse hook: echoes a JSON payload that injects a comment-policy # reminder as additional context after every Write/Edit. commentPolicyPayload = builtins.toJSON { suppressOutput = true; hookSpecificOutput = { hookEventName = "PostToolUse"; additionalContext = "Comment policy: default to ZERO code comments. Review what you just wrote and delete any comment that narrates the change, restates the code, states the obvious, is tangential, or explains design/why rationale -- put that reasoning in your chat reply instead, never in the code. Never use em dashes or en dashes anywhere in file content; use a plain ASCII hyphen or reword."; }; }; settings = builtins.toJSON { inherit statusLine; theme = "dark"; editorMode = "vim"; hooks = { PostToolUse = [ { matcher = "Write|Edit"; hooks = [ { type = "command"; command = "echo ${lib.escapeShellArg commentPolicyPayload}"; } ]; } ]; }; }; in { options = { mod.ai = { enable = lib.mkEnableOption "enable ai module"; }; }; config = lib.mkIf enabled { home-manager.users.alex = { home.packages = [ pkgs.claude-code ]; programs.zsh.shellAliases = { wclaude = "CLAUDE_CONFIG_DIR=$HOME/.claude-personal claude"; pclaude = "CLAUDE_CONFIG_DIR=$HOME/.claude-work claude"; }; home.file.".claude-work/settings.json".text = settings; home.file.".claude-personal/settings.json".text = settings; }; }; }