diff options
| -rw-r--r-- | krebs/1systems/hotdog/config.nix | 1 | ||||
| -rw-r--r-- | krebs/2configs/repo-sync.nix | 147 | 
2 files changed, 122 insertions, 26 deletions
| diff --git a/krebs/1systems/hotdog/config.nix b/krebs/1systems/hotdog/config.nix index 18b751a7e..0a848426c 100644 --- a/krebs/1systems/hotdog/config.nix +++ b/krebs/1systems/hotdog/config.nix @@ -15,6 +15,7 @@      <stockholm/krebs/2configs/ircd.nix>      <stockholm/krebs/2configs/reaktor-retiolum.nix>      <stockholm/krebs/2configs/reaktor-krebs.nix> +    <stockholm/krebs/2configs/repo-sync.nix>    ];    krebs.build.host = config.krebs.hosts.hotdog; diff --git a/krebs/2configs/repo-sync.nix b/krebs/2configs/repo-sync.nix index 48da88a8d..2a7160a50 100644 --- a/krebs/2configs/repo-sync.nix +++ b/krebs/2configs/repo-sync.nix @@ -5,34 +5,52 @@ with import <stockholm/lib>;  let    mirror = "git@${config.networking.hostName}:"; -  defineRepo = name: announce: let +  defineRepo = { +    name, desc, section +  }: +  let      repo = {        public = true;        name = mkDefault "${name}"; -      cgit.desc = mkDefault "mirror for ${name}"; -      cgit.section = mkDefault "mirror"; -      hooks = mkIf announce (mkDefault { +      cgit.desc = desc; +      cgit.section = section; +      hooks = mkDefault {          post-receive = pkgs.git-hooks.irc-announce {            nick = config.networking.hostName;            verbose = false;            channel = "#xxx";            server = "irc.r"; -          branches = [ "master" ]; +          branches = [ "newest" ];          }; -      }); +      };      };    in { -    rules = with git; singleton { -      user = with config.krebs.users; [ -        config.krebs.users."${config.networking.hostName}-repo-sync" -      ]; -      repo = [ repo ]; -      perm = push ''refs/*'' [ non-fast-forward create delete merge ]; -    }; +    rules = with git; [ +      { +        user = with config.krebs.users; [ +          config.krebs.users."${config.networking.hostName}-repo-sync" +          lass +          tv +          makefu +          jeschli +        ]; +        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: +  sync-retiolum = { +    name, +    desc ? "mirror for ${name}", +    section ? "mirror" +  }:      {        krebs.repo-sync.repos.${name} = {          branches = { @@ -52,29 +70,106 @@ let              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/master"; +          ref = "heads/newest"; +        }; +      }; +      krebs.git = defineRepo { inherit name desc section; }; +    }; + +  sync-remote = { +    name, +    url, +    desc ? "mirror for ${name}", +    section ? "mirror" +  }: +    { +      krebs.repo-sync.repos.${name} = { +        branches = { +          remote = { +            origin.url = url; +            mirror.url = "${mirror}${name}"; +          };          };        }; -      krebs.git = defineRepo name false; +      krebs.git = defineRepo { inherit name desc section; };      };  in { -  krebs.repo-sync = { -    enable = true; -  };    krebs.git = { -    enable = mkDefault true; -    cgit = { -      settings = { -        root-title = "Shared Repos"; -        root-desc = "keep on krebsing"; -      }; +    enable = true; +    cgit.settings = { +      root-title = "krebs repos"; +      root-desc = "keep calm and engage";      };    }; +  krebs.repo-sync = { +    enable = true; +  };    imports = [ -    (sync-retiolum "stockholm") +    (sync-retiolum { name = "the_playlist"; desc = "Good Music collection + tools"; section = "art"; }) + +    (sync-retiolum { name = "stockholm"; desc = "take all computers hostage, they love it"; section = "configuration"; }) + +    (sync-retiolum { name = "cholerab"; desc = "krebs thesauron & enterprise-patterns"; section = "documentation"; }) + +    (sync-retiolum { name = "disko"; desc = "take a description of your disk layout and produce a format script"; section = "software"; }) +    (sync-retiolum { name = "news"; desc = "take a rss feed and a timeout and print it to stdout"; section = "software"; }) +    (sync-retiolum { name = "krops"; desc = "krebs ops"; section = "software"; }) +    (sync-retiolum { name = "go"; desc = "url shortener"; section = "software"; }) +    (sync-retiolum { name = "much"; desc = "curses email client"; section = "software"; }) +    (sync-retiolum { name = "newsbot-js"; desc = "irc rss/atom bot"; section = "software"; }) +    (sync-retiolum { name = "nix-writers"; desc = "high level writers for nix"; section = "software"; }) + +    (sync-retiolum { name = "cac-api"; desc = "CloudAtCost API command line interface"; section = "miscellaneous"; }) +    (sync-retiolum { name = "dic"; desc = "dict.leo.org command line interface"; section = "miscellaneous"; }) +    (sync-retiolum { name = "get"; section = "miscellaneous"; }) +    (sync-retiolum { name = "hstool"; desc = "Haskell Development Environment ^_^"; section = "miscellaneous"; }) +    (sync-retiolum { name = "htgen"; desc = "toy HTTP server"; section = "miscellaneous"; }) +    (sync-retiolum { name = "kirk"; desc = "IRC tools"; section = "miscellaneous"; }) +    (sync-retiolum { name = "load-env"; section = "miscellaneous"; }) +    (sync-retiolum { name = "loldns"; desc = "toy DNS server"; section = "miscellaneous"; }) +    (sync-retiolum { name = "netcup"; desc = "netcup command line interface"; section = "miscellaneous"; }) +    (sync-retiolum { name = "populate"; desc = "source code installer"; section = "miscellaneous"; }) +    (sync-retiolum { name = "q"; section = "miscellaneous"; }) +    (sync-retiolum { name = "regfish"; section = "miscellaneous"; }) +    (sync-retiolum { name = "soundcloud"; desc = "SoundCloud command line interface"; section = "miscellaneous"; }) + +    (sync-retiolum { name = "blessings"; section = "Haskell libraries"; }) +    (sync-retiolum { name = "mime"; section = "Haskell libraries"; }) +    (sync-retiolum { name = "quipper"; section = "Haskell libraries"; }) +    (sync-retiolum { name = "scanner"; section = "Haskell libraries"; }) +    (sync-retiolum { name = "wai-middleware-time"; section = "Haskell libraries"; }) +    (sync-retiolum { name = "web-routes-wai-custom"; section = "Haskell libraries"; }) +    (sync-retiolum { name = "xintmap"; section = "Haskell libraries"; }) +    (sync-retiolum { name = "xmonad-stockholm"; desc = "krebs xmonad modules"; section = "Haskell libraries"; }) + +    (sync-remote { name = "array"; url = "https://github.com/makefu/array"; }) +    (sync-remote { name = "email-header"; url = "https://github.com/4z3/email-header"; }) +    (sync-remote { name = "mycube-flask"; url = "https://github.com/makefu/mycube-flask"; }) +    (sync-remote { name = "reaktor-titlebot"; url = "https://github.com/makefu/reaktor-titlebot"; }) +    (sync-remote { name = "repo-sync"; url = "https://github.com/makefu/repo-sync"; }) +    (sync-remote { name = "skytraq-datalogger"; url = "https://github.com/makefu/skytraq-datalogger"; }) +    (sync-remote { name = "realwallpaper"; url = "https://github.com/lassulus/realwallpaper"; }) +    (sync-remote { name = "painload"; url = "https://github.com/krebs/painload"; }) +    (sync-remote { name = "Reaktor"; url = "https://github.com/krebs/Reaktor"; }) +    (sync-remote { name = "nixos-wiki"; url = "https://github.com/Mic92/nixos-wiki.wiki.git"; })    ];  } | 
