This repository has no description
1.4 kB
81 lines
1{
2 self,
3 config,
4 lib,
5 pkgs,
6 ...
7}:
8let
9 git = self.inputs.stockholm.lib.git;
10 repos = krebs-repos;
11 rules = lib.concatMap krebs-rules (lib.attrValues krebs-repos);
12
13 krebs-repos = lib.mapAttrs make-krebs-repo {
14 brain = { };
15 };
16
17 make-krebs-repo =
18 with git;
19 name:
20 {
21 cgit ? { },
22 ...
23 }:
24 {
25 inherit cgit name;
26 public = false;
27 hooks = {
28 post-receive = pkgs.git-hooks.irc-announce {
29 nick = config.networking.hostName;
30 verbose = true;
31 channel = "#xxx";
32 # TODO remove the hardcoded hostname
33 server = "irc.r";
34 };
35 };
36 };
37
38 # TODO: get the list of all krebsministers
39 krebsminister = with config.krebs.users; [
40 makefu
41 tv
42 kmein
43 ];
44 krebs-rules = repo: set-owners repo [ config.krebs.users.lass ] ++ set-ro-access repo krebsminister;
45
46 set-ro-access =
47 with git;
48 repo: user:
49 lib.singleton {
50 inherit user;
51 repo = [ repo ];
52 perm = fetch;
53 };
54
55 set-owners =
56 with git;
57 repo: user:
58 lib.singleton {
59 inherit user;
60 repo = [ repo ];
61 perm = push "refs/*" [
62 non-fast-forward
63 create
64 delete
65 merge
66 ];
67 };
68
69in
70{
71 imports = [
72 self.inputs.stockholm.nixosModules.git
73 ];
74 krebs.git = {
75 enable = true;
76 cgit = {
77 enable = false;
78 };
79 inherit repos rules;
80 };
81}