diff options
author | tv <tv@krebsco.de> | 2017-06-27 19:40:31 +0200 |
---|---|---|
committer | tv <tv@krebsco.de> | 2017-06-27 19:40:31 +0200 |
commit | e1e16e0d5d3c8b80000899920cea89c1b8bd5be4 (patch) | |
tree | f3f2765ac510bc578d2a9c350e9384284fe5fd83 /makefu/2configs/git | |
parent | 74429f245d366e783ecbcfb0ebd83a7f57e78e6a (diff) | |
parent | 10b6ac40265a0f653b8753e87894cbfb6fa00590 (diff) |
Merge remote-tracking branch 'prism/master'
Diffstat (limited to 'makefu/2configs/git')
-rw-r--r-- | makefu/2configs/git/brain-retiolum.nix | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/makefu/2configs/git/brain-retiolum.nix b/makefu/2configs/git/brain-retiolum.nix new file mode 100644 index 000000000..18275e3df --- /dev/null +++ b/makefu/2configs/git/brain-retiolum.nix @@ -0,0 +1,57 @@ +{ config, lib, pkgs, ... }: +# TODO: remove tv lib :) +with import <stockholm/lib>; +let + + repos = krebs-repos; + rules = concatMap krebs-rules (attrValues krebs-repos); + + krebs-repos = mapAttrs make-krebs-repo { + brain = { }; + }; + + + make-krebs-repo = with git; name: { cgit ? {}, ... }: { + inherit cgit name; + public = false; + hooks = { + post-receive = pkgs.git-hooks.irc-announce { + nick = config.networking.hostName; + verbose = true; + channel = "#retiolum"; + # TODO remove the hardcoded hostname + server = "ni.r"; + }; + }; + }; + + + + # TODO: get the list of all krebsministers + krebsminister = with config.krebs.users; [ lass tv ]; + krebs-rules = repo: + set-owners repo [ config.krebs.users.makefu ] ++ set-ro-access repo krebsminister; + + set-ro-access = with git; repo: user: + optional repo.public { + inherit user; + repo = [ repo ]; + perm = fetch; + }; + + set-owners = with git;repo: user: + singleton { + inherit user; + repo = [ repo ]; + perm = push "refs/*" [ non-fast-forward create delete merge ]; + }; + +in { + krebs.git = { + enable = true; + cgit = { + enable = false; + }; + inherit repos rules; + }; +} |