From 8a23b8234ad6f0c8eb0ae17bc7d0d1ff36518b81 Mon Sep 17 00:00:00 2001
From: makefu <github@syntax-fehler.de>
Date: Fri, 18 Sep 2015 22:33:00 +0200
Subject: [PATCH] add titlebot implementation

---
 1systems/pnp.nix              |  2 ++
 2configs/Reaktor/titlebot.nix | 38 +++++++++++++++++++++++++++++++++++
 2 files changed, 40 insertions(+)
 create mode 100644 2configs/Reaktor/titlebot.nix

diff --git a/1systems/pnp.nix b/1systems/pnp.nix
index e70fb61..2dce87d 100644
--- a/1systems/pnp.nix
+++ b/1systems/pnp.nix
@@ -22,6 +22,7 @@
       ## \/ are only plugins, must enable Reaktor explicitly
       ../2configs/Reaktor/stockholmLentil.nix
       ../2configs/Reaktor/simpleExtend.nix
+      ../2configs/Reaktor/titlebot.nix
 
       ../2configs/exim-retiolum.nix
       ../2configs/urlwatch.nix
@@ -29,6 +30,7 @@
       # ../2configs/graphite-standalone.nix
     ];
   krebs.Reaktor.enable = true;
+  krebs.Reaktor.debug = true;
 
   krebs.build.host = config.krebs.hosts.pnp;
   krebs.build.user = config.krebs.users.makefu;
diff --git a/2configs/Reaktor/titlebot.nix b/2configs/Reaktor/titlebot.nix
new file mode 100644
index 0000000..9ef0254
--- /dev/null
+++ b/2configs/Reaktor/titlebot.nix
@@ -0,0 +1,38 @@
+{ stdenv,config, lib, pkgs, ... }:
+
+with pkgs;
+let
+  pypkgs = pkgs.python3Packages;
+  titlebot_cmds =  pypkgs.buildPythonPackage {
+    name = "titlebot_cmds";
+    propagatedBuildInputs =  with pypkgs; [ setuptools ];
+    src = fetchurl {
+      # https://github.com/makefu/reaktor-titlebot tag 2.1.0
+      url = "https://github.com/makefu/reaktor-titlebot/archive/2.1.0.tar.gz";
+      sha256 = "0wvf09wmk8b52f9j65qrw81nwrhs9pfhijwrlkzp5l7l2q8cjkp6";
+      };
+    };
+  pub_cmds = ["up" "help" "list" "top" "highest" "undo" ];
+  priv_cmds = [ "clear" ];
+in {
+  # TODO: write identify file in
+  #     {config.users.extraUsers.Reaktor.home}/state/admin.lst
+  krebs.Reaktor.extraConfig = ''
+  def titlebot_cmd(cmd):
+    return {
+      'capname': cmd,
+      'env': {
+        'TITLEDB':
+          '${config.users.extraUsers.Reaktor.home}/suggestions.json'
+        },
+      'pattern': '^\\.' + cmd + '\\s*(?:\\s+(?P<args>.*))?$$',
+      'argv': [ '${titlebot_cmds}/bin/' + cmd ] }
+  # TODO: for each element in ${titlebot_cmds}/bin/*
+  public_commands.insert(0,titlebot_cmd('up'))
+  public_commands.insert(0,titlebot_cmd('help'))
+  public_commands.insert(0,titlebot_cmd('list'))
+  public_commands.insert(0,titlebot_cmd('top'))
+  public_commands.insert(0,titlebot_cmd('new'))
+  commands.insert(0,titlebot_cmd('clear'))
+  '';
+}