fedora-csb-system-manager
 1{
 2  buildGoModule,
 3  lib,
 4  makeWrapper,
 5  libnotify,
 6}:
 7
 8buildGoModule {
 9  pname = "claude-hooks";
10  version = "0.1.0";
11  src = ./.;
12
13  vendorHash = "sha256-bdpAteulG3045jPdEpjcT4yGlnxLKDMlK7lk9WVRTKc=";
14
15  nativeBuildInputs = [ makeWrapper ];
16
17  # Build all binaries
18  subPackages = [
19    "cmd/capture-tool-output"
20    "cmd/initialize-session"
21    "cmd/update-terminal-title"
22    "cmd/validate-docs"
23    "cmd/save-session"
24    "cmd/session-stats"
25  ];
26
27  # Rename binaries to have consistent prefix and wrap with dependencies
28  postInstall = ''
29    mv $out/bin/capture-tool-output $out/bin/claude-hooks-capture-tool-output
30    mv $out/bin/initialize-session $out/bin/claude-hooks-initialize-session
31    mv $out/bin/update-terminal-title $out/bin/claude-hooks-update-terminal-title
32    mv $out/bin/validate-docs $out/bin/claude-hooks-validate-docs
33    mv $out/bin/save-session $out/bin/claude-hooks-save-session
34    mv $out/bin/session-stats $out/bin/claude-hooks-session-stats
35
36    # Wrap save-session to include notify-send in PATH
37    wrapProgram $out/bin/claude-hooks-save-session \
38      --prefix PATH : ${lib.makeBinPath [ libnotify ]}
39  '';
40
41  meta = {
42    description = "Claude Code hooks for session management, tool output capture, and documentation validation";
43    license = lib.licenses.mit;
44    platforms = lib.platforms.unix;
45    mainProgram = "claude-hooks-capture-tool-output";
46  };
47}