diff --git a/krebs/5pkgs/simple/populate/default.nix b/krebs/5pkgs/simple/populate/default.nix
index 62e3ab216..e35423b49 100644
--- a/krebs/5pkgs/simple/populate/default.nix
+++ b/krebs/5pkgs/simple/populate/default.nix
@@ -16,12 +16,12 @@ in
 
 stdenv.mkDerivation rec {
   name = "populate";
-  version = "2.1.0";
+  version = "2.3.0";
 
   src = fetchgit {
     url = http://cgit.ni.krebsco.de/populate;
     rev = "refs/tags/v${version}";
-    sha256 = "0cr50y6h6nps0qgpmi01h0z9wzpv2704y5zgx2salk1grkmvcfmh";
+    sha256 = "05zr132k1s3a1cc879lvhb83hax7dbfmsbrnxmh7dxjcdg3yhxd7";
   };
 
   phases = [
diff --git a/lib/types.nix b/lib/types.nix
index 9ae92ea7e..1cf2d96c9 100644
--- a/lib/types.nix
+++ b/lib/types.nix
@@ -255,6 +255,14 @@ rec {
         default = null;
         type = nullOr source-types.pass;
       };
+      pipe = mkOption {
+        apply = x:
+          if absolute-pathname.check x
+            then { command = x; }
+            else x;
+        default = null;
+        type = nullOr (either absolute-pathname source-types.pipe);
+      };
       symlink = mkOption {
         type = nullOr (either pathname source-types.symlink);
         default = null;
@@ -294,6 +302,13 @@ rec {
         };
       };
     };
+    pipe = submodule {
+      options = {
+        command = mkOption {
+          type = absolute-pathname;
+        };
+      };
+    };
     symlink = submodule {
       options = {
         target = mkOption {