diff options
| -rw-r--r-- | mv/1systems/stro.nix | 1 | ||||
| -rw-r--r-- | mv/2configs/git.nix | 58 | 
2 files changed, 59 insertions, 0 deletions
| diff --git a/mv/1systems/stro.nix b/mv/1systems/stro.nix index f6be7cfea..38d4b4bc6 100644 --- a/mv/1systems/stro.nix +++ b/mv/1systems/stro.nix @@ -12,6 +12,7 @@ with lib;    imports = [      ../2configs/hw/x220.nix +    ../2configs/git.nix      ../2configs/mail-client.nix      ../2configs/xserver      { diff --git a/mv/2configs/git.nix b/mv/2configs/git.nix new file mode 100644 index 000000000..991d0c410 --- /dev/null +++ b/mv/2configs/git.nix @@ -0,0 +1,58 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + +  out = { +    krebs.git = { +      enable = true; +      root-title = "public repositories at ${config.krebs.build.host.name}"; +      root-desc = "Hmhmh, im Moment nicht."; +      repos = mapAttrs (_: s: removeAttrs s ["collaborators"]) repos; +      rules = rules; +    }; +  }; + +  repos = public-repos; + +  rules = concatMap make-rules (attrValues repos); + +  public-repos = mapAttrs make-public-repo { +    stockholm = {}; +  }; + +  make-public-repo = name: { desc ? null, section ? null, ... }: { +    inherit name desc section; +    public = true; +    hooks = { +      post-receive = pkgs.git-hooks.irc-announce { +        # TODO make nick = config.krebs.build.host.name the default +        nick = config.krebs.build.host.name; +        channel = "#retiolum"; +        server = "cd.retiolum"; +        verbose = config.krebs.build.host.name == "stro"; +      }; +    }; +  }; + +  make-rules = +    with git // config.krebs.users; +    repo: +      singleton { +        user = [ mv_stro ]; +        repo = [ repo ]; +        perm = push "refs/*" [ non-fast-forward create delete merge ]; +      } ++ +      optional repo.public { +        user = [ lass makefu uriel tv tv_xu ]; +        repo = [ repo ]; +        perm = fetch; +      } ++ +      optional (length (repo.collaborators or []) > 0) { +        user = repo.collaborators; +        repo = [ repo ]; +        perm = fetch; +      }; + +in out | 
