From 424e6d50af975c929d09f35d434295a823168db0 Mon Sep 17 00:00:00 2001
From: makefu <github@syntax-fehler.de>
Date: Sun, 11 Nov 2018 18:23:46 +0100
Subject: [PATCH 01/13] ma hw/smartcard: disable ifdnfc for now

until package becomes part of stable channel
---
 makefu/2configs/hw/smartcard.nix | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/makefu/2configs/hw/smartcard.nix b/makefu/2configs/hw/smartcard.nix
index 1e9bca53b..b66b70098 100644
--- a/makefu/2configs/hw/smartcard.nix
+++ b/makefu/2configs/hw/smartcard.nix
@@ -2,12 +2,15 @@
 {
   services.pcscd = {
     enable = true;
-    plugins = with pkgs; [ ifdnfc ccid ];
+    plugins = with pkgs; 
+    [ #ifdnfc
+      ccid
+    ];
 
   };
   environment.systemPackages = with pkgs; [
     # need to run ifdnfc-activate before usage
-    ifdnfc
+    # ifdnfc
     # pcsc_scan
     pcsctools
   ];

From af869d56c49e94357232588756b27703054456e0 Mon Sep 17 00:00:00 2001
From: lassulus <lass@blue.r>
Date: Sun, 11 Nov 2018 19:37:35 +0100
Subject: [PATCH 02/13] l: add osmocom@lassul.us

---
 lass/2configs/exim-smarthost.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/lass/2configs/exim-smarthost.nix b/lass/2configs/exim-smarthost.nix
index 733115a74..bf43ee7d1 100644
--- a/lass/2configs/exim-smarthost.nix
+++ b/lass/2configs/exim-smarthost.nix
@@ -91,6 +91,7 @@ with import <stockholm/lib>;
       { from = "ksp@lassul.us"; to = lass.mail; }
       { from = "ccc@lassul.us"; to = lass.mail; }
       { from = "neocron@lassul.us"; to = lass.mail; }
+      { from = "osmocom@lassul.us"; to = lass.mail; }
     ];
     system-aliases = [
       { from = "mailer-daemon"; to = "postmaster"; }

From 9c09cf30c3eba8137ecf2b4aa3b5fa65a283499e Mon Sep 17 00:00:00 2001
From: tv <tv@krebsco.de>
Date: Tue, 13 Nov 2018 02:47:03 +0100
Subject: [PATCH 03/13] tv gitrepos: add hc

---
 tv/2configs/gitrepos.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tv/2configs/gitrepos.nix b/tv/2configs/gitrepos.nix
index 62c90d4e9..a89d1302c 100644
--- a/tv/2configs/gitrepos.nix
+++ b/tv/2configs/gitrepos.nix
@@ -76,6 +76,7 @@ let {
     };
   } // mapAttrs (_: recursiveUpdate { cgit.section = "3. Haskell libraries"; }) {
     blessings = {};
+    hc = {};
     mime = {};
     quipper = {};
     scanner = {};

From b1dfd4b4937d48c4c14b12251bb554f562ef4737 Mon Sep 17 00:00:00 2001
From: tv <tv@krebsco.de>
Date: Tue, 13 Nov 2018 13:34:31 +0100
Subject: [PATCH 04/13] tv hc: init at 1.0.0

---
 tv/5pkgs/simple/hc.nix | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 100644 tv/5pkgs/simple/hc.nix

diff --git a/tv/5pkgs/simple/hc.nix b/tv/5pkgs/simple/hc.nix
new file mode 100644
index 000000000..4d325e16c
--- /dev/null
+++ b/tv/5pkgs/simple/hc.nix
@@ -0,0 +1,37 @@
+{ coreutils, fetchgit, findutils, gawk, gnugrep, makeWrapper, qrencode, stdenv, texlive, utillinux, zbar }:
+
+stdenv.mkDerivation rec {
+  name = "hc-${meta.version}";
+
+  src = fetchgit {
+    url = "https://cgit.krebsco.de/hc";
+    rev = "refs/tags/v${meta.version}";
+    sha256 = "09349gja22p0j3xs082kp0fnaaada14bafszn4r3q7rg1id2slfb";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildPhase = null;
+
+  installPhase = ''
+    mkdir -p $out/bin
+
+    cp $src/bin/hc $out/bin/hc
+
+    wrapProgram $out/bin/hc \
+      --prefix PATH : ${stdenv.lib.makeBinPath [
+        coreutils
+        findutils
+        gawk
+        gnugrep
+        qrencode
+        texlive.combined.scheme-full
+        utillinux
+        zbar
+      ]}
+  '';
+
+  meta = {
+    version = "1.0.0";
+  };
+}

From 8f6dc4a1316ff6812a248923a974e044576583fe Mon Sep 17 00:00:00 2001
From: tv <tv@krebsco.de>
Date: Tue, 13 Nov 2018 20:55:04 +0100
Subject: [PATCH 05/13] ejabberd: replaced by upstream

---
 krebs/5pkgs/simple/ejabberd/default.nix       | 122 ------------------
 krebs/5pkgs/simple/ejabberd/ejabberdctl.patch |  32 -----
 lass/3modules/ejabberd/config.nix             |   1 -
 tv/3modules/ejabberd/config.nix               |   1 -
 4 files changed, 156 deletions(-)
 delete mode 100644 krebs/5pkgs/simple/ejabberd/default.nix
 delete mode 100644 krebs/5pkgs/simple/ejabberd/ejabberdctl.patch

diff --git a/krebs/5pkgs/simple/ejabberd/default.nix b/krebs/5pkgs/simple/ejabberd/default.nix
deleted file mode 100644
index b4ab13b43..000000000
--- a/krebs/5pkgs/simple/ejabberd/default.nix
+++ /dev/null
@@ -1,122 +0,0 @@
-{ stdenv, writeScriptBin, lib, fetchurl, git, cacert
-, erlang, openssl, expat, libyaml, bash, gnused, gnugrep, coreutils, utillinux, procps, gd
-, withMysql ? false
-, withPgsql ? false
-, withSqlite ? false, sqlite
-, withPam ? false, pam
-, withZlib ? true, zlib
-, withRiak ? false
-, withElixir ? false, elixir
-, withIconv ? true
-, withTools ? false
-, withRedis ? false
-}:
-
-let
-  fakegit = writeScriptBin "git" ''
-    #! ${stdenv.shell} -e
-    if [ "$1" = "describe" ]; then
-      [ -r .rev ] && cat .rev || true
-    fi
-  '';
-
-  ctlpath = lib.makeBinPath [ bash gnused gnugrep coreutils utillinux procps ];
-
-in stdenv.mkDerivation rec {
-  version = "18.01";
-  name = "ejabberd-${version}";
-
-  src = fetchurl {
-    url = "http://www.process-one.net/downloads/ejabberd/${version}/${name}.tgz";
-    sha256 = "01i2n8mlgw293jdf4172f9q8ca8m35vysjws791p7nynpfdb4cn6";
-  };
-
-  nativeBuildInputs = [ fakegit ];
-
-  buildInputs = [ erlang openssl expat libyaml gd ]
-    ++ lib.optional withSqlite sqlite
-    ++ lib.optional withPam pam
-    ++ lib.optional withZlib zlib
-    ++ lib.optional withElixir elixir
-    ;
-
-  # Apparently needed for Elixir
-  LANG = "en_US.UTF-8";
-
-  deps = stdenv.mkDerivation {
-    name = "ejabberd-deps-${version}";
-
-    inherit src;
-
-    configureFlags = [ "--enable-all" "--with-sqlite3=${sqlite.dev}" ];
-
-    nativeBuildInputs = [ git erlang openssl expat libyaml sqlite pam zlib elixir ];
-
-    GIT_SSL_CAINFO = "${cacert}/etc/ssl/certs/ca-bundle.crt";
-
-    makeFlags = [ "deps" ];
-
-    phases = [ "unpackPhase" "configurePhase" "buildPhase" "installPhase" ];
-
-    installPhase = ''
-      for i in deps/*; do
-        ( cd $i
-          git reset --hard
-          git clean -ffdx
-          git describe --always --tags > .rev
-          rm -rf .git
-        )
-      done
-      rm deps/.got
-
-      cp -r deps $out
-    '';
-
-    outputHashMode = "recursive";
-    outputHashAlgo = "sha256";
-    outputHash = "1v3h0c7kfifb6wsfxyv5j1wc7rlxbb7r0pgd4s340wiyxnllzzhk";
-  };
-
-  configureFlags =
-    [ (lib.enableFeature withMysql "mysql")
-      (lib.enableFeature withPgsql "pgsql")
-      (lib.enableFeature withSqlite "sqlite")
-      (lib.enableFeature withPam "pam")
-      (lib.enableFeature withZlib "zlib")
-      (lib.enableFeature withRiak "riak")
-      (lib.enableFeature withElixir "elixir")
-      (lib.enableFeature withIconv "iconv")
-      (lib.enableFeature withTools "tools")
-      (lib.enableFeature withRedis "redis")
-    ] ++ lib.optional withSqlite "--with-sqlite3=${sqlite.dev}";
-
-  enableParallelBuilding = true;
-
-  patches = [
-    ./ejabberdctl.patch
-  ];
-
-  preBuild = ''
-    cp -r $deps deps
-    chmod -R +w deps
-    patchShebangs deps
-  '';
-
-  postInstall = ''
-    sed -i \
-      -e '2iexport PATH=${ctlpath}:$PATH' \
-      -e 's,\(^ *FLOCK=\).*,\1${utillinux}/bin/flock,' \
-      -e 's,\(^ *JOT=\).*,\1,' \
-      -e 's,\(^ *CONNLOCKDIR=\).*,\1/var/lock/ejabberdctl,' \
-      $out/sbin/ejabberdctl
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Open-source XMPP application server written in Erlang";
-    license = licenses.gpl2;
-    homepage = http://www.ejabberd.im;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ sander abbradar ];
-    broken = withElixir;
-  };
-}
diff --git a/krebs/5pkgs/simple/ejabberd/ejabberdctl.patch b/krebs/5pkgs/simple/ejabberd/ejabberdctl.patch
deleted file mode 100644
index f7c842b7b..000000000
--- a/krebs/5pkgs/simple/ejabberd/ejabberdctl.patch
+++ /dev/null
@@ -1,32 +0,0 @@
---- a/ejabberdctl.template  1970-01-01 01:00:01.000000000 +0100
-+++ b/ejabberdctl.template  2018-04-24 23:06:54.127715441 +0200
-@@ -42,19 +42,18 @@
- esac
- 
- # parse command line parameters
--for arg; do
--    case $arg in
--        -n|--node) ERLANG_NODE_ARG=$2; shift;;
--        -s|--spool) SPOOL_DIR=$2; shift;;
--        -l|--logs) LOGS_DIR=$2; shift;;
--        -f|--config) EJABBERD_CONFIG_PATH=$2; shift;;
--        -c|--ctl-config) EJABBERDCTL_CONFIG_PATH=$2; shift;;
--        -d|--config-dir) ETC_DIR=$2; shift;;
--        -t|--no-timeout) NO_TIMEOUT="--no-timeout";;
--        --) :;;
-+while test $# -gt 0; do
-+    case $1 in
-+        -n|--node) ERLANG_NODE_ARG=$2; shift 2;;
-+        -s|--spool) SPOOL_DIR=$2; shift 2;;
-+        -l|--logs) LOGS_DIR=$2; shift 2;;
-+        -f|--config) EJABBERD_CONFIG_PATH=$2; shift 2;;
-+        -c|--ctl-config) EJABBERDCTL_CONFIG_PATH=$2; shift 2;;
-+        -d|--config-dir) ETC_DIR=$2; shift 2;;
-+        -t|--no-timeout) NO_TIMEOUT="--no-timeout"; shift 1;;
-+        # --) :;; what is this for?
-         *) break;;
-     esac
--    shift
- done
- 
- # define ejabberd variables if not already defined from the command line
diff --git a/lass/3modules/ejabberd/config.nix b/lass/3modules/ejabberd/config.nix
index e7288313a..4630f25c1 100644
--- a/lass/3modules/ejabberd/config.nix
+++ b/lass/3modules/ejabberd/config.nix
@@ -87,7 +87,6 @@ in /* yaml */ ''
     mod_configure: {}
     mod_disco: {}
     mod_echo: {}
-    mod_irc: {}
     mod_bosh: {}
     mod_last: {}
     mod_offline:
diff --git a/tv/3modules/ejabberd/config.nix b/tv/3modules/ejabberd/config.nix
index 68bcfa340..a0631e226 100644
--- a/tv/3modules/ejabberd/config.nix
+++ b/tv/3modules/ejabberd/config.nix
@@ -87,7 +87,6 @@ in /* yaml */ ''
     mod_configure: {}
     mod_disco: {}
     mod_echo: {}
-    mod_irc: {}
     mod_bosh: {}
     mod_last: {}
     mod_offline:

From 78cbcb1e95d5af310dac922f13beab341f658e5e Mon Sep 17 00:00:00 2001
From: tv <tv@krebsco.de>
Date: Tue, 13 Nov 2018 21:30:04 +0100
Subject: [PATCH 06/13] ci.nix: fix usage

---
 ci.nix | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ci.nix b/ci.nix
index 6f4b89b08..631c3dc41 100644
--- a/ci.nix
+++ b/ci.nix
@@ -1,4 +1,4 @@
-# usage: nix-instantiate --eval --strict --json ./ci.nix
+# usage: nix-instantiate --eval --json --read-write-mode --strict ci.nix | jq .
 with import ./lib;
 let
   pkgs = import <nixpkgs> { overlays = [ (import ./submodules/nix-writers/pkgs) ]; };

From ddfddbe7563ff6004c9bfba709269fb8441a6605 Mon Sep 17 00:00:00 2001
From: tv <tv@krebsco.de>
Date: Tue, 13 Nov 2018 21:38:28 +0100
Subject: [PATCH 07/13] ci: register GC roots

---
 krebs/3modules/ci.nix | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/krebs/3modules/ci.nix b/krebs/3modules/ci.nix
index 16c6d4315..4cfe598d6 100644
--- a/krebs/3modules/ci.nix
+++ b/krebs/3modules/ci.nix
@@ -30,6 +30,8 @@ let
     nix-instantiate --quiet -Q --eval --strict --json ./ci.nix
   '';
 
+  profileRoot = "/nix/var/nix/profiles/ci";
+
   imp = {
     krebs.buildbot.master = {
       slaves = {
@@ -98,9 +100,16 @@ let
                     self.addBuildSteps([steps.ShellCommand(
                         name=str(new_step),
                         command=[
-                          new_steps[new_step]
+                          "${pkgs.writeDash "build-stepper.sh" ''
+                            set -efu
+                            profile=${shell.escape profileRoot}/$build_name
+                            result=$("$build_script")
+                            ${pkgs.nix}/bin/nix-env -p "$profile" --set "$result"
+                          ''}"
                         ],
                         env={
+                          "build_name": new_step,
+                          "build_script": new_steps[new_step],
                           "NIX_REMOTE": "daemon",
                           "NIX_PATH": "secrets=/var/src/stockholm/null:/var/src",
                         },
@@ -163,6 +172,20 @@ let
       password = "lasspass";
       packages = with pkgs; [ gnumake jq nix populate gnutar lzma gzip ];
     };
+
+    system.activationScripts.buildbots-nix-profile = ''
+      ${pkgs.coreutils}/bin/mkdir -p ${shell.escape profileRoot}
+      ${pkgs.coreutils}/bin/chmod 0770 ${shell.escape profileRoot}
+      ${pkgs.coreutils}/bin/chgrp buildbots ${shell.escape profileRoot}
+    '';
+
+    users = {
+      groups.buildbots.gid = genid "buildbots";
+      users = {
+        buildbotMaster.extraGroups = [ "buildbots" ];
+        buildbotSlave.extraGroups = [ "buildbots" ];
+      };
+    };
   };
 
 in out

From 81c0315a925c7891a86cf6d556426cc060ebb2fa Mon Sep 17 00:00:00 2001
From: tv <tv@krebsco.de>
Date: Tue, 13 Nov 2018 22:54:25 +0100
Subject: [PATCH 08/13] krops: 1.6.0 -> 1.7.1

---
 submodules/krops | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/submodules/krops b/submodules/krops
index e2b296542..ce37b2a9c 160000
--- a/submodules/krops
+++ b/submodules/krops
@@ -1 +1 @@
-Subproject commit e2b29654251367545700154ffbac806705dd04c0
+Subproject commit ce37b2a9c2a438b7278e8e8ab045df34f00ad386

From 6f512840395fa404385aadacf560f52ef152479a Mon Sep 17 00:00:00 2001
From: tv <tv@krebsco.de>
Date: Thu, 15 Nov 2018 10:43:28 +0100
Subject: [PATCH 09/13] tv vim: add fzf

---
 tv/2configs/vim.nix | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/tv/2configs/vim.nix b/tv/2configs/vim.nix
index 2ac7f7518..544fe94ae 100644
--- a/tv/2configs/vim.nix
+++ b/tv/2configs/vim.nix
@@ -14,6 +14,16 @@ let {
   };
 
   extra-runtimepath = concatMapStringsSep "," (pkg: "${pkg.rtp}") [
+    # cannot use pkgs.vimPlugins.fzf-vim as it's missing :Rg
+    (pkgs.vimUtils.buildVimPlugin {
+      name = "junegunn";
+      src = pkgs.fetchgit {
+        url = git://github.com/junegunn/fzf.vim;
+        rev = "ad1833ecbc9153b6e34a4292dc089a58c4bcb8dc";
+        sha256 = "1z2q71q6l9hq9fqfqpj1svhyk4yk1bzw1ljhksx4bnpz8gkfbx2m";
+      };
+    })
+    pkgs.vimPlugins.fzfWrapper
     pkgs.vimPlugins.undotree
     pkgs.vimPlugins.vim-elixir
     (pkgs.vimUtils.buildVimPlugin {
@@ -309,6 +319,11 @@ let {
     paths = [
       (pkgs.writeDashBin "vim" ''
         set -efu
+        export FZF_DEFAULT_COMMAND='${pkgs.ripgrep}/bin/rg --files'
+        export PATH=$PATH:${makeBinPath [
+          pkgs.fzf
+          pkgs.ripgrep
+        ]}
         (umask 0077; exec ${pkgs.coreutils}/bin/mkdir -p ${toString need-dirs})
         exec ${pkgs.vim}/bin/vim "$@"
       '')
@@ -385,5 +400,9 @@ let {
     noremap <esc>[c <nop> | noremap! <esc>[c <nop>
     noremap <esc>[d <nop> | noremap! <esc>[d <nop>
     vnoremap u <nop>
+
+    " fzf
+    nnoremap <esc>q :Files<cr>
+    nnoremap <esc>w :Rg<cr>
   '';
 }

From 66204349496ede2f451ba14471efb2c23f74f76e Mon Sep 17 00:00:00 2001
From: tv <tv@krebsco.de>
Date: Thu, 15 Nov 2018 10:45:22 +0100
Subject: [PATCH 10/13] tv vim: M-a edits alternate buffer

---
 tv/2configs/vim.nix | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tv/2configs/vim.nix b/tv/2configs/vim.nix
index 544fe94ae..469ae3e2a 100644
--- a/tv/2configs/vim.nix
+++ b/tv/2configs/vim.nix
@@ -404,5 +404,9 @@ let {
     " fzf
     nnoremap <esc>q :Files<cr>
     nnoremap <esc>w :Rg<cr>
+
+    " edit alternate buffer
+    " For some reason neither putting <ctrl>6 nor <ctrl>^ works here...
+    nnoremap <esc>a 
   '';
 }

From 1fc9124e81dd1d25bd5c05f30db68e0bd43f1ff8 Mon Sep 17 00:00:00 2001
From: tv <tv@krebsco.de>
Date: Fri, 16 Nov 2018 17:06:20 +0100
Subject: [PATCH 11/13] tv vim: set timeoutlen=0

---
 tv/2configs/vim.nix | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tv/2configs/vim.nix b/tv/2configs/vim.nix
index 469ae3e2a..a63d80228 100644
--- a/tv/2configs/vim.nix
+++ b/tv/2configs/vim.nix
@@ -348,6 +348,7 @@ let {
     set shortmess+=I
     set showcmd
     set showmatch
+    set timeoutlen=0
     set ttimeoutlen=0
     set undodir=${dirs.undodir}
     set undofile

From cc053bd01d79ac2b41a56ca7c0f04179547a2514 Mon Sep 17 00:00:00 2001
From: tv <tv@krebsco.de>
Date: Fri, 16 Nov 2018 17:18:07 +0100
Subject: [PATCH 12/13] tv vim: neaten fzf plugin

---
 tv/2configs/vim.nix | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tv/2configs/vim.nix b/tv/2configs/vim.nix
index a63d80228..e51f07774 100644
--- a/tv/2configs/vim.nix
+++ b/tv/2configs/vim.nix
@@ -16,9 +16,9 @@ let {
   extra-runtimepath = concatMapStringsSep "," (pkg: "${pkg.rtp}") [
     # cannot use pkgs.vimPlugins.fzf-vim as it's missing :Rg
     (pkgs.vimUtils.buildVimPlugin {
-      name = "junegunn";
+      name = "fzf-2018-11-14";
       src = pkgs.fetchgit {
-        url = git://github.com/junegunn/fzf.vim;
+        url = https://github.com/junegunn/fzf.vim;
         rev = "ad1833ecbc9153b6e34a4292dc089a58c4bcb8dc";
         sha256 = "1z2q71q6l9hq9fqfqpj1svhyk4yk1bzw1ljhksx4bnpz8gkfbx2m";
       };

From 083a8ca2aed285e94383b216347ee4e6ef44c6a6 Mon Sep 17 00:00:00 2001
From: tv <tv@krebsco.de>
Date: Fri, 16 Nov 2018 17:19:13 +0100
Subject: [PATCH 13/13] tv vim elixir: b916c00 -> 0a847f0

---
 tv/2configs/vim.nix | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/tv/2configs/vim.nix b/tv/2configs/vim.nix
index e51f07774..a5641f094 100644
--- a/tv/2configs/vim.nix
+++ b/tv/2configs/vim.nix
@@ -25,7 +25,14 @@ let {
     })
     pkgs.vimPlugins.fzfWrapper
     pkgs.vimPlugins.undotree
-    pkgs.vimPlugins.vim-elixir
+    (pkgs.vimUtils.buildVimPlugin {
+      name = "vim-elixir-2018-08-17";
+      src = pkgs.fetchgit {
+        url = https://github.com/elixir-editors/vim-elixir;
+        rev = "0a847f0faed5ba2d94bb3d51f355c50f37ba025b";
+        sha256 = "1jl85wpgywhcvhgw02y8zpvqf0glr4i8522kxpvhsiacb1v1xh04";
+      };
+    })
     (pkgs.vimUtils.buildVimPlugin {
       name = "vim-syntax-jq";
       src = pkgs.fetchgit {