diff --git a/Makefile b/Makefile
index 552e6e0fd..8834cb7c8 100644
--- a/Makefile
+++ b/Makefile
@@ -35,11 +35,11 @@ ifeq ($(filter),json)
 else
 	filter() { cat; }
 endif
-	NIX_PATH=stockholm=$$PWD:$$NIX_PATH \
 	nix-instantiate \
 		$${extraArgs-} \
 		--eval \
 		-A "$$get" \
+		-I stockholm="$$PWD" \
 		'<stockholm>' \
 		--argstr current-date "$$(date -Is)" \
 		--argstr current-host-name "$$HOSTNAME" \
diff --git a/krebs/4lib/default.nix b/krebs/4lib/default.nix
index ca7219c7e..78f719988 100644
--- a/krebs/4lib/default.nix
+++ b/krebs/4lib/default.nix
@@ -5,6 +5,8 @@ with lib;
 
 builtins // lib // rec {
 
+  eq = x: y: x == y;
+
   addName = name: set:
     set // { inherit name; };
 
@@ -22,4 +24,8 @@ builtins // lib // rec {
     null = "NULL";
     string = toJSON x; # close enough
   }.${typeOf x};
+
+  subdirsOf = path:
+    mapAttrs (name: _: path + "/${name}")
+             (filterAttrs (_: eq "directory") (readDir path));
 }
diff --git a/krebs/5pkgs/default.nix b/krebs/5pkgs/default.nix
index c48c3dee8..a8a1b5853 100644
--- a/krebs/5pkgs/default.nix
+++ b/krebs/5pkgs/default.nix
@@ -3,28 +3,15 @@
 with import ../4lib { inherit lib; };
 
 let
-  inherit (pkgs) callPackage;
+  subdirs = mapAttrs (_: flip pkgs.callPackage {}) (subdirsOf ./.);
+  pkgs' = pkgs // subdirs;
 in
 
-rec {
-  cac = callPackage ./cac {};
-  charybdis = callPackage ./charybdis {};
-  dic = callPackage ./dic {};
-  genid = callPackage ./genid {};
-  get = callPackage ./get {};
-  github-hosts-sync = callPackage ./github-hosts-sync {};
-  hashPassword = callPackage ./hashPassword {};
-  jq = callPackage ./jq {};
-  krebszones = callPackage ./krebszones {};
-  lentil = callPackage ./lentil {};
-  much = callPackage ./much {};
-  nq = callPackage ./nq {};
-  posix-array = callPackage ./posix-array {};
-  pssh = callPackage ./pssh {};
-  passwdqc-utils = callPackage ./passwdqc-utils {};
-  Reaktor = callPackage ./Reaktor {};
-  realwallpaper = callPackage ./realwallpaper.nix {};
-  youtube-tools = callPackage ./youtube-tools {};
+subdirs // rec {
+
+  push = pkgs'.callPackage ./push {
+    inherit (subdirs) get jq;
+  };
 
   execve = name: { filename, argv, envp ? {}, destination ? "" }:
     writeC name { inherit destination; } ''
diff --git a/krebs/5pkgs/push/default.nix b/krebs/5pkgs/push/default.nix
new file mode 100644
index 000000000..ce496d9c3
--- /dev/null
+++ b/krebs/5pkgs/push/default.nix
@@ -0,0 +1,48 @@
+{ fetchgit, lib, stdenv
+, coreutils
+, get
+, git
+, gnused
+, jq
+, openssh
+, parallel
+, ... }:
+
+stdenv.mkDerivation {
+  name = "push-1.0.0";
+
+  src = fetchgit {
+    url = http://cgit.cd.retiolum/push;
+    rev = "513da89fe50b3bad3d758855f5622c4508977e4a";
+    sha256 = "6124e1d4d4ef57455e2f06891e06fb01d3786846efaf9b79e3176d89988e1b4e";
+  };
+
+  phases = [
+    "unpackPhase"
+    "installPhase"
+  ];
+
+  installPhase =
+    let
+      path = lib.makeSearchPath "bin" [
+        coreutils
+        get
+        git
+        gnused
+        jq
+        openssh
+        parallel
+      ];
+    in
+    ''
+      mkdir -p $out/bin
+
+      sed \
+        '1s,.*,&\nPATH=${path},' \
+        < ./push \
+        > $out/bin/push
+
+      chmod +x $out/bin/push
+    '';
+}
+
diff --git a/tv/1systems/mkdir.nix b/tv/1systems/mkdir.nix
index 76432ba03..669dcc2f3 100644
--- a/tv/1systems/mkdir.nix
+++ b/tv/1systems/mkdir.nix
@@ -24,7 +24,7 @@ in
   krebs.build.source = {
     git.nixpkgs = {
       url = https://github.com/NixOS/nixpkgs;
-      rev = "68bd8e4a9dc247726ae89cc8739574261718e328";
+      rev = "e57024f821c94caf5684964474073649b8b6356b";
     };
     dir.secrets = {
       host = config.krebs.hosts.wu;
diff --git a/tv/1systems/wu.nix b/tv/1systems/wu.nix
index 0ef846f93..cc99b0498 100644
--- a/tv/1systems/wu.nix
+++ b/tv/1systems/wu.nix
@@ -89,6 +89,7 @@ with lib;
         pavucontrol
         posix_man_pages
         pssh
+        push
         qrencode
         sxiv
         texLive
diff --git a/tv/2configs/git.nix b/tv/2configs/git.nix
index 401cf5f4d..d782c87f1 100644
--- a/tv/2configs/git.nix
+++ b/tv/2configs/git.nix
@@ -35,6 +35,7 @@ let
     nixos-infest = {};
     nixpkgs = {};
     painload = {};
+    push = {};
     quipper = {};
     regfish = {};
     stockholm = {