atagen

roundabout

public
Star0
Watch0
e50aca5650c22545f0d99db926ab1ae120f24699
1
ssh://brewery@pls.lobotomise.me:33/atagen/roundabout.git

Blame: nix/plugin.nix

6eb193fbfa70atagen2026-09-27 03:59 UTC1
{
6eb193fbfa70atagen2026-09-27 03:59 UTC2
  lib,
6eb193fbfa70atagen2026-09-27 03:59 UTC3
  runCommand,
6eb193fbfa70atagen2026-09-27 03:59 UTC4
  writeText,
6eb193fbfa70atagen2026-09-27 03:59 UTC5
  roundabout,
6eb193fbfa70atagen2026-09-27 03:59 UTC6
}:
6eb193fbfa70atagen2026-09-27 03:59 UTC7
6eb193fbfa70atagen2026-09-27 03:59 UTC8
let
6eb193fbfa70atagen2026-09-27 03:59 UTC9
  hook = event: {
6eb193fbfa70atagen2026-09-27 03:59 UTC10
    type = "command";
6eb193fbfa70atagen2026-09-27 03:59 UTC11
    command = "${lib.getExe roundabout} hook ${event}";
6eb193fbfa70atagen2026-09-27 03:59 UTC12
  };
6eb193fbfa70atagen2026-09-27 03:59 UTC13
  hooks = writeText "hooks.json" (
6eb193fbfa70atagen2026-09-27 03:59 UTC14
    builtins.toJSON {
6eb193fbfa70atagen2026-09-27 03:59 UTC15
      hooks = {
6eb193fbfa70atagen2026-09-27 03:59 UTC16
        PreToolUse = [
6eb193fbfa70atagen2026-09-27 03:59 UTC17
          {
6eb193fbfa70atagen2026-09-27 03:59 UTC18
            matcher = "Bash";
6eb193fbfa70atagen2026-09-27 03:59 UTC19
            hooks = [ (hook "pre-tool-use") ];
6eb193fbfa70atagen2026-09-27 03:59 UTC20
          }
6eb193fbfa70atagen2026-09-27 03:59 UTC21
        ];
6eb193fbfa70atagen2026-09-27 03:59 UTC22
        PostToolUse = [ { hooks = [ (hook "post-tool-use") ]; } ];
6eb193fbfa70atagen2026-09-27 03:59 UTC23
        UserPromptSubmit = [ { hooks = [ (hook "prompt-submit") ]; } ];
6eb193fbfa70atagen2026-09-27 03:59 UTC24
        Stop = [ { hooks = [ (hook "stop") ]; } ];
6eb193fbfa70atagen2026-09-27 03:59 UTC25
        SubagentStop = [ { hooks = [ (hook "subagent-stop") ]; } ];
6eb193fbfa70atagen2026-09-27 03:59 UTC26
      };
6eb193fbfa70atagen2026-09-27 03:59 UTC27
    }
6eb193fbfa70atagen2026-09-27 03:59 UTC28
  );
6eb193fbfa70atagen2026-09-27 03:59 UTC29
  plugin = writeText "plugin.json" (
6eb193fbfa70atagen2026-09-27 03:59 UTC30
    builtins.toJSON {
6eb193fbfa70atagen2026-09-27 03:59 UTC31
      name = "roundabout";
6eb193fbfa70atagen2026-09-27 03:59 UTC32
      description = "builds wait their turn";
6eb193fbfa70atagen2026-09-27 03:59 UTC33
      version = roundabout.version;
6eb193fbfa70atagen2026-09-27 03:59 UTC34
      author.name = "atagen";
6eb193fbfa70atagen2026-09-27 03:59 UTC35
    }
6eb193fbfa70atagen2026-09-27 03:59 UTC36
  );
6eb193fbfa70atagen2026-09-27 03:59 UTC37
  marketplace = writeText "marketplace.json" (
6eb193fbfa70atagen2026-09-27 03:59 UTC38
    builtins.toJSON {
6eb193fbfa70atagen2026-09-27 03:59 UTC39
      name = "roundabout";
6eb193fbfa70atagen2026-09-27 03:59 UTC40
      owner.name = "atagen";
6eb193fbfa70atagen2026-09-27 03:59 UTC41
      description = "one build at a time, please";
6eb193fbfa70atagen2026-09-27 03:59 UTC42
      plugins = [
6eb193fbfa70atagen2026-09-27 03:59 UTC43
        {
6eb193fbfa70atagen2026-09-27 03:59 UTC44
          name = "roundabout";
6eb193fbfa70atagen2026-09-27 03:59 UTC45
          source = "./plugins/roundabout";
6eb193fbfa70atagen2026-09-27 03:59 UTC46
        }
6eb193fbfa70atagen2026-09-27 03:59 UTC47
      ];
6eb193fbfa70atagen2026-09-27 03:59 UTC48
    }
6eb193fbfa70atagen2026-09-27 03:59 UTC49
  );
6eb193fbfa70atagen2026-09-27 03:59 UTC50
in
6eb193fbfa70atagen2026-09-27 03:59 UTC51
# a marketplace wrapping one plugin, since claude code won't install a bare
6eb193fbfa70atagen2026-09-27 03:59 UTC52
# plugin dir. `claude plugin marketplace add <this>` then install roundabout@roundabout
6eb193fbfa70atagen2026-09-27 03:59 UTC53
runCommand "roundabout-plugin-${roundabout.version}" { } ''
6eb193fbfa70atagen2026-09-27 03:59 UTC54
  p=$out/plugins/roundabout
6eb193fbfa70atagen2026-09-27 03:59 UTC55
  mkdir -p $out/.claude-plugin $p/.claude-plugin $p/hooks $p/skills $p/bin
6eb193fbfa70atagen2026-09-27 03:59 UTC56
  cp ${marketplace} $out/.claude-plugin/marketplace.json
6eb193fbfa70atagen2026-09-27 03:59 UTC57
  cp ${plugin} $p/.claude-plugin/plugin.json
6eb193fbfa70atagen2026-09-27 03:59 UTC58
  cp ${hooks} $p/hooks/hooks.json
6eb193fbfa70atagen2026-09-27 03:59 UTC59
  cp -r ${../plugin/skills}/. $p/skills/
6eb193fbfa70atagen2026-09-27 03:59 UTC60
  ln -s ${lib.getExe roundabout} $p/bin/rabt
6eb193fbfa70atagen2026-09-27 03:59 UTC61
''