about summary refs log tree commit diff
path: root/pkgs/tools/filesystems
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/filesystems')
-rw-r--r--pkgs/tools/filesystems/boxfs/default.nix7
-rw-r--r--pkgs/tools/filesystems/btrfsprogs/default.nix4
-rw-r--r--pkgs/tools/filesystems/ceph/0.80.nix17
-rw-r--r--pkgs/tools/filesystems/ceph/0.94.nix13
-rw-r--r--pkgs/tools/filesystems/ceph/9.0.3-i686-fix.patch25
-rw-r--r--[l---------]pkgs/tools/filesystems/ceph/default.nix14
-rw-r--r--pkgs/tools/filesystems/ceph/dev.nix13
-rw-r--r--pkgs/tools/filesystems/ceph/generic.nix2
-rw-r--r--pkgs/tools/filesystems/ceph/git.nix13
-rw-r--r--pkgs/tools/filesystems/disorderfs/default.nix24
-rw-r--r--pkgs/tools/filesystems/exfat/default.nix4
-rw-r--r--pkgs/tools/filesystems/fuse-7z-ng/default.nix6
-rw-r--r--pkgs/tools/filesystems/gpart/default.nix35
-rw-r--r--pkgs/tools/filesystems/mhddfs/default.nix25
-rw-r--r--pkgs/tools/filesystems/mp3fs/default.nix2
-rw-r--r--pkgs/tools/filesystems/smbnetfs/default.nix50
-rw-r--r--pkgs/tools/filesystems/snapraid/default.nix18
-rw-r--r--pkgs/tools/filesystems/tmsu/default.nix6
-rw-r--r--pkgs/tools/filesystems/udftools/default.nix57
-rw-r--r--pkgs/tools/filesystems/zkfuse/default.nix25
-rw-r--r--pkgs/tools/filesystems/zkfuse/zookeeper-1929.patch15
21 files changed, 203 insertions, 172 deletions
diff --git a/pkgs/tools/filesystems/boxfs/default.nix b/pkgs/tools/filesystems/boxfs/default.nix
index e82e720c11bd..3c8c1b6e1809 100644
--- a/pkgs/tools/filesystems/boxfs/default.nix
+++ b/pkgs/tools/filesystems/boxfs/default.nix
@@ -26,18 +26,18 @@ in stdenv.mkDerivation {
   name = "boxfs-${version}";
 
   src = srcs.boxfs2;
+
   prePatch = with srcs; ''
     substituteInPlace Makefile --replace "git pull" "true"
     cp -a --no-preserve=mode ${libapp} libapp
     cp -a --no-preserve=mode ${libjson} libjson
   '';
-
   patches = [ ./work-around-API-borkage.patch ];
 
   buildInputs = [ curl fuse libxml2 ];
   nativeBuildInputs = [ pkgconfig ];
 
-  buildFlags = "static";
+  buildFlags = [ "static" ];
 
   installPhase = ''
     mkdir -p $out/bin
@@ -45,6 +45,7 @@ in stdenv.mkDerivation {
   '';
 
   meta = with stdenv.lib; {
+    inherit version;
     description = "FUSE file system for box.com accounts";
     longDescription = ''
       Store files on box.com (an account is required). The first time you run
@@ -55,7 +56,7 @@ in stdenv.mkDerivation {
     '';
     homepage = https://github.com/drotiro/boxfs2;
     license = licenses.gpl3;
-    platforms = with platforms; linux;
+    platforms = platforms.linux;
     maintainers = with maintainers; [ nckx ];
   };
 }
diff --git a/pkgs/tools/filesystems/btrfsprogs/default.nix b/pkgs/tools/filesystems/btrfsprogs/default.nix
index 4c328d70fd6d..53da1607087b 100644
--- a/pkgs/tools/filesystems/btrfsprogs/default.nix
+++ b/pkgs/tools/filesystems/btrfsprogs/default.nix
@@ -2,14 +2,14 @@
 , asciidoc, xmlto, docbook_xml_dtd_45, docbook_xsl, libxslt
 }:
 
-let version = "4.2.2"; in
+let version = "4.3.1"; in
 
 stdenv.mkDerivation rec {
   name = "btrfs-progs-${version}";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/people/kdave/btrfs-progs/btrfs-progs-v${version}.tar.xz";
-    sha256 = "05hkj8fpgc2c9068f167hp8k8h28zadlh7krcz0qi8m3nbmy91sx";
+    sha256 = "0fpxi9pd297lrrynnsyggdwdcb4xvjvn2gvzlzsws0gdvqazzd8c";
   };
 
   buildInputs = [
diff --git a/pkgs/tools/filesystems/ceph/0.80.nix b/pkgs/tools/filesystems/ceph/0.80.nix
deleted file mode 100644
index ffb52f3fa5b1..000000000000
--- a/pkgs/tools/filesystems/ceph/0.80.nix
+++ /dev/null
@@ -1,17 +0,0 @@
-{ callPackage, fetchgit, ... } @ args:
-
-callPackage ./generic.nix (args // rec {
-  version = "0.80.10";
-
-  src = fetchgit {
-    url = "git://github.com/ceph/ceph.git";
-    rev = "refs/tags/v${version}";
-    sha256 = "1arajccczjdqp7igs17569xlq5cj4azcm5wwixg6ryypjr2grcbl";
-  };
-
-  patches = [
-    ./0001-Cleanup-boost-optionals.patch
-    ./fix-pgrefdebugging.patch
-    ./boost-158.patch
-  ];
-})
diff --git a/pkgs/tools/filesystems/ceph/0.94.nix b/pkgs/tools/filesystems/ceph/0.94.nix
deleted file mode 100644
index 301ff940d0c1..000000000000
--- a/pkgs/tools/filesystems/ceph/0.94.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ callPackage, fetchgit, ... } @ args:
-
-callPackage ./generic.nix (args // rec {
-  version = "0.94.4";
-
-  src = fetchgit {
-    url = "https://github.com/ceph/ceph.git";
-    rev = "refs/tags/v${version}";
-    sha256 = "0jp3c805bix88z3103kbrxv2yndpjcz3j5rp669f7qq46074zw6g";
-  };
-
-  patches = [ ./fix-pgrefdebugging.patch ];
-})
diff --git a/pkgs/tools/filesystems/ceph/9.0.3-i686-fix.patch b/pkgs/tools/filesystems/ceph/9.0.3-i686-fix.patch
deleted file mode 100644
index 142bcabec544..000000000000
--- a/pkgs/tools/filesystems/ceph/9.0.3-i686-fix.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 1213dde3d207d0d91ccecfca4dd6af1bdee0ed65 Mon Sep 17 00:00:00 2001
-From: Kefu Chai <kchai@redhat.com>
-Date: Fri, 17 Jul 2015 01:12:03 +0800
-Subject: [PATCH] cls: fix the build on i386
-
-this is a leftover of 0dae022
-
-Signed-off-by: Kefu Chai <kchai@redhat.com>
----
- src/cls/cephfs/cls_cephfs.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/cls/cephfs/cls_cephfs.h b/src/cls/cephfs/cls_cephfs.h
-index 3cee0db..d4a5f23 100644
---- a/src/cls/cephfs/cls_cephfs.h
-+++ b/src/cls/cephfs/cls_cephfs.h
-@@ -118,7 +118,7 @@ class AccumulateResult
-   // Largest object seen
-   uint64_t max_obj_size;
-   // Highest mtime seen
--  time_t   max_mtime;
-+  int64_t   max_mtime;
- 
-   AccumulateResult()
-     : ceiling_obj_index(0), ceiling_obj_size(0), max_obj_size(0), max_mtime(0)
diff --git a/pkgs/tools/filesystems/ceph/default.nix b/pkgs/tools/filesystems/ceph/default.nix
index 31d5e95359c2..a82867e59a21 120000..100644
--- a/pkgs/tools/filesystems/ceph/default.nix
+++ b/pkgs/tools/filesystems/ceph/default.nix
@@ -1 +1,13 @@
-0.94.nix
\ No newline at end of file
+{ callPackage, fetchgit, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  version = "9.2.0";
+
+  src = fetchgit {
+    url = "https://github.com/ceph/ceph.git";
+    rev = "refs/tags/v${version}";
+    sha256 = "1lcal0jbpnm6y91s2v0g2zdnq7q0i5ql4bky294cz7g011di12vc";
+  };
+
+  patches = [ ./fix-pythonpath.patch ];
+})
diff --git a/pkgs/tools/filesystems/ceph/dev.nix b/pkgs/tools/filesystems/ceph/dev.nix
deleted file mode 100644
index d092b4057e50..000000000000
--- a/pkgs/tools/filesystems/ceph/dev.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ callPackage, fetchgit, ... } @ args:
-
-callPackage ./generic.nix (args // rec {
-  version = "9.1.0";
-
-  src = fetchgit {
-    url = "https://github.com/ceph/ceph.git";
-    rev = "refs/tags/v${version}";
-    sha256 = "1f8z0dxl945370ifz2ila9bc55d81h41bmdq241y9z4pvaynl6pz";
-  };
-
-  patches = [ ./fix-pythonpath.patch ];
-})
diff --git a/pkgs/tools/filesystems/ceph/generic.nix b/pkgs/tools/filesystems/ceph/generic.nix
index 8c169f131ed2..1673e69679b4 100644
--- a/pkgs/tools/filesystems/ceph/generic.nix
+++ b/pkgs/tools/filesystems/ceph/generic.nix
@@ -280,7 +280,7 @@ stdenv.mkDerivation {
     description = "Distributed storage system";
     license = licenses.lgpl21;
     maintainers = with maintainers; [ ak wkennington ];
-    platforms = with platforms; unix;
+    platforms = platforms.unix;
   };
 
   passthru.version = version;
diff --git a/pkgs/tools/filesystems/ceph/git.nix b/pkgs/tools/filesystems/ceph/git.nix
deleted file mode 100644
index 53fe43b93fad..000000000000
--- a/pkgs/tools/filesystems/ceph/git.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{ callPackage, fetchgit, ... } @ args:
-
-callPackage ./generic.nix (args // rec {
-  version = "2015-10-16";
-
-  src = fetchgit {
-    url = "git://github.com/ceph/ceph.git";
-    rev = "63d868106efd4d8aef71d498ba84cb2271a95a07";
-    sha256 = "1sx0j50zp0is34x7rpddiizspg2qfscyfwc5yrw3y6hiklpzhz96";
-  };
-
-  patches = [ ./fix-pythonpath.patch ];
-})
diff --git a/pkgs/tools/filesystems/disorderfs/default.nix b/pkgs/tools/filesystems/disorderfs/default.nix
new file mode 100644
index 000000000000..932f71233df0
--- /dev/null
+++ b/pkgs/tools/filesystems/disorderfs/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, fuse, attr, asciidoc }:
+
+stdenv.mkDerivation rec {
+  name = "disorderfs-${version}";
+  version = "0.4.1";
+
+  src = fetchurl {
+    url = "http://http.debian.net/debian/pool/main/d/disorderfs/disorderfs_${version}.orig.tar.gz";
+    sha256 = "1kiih49l3wi8nhybzrb0kn4aidhpy23s5h2grjwx8rwla5b4cja6";
+  };
+
+  nativeBuildInputs = [ pkgconfig asciidoc ];
+
+  buildInputs = [ fuse attr ];
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "An overlay FUSE filesystem that introduces non-determinism into filesystem metadata";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
diff --git a/pkgs/tools/filesystems/exfat/default.nix b/pkgs/tools/filesystems/exfat/default.nix
index 08cb70dcfc88..f8a0d09bc52a 100644
--- a/pkgs/tools/filesystems/exfat/default.nix
+++ b/pkgs/tools/filesystems/exfat/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, fuse }:
 
-let version = "1.2.1"; in
+let version = "1.2.2"; in
 stdenv.mkDerivation rec {
   name = "exfat-${version}";
 
   src = fetchFromGitHub {
-    sha256 = "1k716civkxszkzpc7bcqqcmfik8lpwk3zwp2nl4v844b8g7r5xz9";
+    sha256 = "17yyd988l4r5w3q3h3hjlxprbw74wdg4n759lzg325smh96qk7p1";
     rev = "v${version}";
     repo = "exfat";
     owner = "relan";
diff --git a/pkgs/tools/filesystems/fuse-7z-ng/default.nix b/pkgs/tools/filesystems/fuse-7z-ng/default.nix
index 4e8df9cacbe2..8b3df52bcb74 100644
--- a/pkgs/tools/filesystems/fuse-7z-ng/default.nix
+++ b/pkgs/tools/filesystems/fuse-7z-ng/default.nix
@@ -28,6 +28,12 @@ stdenv.mkDerivation rec {
     inherit version;
     inherit (src.homepage);
     description = "A FUSE-based filesystem that uses the p7zip library";
+    longDescription = ''
+      fuse-7z-ng is a FUSE file system that uses the p7zip
+      library to access all archive formats supported by 7-zip.
+
+      This project is a fork of fuse-7z ( https://gitorious.org/fuse-7z/fuse-7z ).
+    '';
     platforms = platforms.linux;
     license = licenses.gpl3Plus;
   };
diff --git a/pkgs/tools/filesystems/gpart/default.nix b/pkgs/tools/filesystems/gpart/default.nix
new file mode 100644
index 000000000000..359ef16c2b84
--- /dev/null
+++ b/pkgs/tools/filesystems/gpart/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, autoreconfHook }:
+
+let version = "0.3"; in
+stdenv.mkDerivation rec {
+  name = "gpart-${version}";
+
+  # GitHub repository 'collating patches for gpart from all distributions':
+  src = fetchFromGitHub {
+    sha256 = "1lsd9k876p944k9s6sxqk5yh9yr7m42nbw9vlsllin7pd4djl4ya";
+    rev = version;
+    repo = "gpart";
+    owner = "baruch";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+
+  enableParallelBuilding = true;
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    inherit version;
+    inherit (src.meta) homepage;
+    description = "Guess PC-type hard disk partitions";
+    longDescription = ''
+      Gpart is a tool which tries to guess the primary partition table of a
+      PC-type hard disk in case the primary partition table in sector 0 is
+      damaged, incorrect or deleted. The guessed table can be written to a file
+      or device.
+    '';
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ nckx ];
+  };
+}
diff --git a/pkgs/tools/filesystems/mhddfs/default.nix b/pkgs/tools/filesystems/mhddfs/default.nix
new file mode 100644
index 000000000000..bfd25247b86a
--- /dev/null
+++ b/pkgs/tools/filesystems/mhddfs/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, fuse, pkgconfig, attr, uthash }:
+
+stdenv.mkDerivation rec {
+  name = "mhddfs-${version}";
+  version = "0.1.39";
+
+  src = fetchurl {
+    url = "http://mhddfs.uvw.ru/downloads/mhddfs_${version}.tar.gz";
+    sha256 = "14ggmh91vv69fp2qpz0nxp0hprlw2wsijss2k2485hb0ci4cabvh";
+  };
+
+  buildInputs = [ fuse pkgconfig attr uthash ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp mhddfs $out/bin/
+  '';
+
+  meta = {
+    homepage = http://mhddfs.uvw.ru/;
+    description = "Combines a several mount points into the single one";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.makefu ];
+  };
+}
diff --git a/pkgs/tools/filesystems/mp3fs/default.nix b/pkgs/tools/filesystems/mp3fs/default.nix
index 8859aa003ebf..3b6b3c919cd7 100644
--- a/pkgs/tools/filesystems/mp3fs/default.nix
+++ b/pkgs/tools/filesystems/mp3fs/default.nix
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
     '';
     homepage = http://khenriks.github.io/mp3fs/;
     license = licenses.gpl3Plus;
-    platforms = with platforms; linux;
+    platforms = platforms.linux;
     maintainers = with maintainers; [ nckx ];
   };
 }
diff --git a/pkgs/tools/filesystems/smbnetfs/default.nix b/pkgs/tools/filesystems/smbnetfs/default.nix
index 5b5ca199613c..3bc13d43a362 100644
--- a/pkgs/tools/filesystems/smbnetfs/default.nix
+++ b/pkgs/tools/filesystems/smbnetfs/default.nix
@@ -1,47 +1,23 @@
-x@{builderDefsPackage
-  , fuse, samba, pkgconfig, glib
-  , ...}:
-builderDefsPackage
-(a :  
-let 
-  helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ 
-    [];
+{ stdenv, fetchurl, fuse, samba, pkgconfig, glib }:
 
-  buildInputs = map (n: builtins.getAttr n x)
-    (builtins.attrNames (builtins.removeAttrs x helperArgNames));
-  sourceInfo = rec {
-    baseName="smbnetfs";
-    dirBaseName="SMBNetFS";
-    version = "0.6.0";
-    name="${baseName}-${version}";
-    project="${baseName}";
-    url="mirror://sourceforge/project/${project}/${baseName}/${dirBaseName}-${version}/${name}.tar.bz2";
-  };
-in
-rec {
-  src = a.fetchurl {
-    url = sourceInfo.url;
+stdenv.mkDerivation rec {
+  name = "smbnetfs-${version}";
+  version = "0.6.0";
+  src = fetchurl {
+    url = "mirror://sourceforge/project/smbnetfs/smbnetfs/SMBNetFS-${version}/${name}.tar.bz2";
     sha256 = "16sikr81ipn8v1a1zrqgnsy2as3zcaxbzkr0bm5vxy012bq0plkd";
   };
 
-  inherit (sourceInfo) name version;
-  inherit buildInputs;
+  buildInputs = [ fuse samba pkgconfig glib ];
 
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["doConfigure" "doMakeInstall"];
-      
-  meta = {
+  meta = with stdenv.lib; {
     description = "A FUSE FS for mounting Samba shares";
-    maintainers = with a.lib.maintainers;
-    [
-      raskin
-    ];
-    platforms = with a.lib.platforms;
-      linux;
-    license = a.lib.licenses.gpl2;
+    maintainers = with maintainers; [ raskin ];
+    platforms = platforms.linux;
+    license = licenses.gpl2;
     downloadPage = "http://sourceforge.net/projects/smbnetfs/files/smbnetfs";
     updateWalker = true;
     inherit version;
+    homepage = http://sourceforge.net/projects/smbnetfs/;
   };
-}) x
-
+}
diff --git a/pkgs/tools/filesystems/snapraid/default.nix b/pkgs/tools/filesystems/snapraid/default.nix
new file mode 100644
index 000000000000..bcbafb613f1d
--- /dev/null
+++ b/pkgs/tools/filesystems/snapraid/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "snapraid-${version}";
+  version = "8.1";
+
+  src = fetchurl {
+    url = "https://github.com/amadvance/snapraid/releases/download/v${version}/snapraid-${version}.tar.gz";
+    sha256 = "0pafqn9ismn4j3fsx8fgf008qwh2c6f8mjfjijah6d5c349rmy3b";
+  };
+
+  meta = {
+    homepage = http://www.snapraid.it/;
+    description = "A backup program for disk arrays";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.makefu ];
+  };
+}
diff --git a/pkgs/tools/filesystems/tmsu/default.nix b/pkgs/tools/filesystems/tmsu/default.nix
index 4f9de84a2230..218a2fe0e058 100644
--- a/pkgs/tools/filesystems/tmsu/default.nix
+++ b/pkgs/tools/filesystems/tmsu/default.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation rec {
   name = "tmsu-${version}";
-  version = "0.5.2";
+  version = "0.6.0";
 
   go-sqlite3 = fetchgit {
     url = "git://github.com/mattn/go-sqlite3";
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     owner = "oniony";
     repo = "tmsu";
     rev = "v${version}";
-    sha256 = "090wzhcd4sr3358p1f640psy42r4kd3kkhgnf8196qsh2vcx8arc";
+    sha256 = "1fqq8cj1awwhb076s88l489kj664ndc343gqi8c21yp9wj6fzpnq";
   };
 
   buildInputs = [ go fuse ];
@@ -35,6 +35,8 @@ stdenv.mkDerivation rec {
     mkdir -p src/github.com/oniony/tmsu
     ln -s ${src}/* src/github.com/oniony/tmsu
 
+    patchShebangs tests/.
+
     export GOPATH=$PWD
   '';
 
diff --git a/pkgs/tools/filesystems/udftools/default.nix b/pkgs/tools/filesystems/udftools/default.nix
index fae14102e513..329950f8969b 100644
--- a/pkgs/tools/filesystems/udftools/default.nix
+++ b/pkgs/tools/filesystems/udftools/default.nix
@@ -1,51 +1,24 @@
-x@{builderDefsPackage
-  , ncurses, readline
-  , ...}:
-builderDefsPackage
-(a :  
-let 
-  helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ 
-    [];
+{ stdenv, fetchurl, ncurses, readline }:
 
-  buildInputs = map (n: builtins.getAttr n x)
-    (builtins.attrNames (builtins.removeAttrs x helperArgNames));
-  sourceInfo = rec {
-    baseName="udftools";
-    version="1.0.0b3";
-    name="${baseName}-${version}";
-    project="linux-udf";
-    url="mirror://sourceforge/${project}/${baseName}/${version}/${name}.tar.gz";
-    hash="180414z7jblby64556i8p24rcaas937zwnyp1zg073jdin3rw1y5";
-  };
-in
-rec {
-  src = a.fetchurl {
-    url = sourceInfo.url;
-    sha256 = sourceInfo.hash;
+stdenv.mkDerivation rec {
+  name = "udftools-${version}";
+  version = "1.0.0b3";
+  src = fetchurl {
+    url = "mirror://sourceforge/linux-udf/udftools/${version}/${name}.tar.gz";
+    sha256 = "180414z7jblby64556i8p24rcaas937zwnyp1zg073jdin3rw1y5";
   };
 
-  inherit (sourceInfo) name version;
-  inherit buildInputs;
+  buildInputs = [ ncurses readline ];
 
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["fixIncludes" "doConfigure" "doMakeInstall"];
-      
-  fixIncludes = a.fullDepEntry ''
+  preConfigure = ''
     sed -e '1i#include <limits.h>' -i cdrwtool/cdrwtool.c -i pktsetup/pktsetup.c
     sed -e 's@[(]char[*][)]spm [+]=@spm = ((char*) spm) + @' -i wrudf/wrudf.c
-  '' ["doUnpack" "minInit"];
+  '';
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "UDF tools";
-    maintainers = with a.lib.maintainers;
-    [
-      raskin
-    ];
-    platforms = with a.lib.platforms;
-      linux;
-    license = a.lib.licenses.gpl2Plus;
-  };
-  passthru = {
+    maintainers = with maintainers; [ raskin ];
+    platforms = platforms.linux;
+    license = licenses.gpl2Plus;
   };
-}) x
-
+}
diff --git a/pkgs/tools/filesystems/zkfuse/default.nix b/pkgs/tools/filesystems/zkfuse/default.nix
new file mode 100644
index 000000000000..04755108bc06
--- /dev/null
+++ b/pkgs/tools/filesystems/zkfuse/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, lib, zookeeper, zookeeper_mt, fuse, pkgconfig, autoreconfHook, log4cxx, boost, tree }:
+
+stdenv.mkDerivation rec {
+  name = "zkfuse";
+
+  src = zookeeper.src;
+  patches = [
+    # see: https://issues.apache.org/jira/browse/ZOOKEEPER-1929
+    ./zookeeper-1929.patch
+  ];
+
+  setSourceRoot = "export sourceRoot=${zookeeper.name}/src/contrib/zkfuse";
+
+  buildInputs = [ autoreconfHook zookeeper_mt log4cxx boost fuse ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -v src/zkfuse $out/bin
+  '';
+
+  meta = with lib; {
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ cstrahan ];
+  };
+}
diff --git a/pkgs/tools/filesystems/zkfuse/zookeeper-1929.patch b/pkgs/tools/filesystems/zkfuse/zookeeper-1929.patch
new file mode 100644
index 000000000000..e99dbdf33e03
--- /dev/null
+++ b/pkgs/tools/filesystems/zkfuse/zookeeper-1929.patch
@@ -0,0 +1,15 @@
+diff --git a/src/contrib/zkfuse/src/zkadapter.cc b/src/contrib/zkfuse/src/zkadapter.cc
+index 886051d..93dbef5 100644
+--- a/src/zkadapter.cc
++++ b/src/zkadapter.cc
+@@ -845,7 +845,10 @@ ZooKeeperAdapter::getNodeData(const string &path,
+             string("Unable to get data of node ") + path, rc 
+         );
+     } else {
+-        return string( buffer, buffer + len );
++        if (len == -1) {
++            len = 0;
++        };
++        return string( buffer, len );
+     }
+ }