summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--krebs/1systems/puyak/config.nix3
-rw-r--r--krebs/1systems/wolf/config.nix1
-rw-r--r--krebs/2configs/cgit-mirror.nix45
-rw-r--r--krebs/2configs/repo-sync.nix91
-rw-r--r--krebs/2configs/shared-buildbot.nix34
-rw-r--r--krebs/3modules/git.nix3
-rw-r--r--krebs/3modules/krebs/default.nix12
7 files changed, 106 insertions, 83 deletions
diff --git a/krebs/1systems/puyak/config.nix b/krebs/1systems/puyak/config.nix
index 5e5f6cdb2..f55da019a 100644
--- a/krebs/1systems/puyak/config.nix
+++ b/krebs/1systems/puyak/config.nix
@@ -5,6 +5,9 @@
<stockholm/krebs>
<stockholm/krebs/2configs>
<stockholm/krebs/2configs/secret-passwords.nix>
+
+ <stockholm/krebs/2configs/repo-sync.nix>
+ <stockholm/krebs/2configs/shared-buildbot.nix>
];
krebs.build.host = config.krebs.hosts.puyak;
diff --git a/krebs/1systems/wolf/config.nix b/krebs/1systems/wolf/config.nix
index ba897a26e..32e7bd49d 100644
--- a/krebs/1systems/wolf/config.nix
+++ b/krebs/1systems/wolf/config.nix
@@ -11,7 +11,6 @@ in
<stockholm/krebs/2configs/central-stats-client.nix>
<stockholm/krebs/2configs/save-diskspace.nix>
- <stockholm/krebs/2configs/cgit-mirror.nix>
<stockholm/krebs/2configs/graphite.nix>
<stockholm/krebs/2configs/repo-sync.nix>
<stockholm/krebs/2configs/shared-buildbot.nix>
diff --git a/krebs/2configs/cgit-mirror.nix b/krebs/2configs/cgit-mirror.nix
deleted file mode 100644
index c2326a5cc..000000000
--- a/krebs/2configs/cgit-mirror.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with import <stockholm/lib>;
-let
- rules = with git; singleton {
- user = [ wolf-repo-sync ];
- repo = [ stockholm-mirror ];
- perm = push ''refs/*'' [ non-fast-forward create delete merge ];
- };
-
- stockholm-mirror = {
- public = true;
- name = "stockholm-mirror";
- cgit.desc = "mirror for all stockholm branches";
- hooks = {
- post-receive = pkgs.git-hooks.irc-announce {
- nick = config.networking.hostName;
- verbose = false;
- channel = "#retiolum";
- server = "ni.r";
- };
- };
- };
-
- wolf-repo-sync = {
- name = "wolf-repo-sync";
- mail = "spam@krebsco.de";
- # TODO put git-sync pubkey somewhere more appropriate
- pubkey = ''ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwuAZB3wtAvBJFYh+gWdyGaZU4mtqM2dFXmh2rORlbXeh02msu1uv07ck1VKkQ4LgvCBcBsAOeVa1NTz99eLqutwgcqMCytvRNUCibcoEWwHObsK53KhDJj+zotwlFhnPPeK9+EpOP4ngh/tprJikttos5BwBwe2K+lfiid3fmVPZcTTYa77nCwijimMvWEx6CEjq1wiXMUc4+qcEn8Swbwomz/EEQdNE2hgoC3iMW9RqduTFdIJWnjVi0KaxenX9CvQRGbVK5SSu2gwzN59D/okQOCP6+p1gL5r3QRHSLSSRiEHctVQTkpKOifrtLZGSr5zArEmLd/cOVyssHQPCX repo-sync@wolf'';
- };
-
-in {
- krebs.users.wolf-repo-sync = wolf-repo-sync;
- krebs.git = {
- enable = true;
- cgit = {
- settings = {
- root-title = "Shared Repos";
- root-desc = "keep on krebsing";
- };
- };
- inherit rules;
- repos.stockholm-mirror = stockholm-mirror;
- };
-}
diff --git a/krebs/2configs/repo-sync.nix b/krebs/2configs/repo-sync.nix
index 637a26e3c..157a30e69 100644
--- a/krebs/2configs/repo-sync.nix
+++ b/krebs/2configs/repo-sync.nix
@@ -1,31 +1,80 @@
{ config, lib, pkgs, ... }:
-with lib;
-{
- krebs.repo-sync = let
- # TODO addMirrorURL function
- mirror = "git@wolf:stockholm-mirror";
- in {
- enable = true;
- repos.stockholm = {
- branches = {
- makefu = {
- origin.url = http://cgit.gum/stockholm ;
- mirror.url = mirror;
+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 = "#retiolum";
+ server = "ni.r";
+ branches = [ "newest" ];
};
- tv = {
- origin.url = http://cgit.ni.r/stockholm;
- mirror.url = mirror;
+ });
+ };
+ 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 ];
+ };
+ 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}";
+ };
};
- lassulus = {
- origin.url = http://cgit.prism/stockholm ;
- mirror.url = mirror;
+ latest = {
+ url = "${mirror}${name}";
+ ref = "heads/newest";
};
};
- latest = {
- url = mirror;
- ref = "heads/master";
+ krebs.git = defineRepo name true;
+ };
+
+in {
+ krebs.repo-sync = {
+ enable = true;
+ };
+ krebs.git = {
+ enable = mkDefault true;
+ cgit = {
+ settings = {
+ root-title = "Shared Repos";
+ root-desc = "keep on krebsing";
};
};
};
+ imports = [
+ (sync-retiolum "stockholm")
+ ];
}
diff --git a/krebs/2configs/shared-buildbot.nix b/krebs/2configs/shared-buildbot.nix
index dd430b7c0..a9e5afc75 100644
--- a/krebs/2configs/shared-buildbot.nix
+++ b/krebs/2configs/shared-buildbot.nix
@@ -1,30 +1,34 @@
{ lib, config, pkgs, ... }:
-# The buildbot config is self-contained and currently provides a way
+# The buildbot config is self-contained and currently provides a way
# to test "krebs" configuration (infrastructure to be used by every krebsminister).
# You can add your own test, test steps as required. Deploy the config on a
# krebs host like wolf and everything should be fine.
# TODO for all users schedule a build for fast tests
-{
+let
+ hostname = config.networking.hostName;
+in {
# due to the fact that we actually build stuff on the box via the daemon,
# /nix/store should be cleaned up automatically as well
- services.nginx.virtualHosts.build = {
- serverAliases = [ "build.wolf.r" ];
- locations."/".extraConfig = ''
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- proxy_pass http://127.0.0.1:${toString config.krebs.buildbot.master.web.port};
- '';
+ services.nginx = {
+ enable = true;
+ virtualHosts.build = {
+ serverAliases = [ "build.${hostname}.r" ];
+ locations."/".extraConfig = ''
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection "upgrade";
+ proxy_pass http://127.0.0.1:${toString config.krebs.buildbot.master.web.port};
+ '';
+ };
};
nix.gc.automatic = true;
nix.gc.dates = "05:23";
- networking.firewall.allowedTCPPorts = [ 8010 9989 ];
+ networking.firewall.allowedTCPPorts = [ 80 8010 9989 ];
krebs.buildbot.master = let
- stockholm-mirror-url = http://cgit.wolf.r/stockholm-mirror ;
+ stockholm-mirror-url = "http://cgit.${hostname}.r/stockholm" ;
in {
- secrets = [ "retiolum-ci.rsa_key.priv" "cac.json" ];
workers = {
testworker = "krebspass";
};
@@ -155,13 +159,13 @@
};
irc = {
enable = true;
- nick = "wolfbot";
+ nick = "${hostname}bot";
server = "ni.r";
channels = [ { channel = "retiolum"; } ];
allowForce = true;
};
extraConfig = ''
- c['buildbotURL'] = "http://build.wolf.r/"
+ c['buildbotURL'] = "http://build.${hostname}.r/"
'';
};
@@ -173,6 +177,6 @@
packages = with pkgs; [ gnumake jq nix populate ];
# all nix commands will need a working nixpkgs installation
extraEnviron = {
- NIX_PATH="nixpkgs=/var/src/nixpkgs:nixos-config=./krebs/1systems/wolf/config.nix:stockholm=./"; };
+ NIX_PATH="nixpkgs=/var/src/nixpkgs:nixos-config=./krebs/1systems/${hostname}/config.nix:stockholm=./"; };
};
}
diff --git a/krebs/3modules/git.nix b/krebs/3modules/git.nix
index 884108ebb..93211d9d4 100644
--- a/krebs/3modules/git.nix
+++ b/krebs/3modules/git.nix
@@ -569,7 +569,8 @@ let
if ! test -d "$repodir"; then
mkdir -m "$mode" "$repodir"
git init --bare --template=/var/empty "$repodir"
- chown -R git:nogroup "$repodir"
+ # TODO fix correctly with stringAfter
+ chown -R ${toString config.users.users.git.uid}:nogroup "$repodir"
fi
ln -s ${hooks} "$repodir/hooks"
''
diff --git a/krebs/3modules/krebs/default.nix b/krebs/3modules/krebs/default.nix
index f11b8ef48..f751b4f9f 100644
--- a/krebs/3modules/krebs/default.nix
+++ b/krebs/3modules/krebs/default.nix
@@ -38,6 +38,8 @@ in {
ip6.addr = "42:0:0:0:0:0:77:2";
aliases = [
"puyak.r"
+ "build.puyak.r"
+ "cgit.puyak.r"
];
tinc.pubkey = ''
-----BEGIN RSA PUBLIC KEY-----
@@ -94,5 +96,15 @@ in {
krebs = {
pubkey = "lol"; # TODO krebs.users.krebs.pubkey should be unnecessary
};
+ puyak-repo-sync = {
+ name = "puyak-repo-sync";
+ mail = "spam@krebsco.de";
+ pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ+18mG/cV1YbR9PXzuu3ScyV9kENy08OXUntpmgh9H2";
+ };
+ wolf-repo-sync = {
+ name = "wolf-repo-sync";
+ mail = "spam@krebsco.de";
+ pubkey = ''ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCwuAZB3wtAvBJFYh+gWdyGaZU4mtqM2dFXmh2rORlbXeh02msu1uv07ck1VKkQ4LgvCBcBsAOeVa1NTz99eLqutwgcqMCytvRNUCibcoEWwHObsK53KhDJj+zotwlFhnPPeK9+EpOP4ngh/tprJikttos5BwBwe2K+lfiid3fmVPZcTTYa77nCwijimMvWEx6CEjq1wiXMUc4+qcEn8Swbwomz/EEQdNE2hgoC3iMW9RqduTFdIJWnjVi0KaxenX9CvQRGbVK5SSu2gwzN59D/okQOCP6+p1gL5r3QRHSLSSRiEHctVQTkpKOifrtLZGSr5zArEmLd/cOVyssHQPCX repo-sync@wolf'';
+ };
};
}