summaryrefslogtreecommitdiffstats
path: root/krebs/5pkgs/simple/eximlog.nix
diff options
context:
space:
mode:
authorlassulus <lassulus@lassul.us>2017-12-25 23:01:27 +0100
committerlassulus <lassulus@lassul.us>2017-12-25 23:01:27 +0100
commit3a41a73f1fcc32736ace08783d9bfee8a77f3f80 (patch)
tree2b9f02ddb439ae403e4238a9e4f47aa5fda65878 /krebs/5pkgs/simple/eximlog.nix
parentb73b1c45e57e3bab0300f5ecbed261c6d45a5d53 (diff)
parent28085c8e6d37a0dd31d7627fa01d072723c4f46c (diff)
Merge remote-tracking branch 'ni/master' into staging/test
Diffstat (limited to 'krebs/5pkgs/simple/eximlog.nix')
-rw-r--r--krebs/5pkgs/simple/eximlog.nix28
1 files changed, 28 insertions, 0 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)"
+
+ '
+''