This repository has no description
4.5 kB
160 lines
1{ self, inputs, ... }:
2{
3 perSystem =
4 { pkgs, system, ... }:
5 let
6 gouvernai = pkgs.fetchFromGitHub {
7 owner = "Myr-Aya";
8 repo = "GouvernAI-claude-code-plugin";
9 rev = "main";
10 hash = "sha256-Qv+SV5GBf/UphhkfM5azqv9PzPOr8qdR6nkoV6Rezs4=";
11 };
12
13 claude = inputs.wrappers.lib.wrapModule {
14 imports = [ self.wrapperModules.claude-code ];
15 inherit pkgs;
16
17 package = self.lib.halalify self.legacyPackages.${system}.llm.claude-code;
18
19 claudeMd = ./CLAUDE.md;
20
21 plugins = [
22 (gouvernai + "/gouvernai")
23 ];
24
25 mcpServers = {
26 git-mcp = {
27 command = "${self.packages.${system}.git-mcp}/bin/git-mcp";
28 };
29 tmux-mcp = {
30 command = "${self.packages.${system}.tmux-mcp}/bin/tmux-mcp";
31 };
32 };
33
34 skills = {
35 hedgedoc = "${self.legacyPackages.${system}.skills.hedgedoc}/share/hedgedoc";
36 reverse-engineering = "${
37 self.legacyPackages.${system}.skills.reverse-engineering
38 }/share/reverse-engineering";
39 websearch = "${self.legacyPackages.${system}.skills.websearch}/share/websearch";
40 };
41
42 permissions = {
43 allow = [
44 # nix operations
45 "Bash(nix build:*)"
46 "Bash(nix eval:*)"
47 "Bash(nix fmt:*)"
48 "Bash(nix flake:*)"
49 "Bash(nix develop:*)"
50 "Bash(nix run:*)"
51 "Bash(nix search:*)"
52 "Bash(nix log:*)"
53 "Bash(nix path-info:*)"
54 "Bash(nix store:*)"
55 "Bash(nix derivation:*)"
56 "Bash(nix hash:*)"
57 "Bash(nix-build:*)"
58 "Bash(nix-instantiate:*)"
59 "Bash(nix-locate:*)"
60 "Bash(nix-prefetch-url:*)"
61 "Bash(nixos-rebuild:*)"
62 "Bash(darwin-rebuild:*)"
63 # clan
64 "Bash(clan:*)"
65 # git read operations
66 "Bash(git status:*)"
67 "Bash(git diff:*)"
68 "Bash(git log:*)"
69 "Bash(git show:*)"
70 "Bash(git branch:*)"
71 "Bash(git remote:*)"
72 "Bash(git stash list:*)"
73 "Bash(git rev-parse:*)"
74 "Bash(git describe:*)"
75 "Bash(git tag:*)"
76 "Bash(git ls-files:*)"
77 "Bash(git ls-remote:*)"
78 # git write operations
79 "Bash(git add:*)"
80 "Bash(git commit:*)"
81 "Bash(git checkout:*)"
82 "Bash(git switch:*)"
83 "Bash(git merge:*)"
84 "Bash(git rebase:*)"
85 "Bash(git stash:*)"
86 "Bash(git cherry-pick:*)"
87 "Bash(git fetch:*)"
88 "Bash(git pull:*)"
89 # common read-only tools
90 "Bash(cat:*)"
91 "Bash(ls:*)"
92 "Bash(find:*)"
93 "Bash(grep:*)"
94 "Bash(rg:*)"
95 "Bash(fd:*)"
96 "Bash(head:*)"
97 "Bash(tail:*)"
98 "Bash(wc:*)"
99 "Bash(sort:*)"
100 "Bash(uniq:*)"
101 "Bash(jq:*)"
102 "Bash(tree:*)"
103 "Bash(file:*)"
104 "Bash(which:*)"
105 "Bash(realpath:*)"
106 "Bash(readlink:*)"
107 "Bash(dirname:*)"
108 "Bash(basename:*)"
109 "Bash(stat:*)"
110 "Bash(du:*)"
111 "Bash(df:*)"
112 "Bash(env:*)"
113 "Bash(echo:*)"
114 "Bash(printf:*)"
115 "Bash(test:*)"
116 "Bash(tr:*)"
117 "Bash(sed:*)"
118 "Bash(awk:*)"
119 "Bash(cut:*)"
120 "Bash(diff:*)"
121 "Bash(tee:*)"
122 "Bash(xargs:*)"
123 "Bash(mkdir:*)"
124 "Bash(cp:*)"
125 "Bash(mv:*)"
126 "Bash(touch:*)"
127 "Bash(chmod:*)"
128 "Bash(ln:*)"
129 # dev tools
130 "Bash(gh:*)"
131 "Bash(shellcheck:*)"
132 "Bash(ruff:*)"
133 "Bash(kagi-search:*)"
134 "Bash(curl:*)"
135 # file edits
136 "Edit"
137 "Write"
138 "Read"
139 ];
140 };
141
142 extraPackages = [
143 self.packages.${system}.kagi-search
144 pkgs.curl
145 pkgs.jq
146 pkgs.ripgrep
147 pkgs.fd
148 pkgs.tree
149 ];
150
151 settings = {
152 # Prefer compact output for better context usage
153 verbose = true;
154 };
155 };
156 in
157 {
158 packages.claude = claude.wrapper;
159 };
160}