From d0d10918cc344c8d8b00ed3c8ecee59d214f6e64 Mon Sep 17 00:00:00 2001
From: makefu <github@syntax-fehler.de>
Date: Wed, 2 Aug 2017 01:08:12 +0200
Subject: [PATCH 1/5] ma sane-extra: init

---
 makefu/3modules/default.nix    |  1 +
 makefu/3modules/sane-extra.nix | 45 ++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+)
 create mode 100644 makefu/3modules/sane-extra.nix

diff --git a/makefu/3modules/default.nix b/makefu/3modules/default.nix
index 2981e0fa3..00df56bee 100644
--- a/makefu/3modules/default.nix
+++ b/makefu/3modules/default.nix
@@ -9,6 +9,7 @@ _:
     ./opentracker.nix
     ./ps3netsrv.nix
     ./logging-config.nix
+    ./sane-extra.nix
     ./server-config.nix
     ./snapraid.nix
     ./torrent.nix
diff --git a/makefu/3modules/sane-extra.nix b/makefu/3modules/sane-extra.nix
new file mode 100644
index 000000000..2e0ce8f2f
--- /dev/null
+++ b/makefu/3modules/sane-extra.nix
@@ -0,0 +1,45 @@
+{ config, lib, pkgs, ... }:
+# https://github.com/michalrus/dotfiles/blob/d943be3089aa436e07cea5f22d829402936a9229/.nixos-config.symlink/modules/sane-extra-config.nix
+# via https://github.com/NixOS/nixpkgs/issues/17411
+# via  https://unix.stackexchange.com/questions/321954/install-epson-v39-on-nixos
+with lib;
+
+let
+
+  cfg = config.hardware.sane;
+
+  pkg = if cfg.snapshot
+    then pkgs.sane-backends-git
+    else pkgs.sane-backends;
+
+  backends = [ pkg ] ++ cfg.extraBackends;
+
+  saneConfig = pkgs.mkSaneConfig { paths = backends; };
+
+  saneExtraConfig = pkgs.runCommand "sane-extra-config" {} ''
+    cp -Lr '${pkgs.mkSaneConfig { paths = [ pkgs.sane-backends ]; }}'/etc/sane.d $out
+    chmod +w $out
+    ${concatMapStrings (c: ''
+      f="$out/${c.name}.conf"
+      [ ! -e "$f" ] || chmod +w "$f"
+      cat ${builtins.toFile "" (c.value + "\n")} >>"$f"
+      chmod -w "$f"
+    '') (mapAttrsToList nameValuePair cfg.extraConfig)}
+    chmod -w $out
+  '';
+
+in
+
+{
+  options = {
+    hardware.sane.extraConfig = mkOption {
+      type = types.attrsOf types.lines;
+      default = {};
+      example = { "some-backend" = "# some lines to add to its .conf"; };
+    };
+  };
+
+  config = mkIf (cfg.enable && cfg.extraConfig != {}) {
+    hardware.sane.configDir = saneExtraConfig.outPath;
+  };
+}

From a6b5b8dffd6023835e0fbb34c9d13364d9a4f1b3 Mon Sep 17 00:00:00 2001
From: makefu <github@syntax-fehler.de>
Date: Wed, 2 Aug 2017 11:49:27 +0200
Subject: [PATCH 2/5] ma printer: add support for magicolor

---
 makefu/2configs/printer.nix | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/makefu/2configs/printer.nix b/makefu/2configs/printer.nix
index 509ed512d..0865a0841 100644
--- a/makefu/2configs/printer.nix
+++ b/makefu/2configs/printer.nix
@@ -1,15 +1,30 @@
-{ pkgs, ... }:
+{ config, pkgs, ... }:
 
-{
+let
+  mainUser = config.krebs.build.user.name;
+in {
   services.printing = {
     enable = true;
     drivers = [
       pkgs.samsungUnifiedLinuxDriver
-      pkgs.cups-dymo
+      pkgs.cups-dymo # dymo labelwriter
+      pkgs.foo2zjs # magicolor 1690mf
     ];
   };
 
   # scanners are printers just in reverse anyway
-  hardware.sane.enable = true;
-  hardware.sane.extraBackends = [ pkgs.samsungUnifiedLinuxDriver ];
+  services.saned.enable = true;
+  users.users."${mainUser}".extraGroups = [ "scanner" ];
+
+  hardware.sane = {
+    enable = true;
+    extraBackends = [ pkgs.samsungUnifiedLinuxDriver ];
+
+    # $ scanimage -p --format=jpg --mode=Gray --source="Automatic Document Feeder" -v --batch="lol%d.jpg" --resolution=150
+
+    # requires 'sane-extra', scan via:
+    extraConfig."magicolor" = ''
+      net 10.42.20.30 0x2098
+    ''; # 10.42.20.30: uhrenkind.shack magicolor 1690mf
+  };
 }

From 2fa2d79b475cb6ccda1fc4b044ec81c1f6b314e3 Mon Sep 17 00:00:00 2001
From: makefu <github@syntax-fehler.de>
Date: Wed, 2 Aug 2017 22:17:41 +0200
Subject: [PATCH 3/5] ma x: enable stk1160

---
 makefu/1systems/x/config.nix | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/makefu/1systems/x/config.nix b/makefu/1systems/x/config.nix
index 969e78bee..368655575 100644
--- a/makefu/1systems/x/config.nix
+++ b/makefu/1systems/x/config.nix
@@ -54,7 +54,7 @@ with import <stockholm/lib>;
       <stockholm/makefu/2configs/hw/rtl8812au.nix>
       <stockholm/makefu/2configs/hw/exfat-nofuse.nix>
       <stockholm/makefu/2configs/hw/wwan.nix>
-      # <stockholm/makefu/2configs/hw/stk1160.nix>
+      <stockholm/makefu/2configs/hw/stk1160.nix>
       # <stockholm/makefu/2configs/rad1o.nix>
 
       # Filesystem
@@ -62,6 +62,9 @@ with import <stockholm/lib>;
 
       # Security
       <stockholm/makefu/2configs/sshd-totp.nix>
+      {
+        programs.adb.enable = true;
+      }
 
     ];
 

From 2653cbd257a9e4255bad6d01e6aed4639821b59c Mon Sep 17 00:00:00 2001
From: makefu <github@syntax-fehler.de>
Date: Wed, 2 Aug 2017 22:38:26 +0200
Subject: [PATCH 4/5] ma stk1160: revert to hacky override

---
 makefu/2configs/hw/stk1160.nix | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/makefu/2configs/hw/stk1160.nix b/makefu/2configs/hw/stk1160.nix
index e73741e26..b3a9e1a5a 100644
--- a/makefu/2configs/hw/stk1160.nix
+++ b/makefu/2configs/hw/stk1160.nix
@@ -1,8 +1,9 @@
 { pkgs, ... }:
 {
   # TODO: un-pin linuxPackages somehow
+  boot.kernelPackages = builtins.trace "Warning: overriding kernel Packages with 4.9" pkgs.linuxPackages;
   nixpkgs.config.packageOverrides = pkgs: {
-    linux_latest = pkgs.linux_latest.override {
+    linux_4_9 = pkgs.linux_4_9.override {
         extraConfig = ''
           MEDIA_ANALOG_TV_SUPPORT y
           VIDEO_STK1160_COMMON m

From 7db5d59018f4096b0cc39afa59df53b6a1fa9353 Mon Sep 17 00:00:00 2001
From: makefu <github@syntax-fehler.de>
Date: Sat, 5 Aug 2017 00:13:41 +0200
Subject: [PATCH 5/5] buildbot: remove nixpkgs-fix

buildbot master cannot be run as forking anymore
we start it as --nodaemon as normal type
---
 krebs/3modules/buildbot/master.nix            |  6 +----
 .../5pkgs/simple/buildbot-classic/default.nix | 27 ++++++++-----------
 2 files changed, 12 insertions(+), 21 deletions(-)

diff --git a/krebs/3modules/buildbot/master.nix b/krebs/3modules/buildbot/master.nix
index a7624c8f2..a02f3645d 100644
--- a/krebs/3modules/buildbot/master.nix
+++ b/krebs/3modules/buildbot/master.nix
@@ -341,8 +341,6 @@ let
         secretsdir = shell.escape (toString <secrets>);
       in {
         PermissionsStartOnly = true;
-        Type = "forking";
-        PIDFile = "${workdir}/twistd.pid";
         # TODO: maybe also prepare buildbot.tac?
         ExecStartPre = pkgs.writeDash "buildbot-master-init" ''
           set -efux
@@ -366,9 +364,7 @@ let
           chmod 700 -R ${workdir}
           chown buildbotMaster:buildbotMaster -R ${workdir}
         '';
-        ExecStart = "${pkgs.buildbot-classic}/bin/buildbot start ${workdir}";
-        ExecStop = "${pkgs.buildbot-classic}/bin/buildbot stop ${workdir}";
-        ExecReload = "${pkgs.buildbot-classic}/bin/buildbot reconfig ${workdir}";
+        ExecStart = "${pkgs.buildbot-classic}/bin/buildbot start --nodaemon ${workdir}";
         PrivateTmp = "true";
         User = "buildbotMaster";
         Restart = "always";
diff --git a/krebs/5pkgs/simple/buildbot-classic/default.nix b/krebs/5pkgs/simple/buildbot-classic/default.nix
index 353972109..f723e7255 100644
--- a/krebs/5pkgs/simple/buildbot-classic/default.nix
+++ b/krebs/5pkgs/simple/buildbot-classic/default.nix
@@ -1,21 +1,14 @@
-{ fetchgit, fetchFromGitHub, python2Packages, git, ... }:
-let
-  # https://github.com/NixOS/nixpkgs/issues/14026
-  nixpkgs-fix = import (fetchgit {
-    url = https://github.com/nixos/nixpkgs;
-    rev = "e026b5c243ea39810826e68362718f5d703fb5d0";
-    sha256 = "11lqd480bi6xbi7xbh4krrxmbp6a6iafv1d0q3sj461al0x0has8";
-  }) {};
+{ pkgs, fetchgit, fetchFromGitHub, python2Packages, git, ... }:
 
-in nixpkgs-fix.buildPythonApplication {
+python2Packages.buildPythonApplication {
   name = "buildbot-classic-0.8.13";
   namePrefix = "";
   patches = [];
 
   src = fetchgit {
     url = "https://github.com/krebscode/buildbot-classic";
-    rev = "211ec7815";
-    sha256 = "0cyn406r31qdqhpsih7w83x47b443svpgfhxqd6w3iryv0y1z95i";
+    rev = "da5c0204e";
+    sha256 = "12aaq8ir9k7n2x9m2jnpcs4rr3pcixncbd3bm36ndh93n80q1z3j";
     leaveDotGit = true;
 
   };
@@ -33,11 +26,13 @@ in nixpkgs-fix.buildPythonApplication {
       sed -i 's/==/>=/' setup.py
     '';
 
-  propagatedBuildInputs = with nixpkgs-fix.pythonPackages; [
-    jinja2
-    twisted
-    dateutil_1_5
-    sqlalchemy_migrate_0_7
+  propagatedBuildInputs = [
+    python2Packages.jinja2
+    python2Packages.twisted
+    python2Packages.dateutil_1_5
+    python2Packages.sqlalchemy_migrate
+    python2Packages.pysqlite
+    pkgs.coreutils
   ];
   doCheck = false;
   postInstall = ''