This repository has no description
4.5 kB
161 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 };
30
31 skills = {
32 hedgedoc = "${self.legacyPackages.${system}.skills.hedgedoc}/share/hedgedoc";
33 reverse-engineering = "${
34 self.legacyPackages.${system}.skills.reverse-engineering
35 }/share/reverse-engineering";
36 tmux = "${self.legacyPackages.${system}.skills.tmux}/share/tmux";
37 websearch = "${self.legacyPackages.${system}.skills.websearch}/share/websearch";
38 };
39
40 permissions = {
41 allow = [
42 # nix operations
43 "Bash(nix build:*)"
44 "Bash(nix eval:*)"
45 "Bash(nix fmt:*)"
46 "Bash(nix flake:*)"
47 "Bash(nix develop:*)"
48 "Bash(nix run:*)"
49 "Bash(nix search:*)"
50 "Bash(nix log:*)"
51 "Bash(nix path-info:*)"
52 "Bash(nix store:*)"
53 "Bash(nix derivation:*)"
54 "Bash(nix hash:*)"
55 "Bash(nix-build:*)"
56 "Bash(nix-instantiate:*)"
57 "Bash(nix-locate:*)"
58 "Bash(nix-prefetch-url:*)"
59 "Bash(nixos-rebuild:*)"
60 "Bash(darwin-rebuild:*)"
61 # clan
62 "Bash(clan:*)"
63 # git read operations
64 "Bash(git status:*)"
65 "Bash(git diff:*)"
66 "Bash(git log:*)"
67 "Bash(git show:*)"
68 "Bash(git branch:*)"
69 "Bash(git remote:*)"
70 "Bash(git stash list:*)"
71 "Bash(git rev-parse:*)"
72 "Bash(git describe:*)"
73 "Bash(git tag:*)"
74 "Bash(git ls-files:*)"
75 "Bash(git ls-remote:*)"
76 # git write operations
77 "Bash(git add:*)"
78 "Bash(git commit:*)"
79 "Bash(git checkout:*)"
80 "Bash(git switch:*)"
81 "Bash(git merge:*)"
82 "Bash(git rebase:*)"
83 "Bash(git stash:*)"
84 "Bash(git cherry-pick:*)"
85 "Bash(git fetch:*)"
86 "Bash(git pull:*)"
87 # common read-only tools
88 "Bash(cat:*)"
89 "Bash(ls:*)"
90 "Bash(find:*)"
91 "Bash(grep:*)"
92 "Bash(rg:*)"
93 "Bash(fd:*)"
94 "Bash(head:*)"
95 "Bash(tail:*)"
96 "Bash(wc:*)"
97 "Bash(sort:*)"
98 "Bash(uniq:*)"
99 "Bash(jq:*)"
100 "Bash(tree:*)"
101 "Bash(file:*)"
102 "Bash(which:*)"
103 "Bash(realpath:*)"
104 "Bash(readlink:*)"
105 "Bash(dirname:*)"
106 "Bash(basename:*)"
107 "Bash(stat:*)"
108 "Bash(du:*)"
109 "Bash(df:*)"
110 "Bash(env:*)"
111 "Bash(echo:*)"
112 "Bash(printf:*)"
113 "Bash(test:*)"
114 "Bash(tr:*)"
115 "Bash(sed:*)"
116 "Bash(awk:*)"
117 "Bash(cut:*)"
118 "Bash(diff:*)"
119 "Bash(tee:*)"
120 "Bash(xargs:*)"
121 "Bash(mkdir:*)"
122 "Bash(cp:*)"
123 "Bash(mv:*)"
124 "Bash(touch:*)"
125 "Bash(chmod:*)"
126 "Bash(ln:*)"
127 # dev tools
128 "Bash(gh:*)"
129 "Bash(shellcheck:*)"
130 "Bash(ruff:*)"
131 "Bash(kagi-search:*)"
132 "Bash(curl:*)"
133 "Bash(tmux:*)"
134 # file edits
135 "Edit"
136 "Write"
137 "Read"
138 ];
139 };
140
141 extraPackages = [
142 self.packages.${system}.kagi-search
143 pkgs.curl
144 pkgs.jq
145 pkgs.python3
146 pkgs.ripgrep
147 pkgs.fd
148 pkgs.tmux
149 pkgs.tree
150 ];
151
152 settings = {
153 # Prefer compact output for better context usage
154 verbose = true;
155 };
156 };
157 in
158 {
159 packages.claude = claude.wrapper;
160 };
161}