{ config, lib, pkgs, ... }: with import <stockholm/lib>; let mirror = "git@${config.networking.hostName}:"; defineRepo = name: announce: let repo = { public = true; name = mkDefault "${name}"; cgit.desc = mkDefault "mirror for ${name}"; cgit.section = mkDefault "mirror"; hooks = mkIf announce (mkDefault { post-receive = pkgs.git-hooks.irc-announce { nick = config.networking.hostName; verbose = false; channel = "#xxx"; server = "irc.r"; branches = [ "newest" ]; }; }); }; in { rules = with git; [ { user = with config.krebs.users; [ config.krebs.users."${config.networking.hostName}-repo-sync" lass lass-mors lass-shodan ]; repo = [ repo ]; perm = push ''refs/*'' [ non-fast-forward create delete merge ]; } { user = attrValues config.krebs.users; repo = [ repo ]; perm = fetch; } ]; repos."${name}" = repo; }; sync-retiolum = name: { krebs.repo-sync.repos.${name} = { branches = { makefu = { origin.url = "http://cgit.gum/${name}"; mirror.url = "${mirror}${name}"; }; tv = { origin.url = "http://cgit.ni.r/${name}"; mirror.url = "${mirror}${name}"; }; nin = { origin.url = "http://cgit.onondaga.r/${name}"; mirror.url = "${mirror}${name}"; }; lassulus = { origin.url = "http://cgit.lassul.us/${name}"; mirror.url = "${mirror}${name}"; }; makefu-staging = { origin.url = "http://cgit.gum/${name}"; origin.ref = "heads/staging"; mirror.url = "${mirror}${name}"; }; tv-staging = { origin.url = "http://cgit.ni.r/${name}"; origin.ref = "heads/staging"; mirror.url = "${mirror}${name}"; }; nin-staging = { origin.url = "http://cgit.onondaga.r/${name}"; origin.ref = "heads/staging"; mirror.url = "${mirror}${name}"; }; }; latest = { url = "${mirror}${name}"; ref = "heads/newest"; }; }; krebs.git = defineRepo name (config.networking.hostName == "prism"); }; sync-remote = name: url: { krebs.repo-sync.repos.${name} = { branches = { remote = { origin.url = url; mirror.url = "${mirror}${name}"; }; }; }; krebs.git = defineRepo name (config.networking.hostName == "prism"); }; sync-remote-silent = name: url: { krebs.repo-sync.repos.${name} = { branches = { remote = { origin.url = url; mirror.url = "${mirror}${name}"; }; }; }; krebs.git = defineRepo name false; }; in { krebs.repo-sync = { enable = true; unitConfig.ConditionPathExists = "!/var/run/ppp0.pid"; }; imports = [ (sync-remote "array" "https://github.com/makefu/array") (sync-remote "email-header" "https://github.com/4z3/email-header") (sync-remote "mycube-flask" "https://github.com/makefu/mycube-flask") (sync-remote "reaktor-titlebot" "https://github.com/makefu/reaktor-titlebot") (sync-remote "repo-sync" "https://github.com/makefu/repo-sync") (sync-remote "skytraq-datalogger" "https://github.com/makefu/skytraq-datalogger") (sync-remote "xintmap" "https://github.com/4z3/xintmap") (sync-remote "realwallpaper" "https://github.com/lassulus/realwallpaper") (sync-remote "lassulus-blog" "https://github.com/lassulus/lassulus-blog") (sync-remote "painload" "https://github.com/krebs/painload") (sync-remote "Reaktor" "https://github.com/krebs/Reaktor") (sync-remote "nixos-wiki" "https://github.com/Mic92/nixos-wiki.wiki.git") (sync-retiolum "go") (sync-retiolum "much") (sync-retiolum "newsbot-js") (sync-retiolum "populate") (sync-retiolum "stockholm") (sync-retiolum "wai-middleware-time") (sync-retiolum "xmonad-stockholm") (sync-retiolum "nix-writers") ]; }