summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2017-12-30 14:08:53 +0100
committermakefu <github@syntax-fehler.de>2017-12-30 14:08:53 +0100
commit57882d08962b1e5996df7ec4347ae5700c7bc650 (patch)
treec9f02fc47245a6c6f85aa0137b96d2c717d943ae
parenta6891271f1bfd3b130dedec51961288f37853420 (diff)
parentc1ff2ddf713242f34a56861c34d815ae6985798b (diff)
Merge remote-tracking branch 'lass/master' into hydra
-rw-r--r--krebs/5pkgs/simple/eximlog.nix28
-rw-r--r--krebs/6tests/data/test-config.nix22
-rw-r--r--krebs/6tests/data/test-source.nix12
-rw-r--r--krebs/6tests/deploy.nix110
-rw-r--r--lass/source.nix2
-rw-r--r--tv/1systems/querel/config.nix3
-rw-r--r--tv/2configs/exim-retiolum.nix3
-rw-r--r--tv/2configs/exim-smarthost.nix3
-rw-r--r--tv/source.nix2
9 files changed, 183 insertions, 2 deletions
diff --git a/krebs/5pkgs/simple/eximlog.nix b/krebs/5pkgs/simple/eximlog.nix
new file mode 100644
index 000000000..2d64e13e9
--- /dev/null
+++ b/krebs/5pkgs/simple/eximlog.nix
@@ -0,0 +1,28 @@
+{ jq, systemd, writeDashBin }:
+
+let
+ lib = import <stockholm/lib>;
+ user = "exim"; # TODO make this configurable
+in
+
+# TODO execute eximlog only if journalctl doesn't fail
+# bash's set -o pipefail isn't enough
+
+writeDashBin "eximlog" ''
+ ${systemd}/bin/journalctl \
+ -u ${lib.shell.escape user} \
+ -o short-unix \
+ "$@" \
+ |
+ ${jq}/bin/jq -Rr '
+ # Only select lines that start with a timestamp
+ select(test("^[0-9]")) |
+
+ split(" ") |
+ (.[0] | tonumber) as $time |
+ (.[3:] | join(" ")) as $message |
+
+ "\($time | strftime("%Y-%m-%d %H:%M:%S %z")) \($message)"
+
+ '
+''
diff --git a/krebs/6tests/data/test-config.nix b/krebs/6tests/data/test-config.nix
new file mode 100644
index 000000000..f0927ddd9
--- /dev/null
+++ b/krebs/6tests/data/test-config.nix
@@ -0,0 +1,22 @@
+{ config, lib, pkgs, ... }:
+
+{
+ imports = [
+ <stockholm/krebs>
+ <nixpkgs/nixos/modules/virtualisation/qemu-vm.nix>
+ <nixpkgs/nixos/modules/testing/test-instrumentation.nix>
+ ];
+
+ krebs.hosts.minimal = {
+ cores = 1;
+ secure = false;
+ };
+
+ boot.loader.grub.enable = false;
+ boot.loader.systemd-boot.enable = true;
+
+ krebs.build = {
+ host = config.krebs.hosts.minimal;
+ user = config.krebs.users.krebs;
+ };
+}
diff --git a/krebs/6tests/data/test-source.nix b/krebs/6tests/data/test-source.nix
new file mode 100644
index 000000000..dfc6b3297
--- /dev/null
+++ b/krebs/6tests/data/test-source.nix
@@ -0,0 +1,12 @@
+with import <stockholm/lib>;
+evalSource "" [{
+ nixos-config = {
+ symlink.target = toString ./test-config;
+ };
+ nixpkgs = {
+ symlink.target = toString <nixpkgs>;
+ };
+ stockholm = {
+ symlink.target = toString <stockholm>;
+ };
+}]
diff --git a/krebs/6tests/deploy.nix b/krebs/6tests/deploy.nix
new file mode 100644
index 000000000..842bbc22a
--- /dev/null
+++ b/krebs/6tests/deploy.nix
@@ -0,0 +1,110 @@
+with import <stockholm/lib>;
+import <nixpkgs/nixos/tests/make-test.nix> ({ pkgs, ... }:
+
+let
+ test-config = <stockholm/krebs/6tests/data/test-config.nix>;
+ privKey = ''
+ -----BEGIN OPENSSH PRIVATE KEY-----
+ b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
+ QyNTUxOQAAACD1tYD8r6Fcd7bq3Z0nvo5483nXQ8c4LFh0fcw8rOCQtQAAAJBTNHK6UzRy
+ ugAAAAtzc2gtZWQyNTUxOQAAACD1tYD8r6Fcd7bq3Z0nvo5483nXQ8c4LFh0fcw8rOCQtQ
+ AAAECK2ZlEIofZyGbh7rXlUq5lUsUyotamtp9QrlvoS3qgePW1gPyvoVx3turdnSe+jnjz
+ eddDxzgsWHR9zDys4JC1AAAACWxhc3NAbW9ycwECAwQ=
+ -----END OPENSSH PRIVATE KEY-----
+ '';
+ pubKey = ''
+ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPW1gPyvoVx3turdnSe+jnjzeddDxzgsWHR9zDys4JC1
+ '';
+
+ ssh-config = pkgs.writeText "ssh-config" ''
+ Host server
+ StrictHostKeyChecking no
+ UserKnownHostsFile=/dev/null
+ '';
+
+ populate-source = {
+ nixos-config = {
+ symlink.target = test-config;
+ type = "symlink";
+ };
+ nixpkgs = {
+ symlink.target = <nixpkgs>;
+ type = "symlink";
+ };
+ stockholm = {
+ symlink.target = <stockholm>;
+ type = "symlink";
+ };
+ };
+
+ test-deploy = pkgs.writeDash "test-deploy" ''
+ cd ${<stockholm>}
+ export NIX_PATH=stockholm=${<stockholm>}:nixpkgs=${<nixpkgs>}:$NIX_PATH
+ exec >&2
+ : ${minimalSystem}
+ source=${pkgs.writeJSON "source.json" populate-source}
+ cat > /tmp/derp <<EOF
+ builtins.fromJSON (builtins.readFile "$source")
+ EOF
+ LOGNAME=krebs ${pkgs.populate}/bin/populate --force root@server:22/var/src/ < "$source"
+ #LOGNAME=krebs ${pkgs.stockholm}/bin/deploy \
+ # --force-populate \
+ # --source=/tmp/derp \
+ # --system=server \
+ '';
+ minimalSystem = (import <nixpkgs/nixos/lib/eval-config.nix> {
+ modules = [
+ test-config
+ ];
+ }).config.system.build.toplevel;
+
+in {
+ name = "deploy";
+
+ nodes = {
+
+ server =
+ { config, pkgs, ... }:
+
+ {
+ imports = [ test-config ];
+ environment.variables = {
+ NIX_PATH = mkForce "nixpkgs=${<nixpkgs>}";
+ #LOL = minimalSystem;
+ };
+ services.openssh.enable = true;
+ users.extraUsers.root.openssh.authorizedKeys.keys = [
+ pubKey
+ ];
+ #virtualisation.writableStore = true;
+ virtualisation.pathsInNixDB = [
+ minimalSystem
+ pkgs.stockholm
+ ];
+ };
+
+ client =
+ { config, pkgs, ... }: { };
+
+ };
+
+ testScript = ''
+ startAll;
+
+ $server->waitForUnit("sshd");
+
+ $client->succeed("mkdir -p -m 700 /root/.ssh");
+ $client->succeed("echo '${privKey}' > /root/.ssh/id_ed25519");
+ $client->succeed("cp ${ssh-config} /root/.ssh/config");
+ $client->succeed("chmod 600 /root/.ssh/id_ed25519");
+
+ $server->waitForUnit("network.target");
+ $server->succeed("ip route show 1>&2");
+ $client->waitForUnit("network.target");
+ $client->succeed("${test-deploy}");
+ $server->succeed("nixos-rebuild -I /var/src switch");
+
+ $client->shutdown;
+ $server->shutdown;
+ '';
+})
diff --git a/lass/source.nix b/lass/source.nix
index bf992d4d2..473dd2cf2 100644
--- a/lass/source.nix
+++ b/lass/source.nix
@@ -10,7 +10,7 @@ in
nixos-config.symlink = "stockholm/lass/1systems/${name}/config.nix";
nixpkgs.git = {
url = https://github.com/nixos/nixpkgs;
- ref = "af7e479";
+ ref = "3aec59c";
};
secrets = getAttr builder {
buildbot.file = toString <stockholm/lass/2configs/tests/dummy-secrets>;
diff --git a/tv/1systems/querel/config.nix b/tv/1systems/querel/config.nix
index 05b4d9133..07ec8e403 100644
--- a/tv/1systems/querel/config.nix
+++ b/tv/1systems/querel/config.nix
@@ -29,6 +29,7 @@ with import <stockholm/lib>;
};
environment.systemPackages = with pkgs; [
+ chromium
firefoxWrapper
gimp
kate
@@ -65,6 +66,8 @@ with import <stockholm/lib>;
networking.networkmanager.enable = true;
+ nixpkgs.config.chromium.enablePepperFlash = true;
+
programs.ssh.startAgent = false;
services.printing = {
diff --git a/tv/2configs/exim-retiolum.nix b/tv/2configs/exim-retiolum.nix
index bf13a388a..8b34b16cf 100644
--- a/tv/2configs/exim-retiolum.nix
+++ b/tv/2configs/exim-retiolum.nix
@@ -3,6 +3,9 @@
with import <stockholm/lib>;
{
+ environment.systemPackages = [
+ pkgs.eximlog
+ ];
krebs.exim-retiolum.enable = true;
tv.iptables.input-retiolum-accept-tcp = singleton "smtp";
}
diff --git a/tv/2configs/exim-smarthost.nix b/tv/2configs/exim-smarthost.nix
index 079013c79..68fbcd151 100644
--- a/tv/2configs/exim-smarthost.nix
+++ b/tv/2configs/exim-smarthost.nix
@@ -3,6 +3,9 @@
with import <stockholm/lib>;
{
+ environment.systemPackages = [
+ pkgs.eximlog
+ ];
krebs.exim-smarthost = {
enable = true;
dkim = [
diff --git a/tv/source.nix b/tv/source.nix
index f3bda2715..31308fc99 100644
--- a/tv/source.nix
+++ b/tv/source.nix
@@ -10,7 +10,7 @@ in
nixos-config.symlink = "stockholm/tv/1systems/${name}/config.nix";
nixpkgs.git = {
# nixos-17.09
- ref = mkDefault "d0f0657ca06cc8cb239cb94f430b53bcdf755887";
+ ref = mkDefault "53e6d671a9662922080635482b7e1c418d2cdc72";
url = https://github.com/NixOS/nixpkgs;
};
secrets.file = getAttr builder {