summary refs log tree commit diff
path: root/pkgs/tools/filesystems
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2015-10-03 13:33:13 +0200
committerVladimír Čunát <vcunat@gmail.com>2015-10-03 13:33:37 +0200
commit5227fb1dd53fcb5918b9342dff4868f4ad68427e (patch)
treed6cd521e3f67944031216a27f740f28f22b73b41 /pkgs/tools/filesystems
parentd6dd3b8bd1eaeeb21dfdb5051cd4732c748ce5d7 (diff)
parent33373d939a19f465228ddede6d38ce9032b5916b (diff)
downloadnixpkgs-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar
nixpkgs-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar.gz
nixpkgs-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar.bz2
nixpkgs-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar.lz
nixpkgs-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar.xz
nixpkgs-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar.zst
nixpkgs-5227fb1dd53fcb5918b9342dff4868f4ad68427e.zip
Merge commit staging+systemd into closure-size
Many non-conflict problems weren't (fully) resolved in this commit yet.
Diffstat (limited to 'pkgs/tools/filesystems')
-rw-r--r--pkgs/tools/filesystems/avfs/default.nix4
-rw-r--r--pkgs/tools/filesystems/bcache-tools/default.nix5
-rw-r--r--pkgs/tools/filesystems/bcache-tools/fix-static.patch22
-rw-r--r--pkgs/tools/filesystems/bonnie/default.nix16
-rw-r--r--pkgs/tools/filesystems/boxfs/default.nix7
-rw-r--r--pkgs/tools/filesystems/boxfs/work-around-API-borkage.patch15
-rw-r--r--pkgs/tools/filesystems/btrfsprogs/default.nix14
-rw-r--r--pkgs/tools/filesystems/ceph/0.80.nix5
-rw-r--r--pkgs/tools/filesystems/ceph/0.94.nix4
-rw-r--r--pkgs/tools/filesystems/ceph/9.0.3-i686-fix.patch25
-rw-r--r--pkgs/tools/filesystems/ceph/boost-158.patch27
-rw-r--r--[l---------]pkgs/tools/filesystems/ceph/dev.nix17
-rw-r--r--pkgs/tools/filesystems/ceph/fix-pythonpath.patch31
-rw-r--r--pkgs/tools/filesystems/ceph/generic.nix212
-rw-r--r--pkgs/tools/filesystems/ceph/git.nix10
-rw-r--r--pkgs/tools/filesystems/dosfstools/default.nix13
-rw-r--r--pkgs/tools/filesystems/duff/default.nix6
-rw-r--r--pkgs/tools/filesystems/duperemove/default.nix12
-rw-r--r--pkgs/tools/filesystems/e2fsprogs/default.nix4
-rw-r--r--pkgs/tools/filesystems/encfs/default.nix7
-rw-r--r--pkgs/tools/filesystems/exfat-utils/default.nix34
-rw-r--r--pkgs/tools/filesystems/exfat/default.nix25
-rw-r--r--pkgs/tools/filesystems/f2fs-tools/default.nix12
-rw-r--r--pkgs/tools/filesystems/fatresize/default.nix39
-rw-r--r--pkgs/tools/filesystems/fatresize/fatresize_parted_nix.patch74
-rw-r--r--pkgs/tools/filesystems/fuse-exfat/default.nix31
-rw-r--r--pkgs/tools/filesystems/fuseiso/default.nix19
-rw-r--r--pkgs/tools/filesystems/gitfs/default.nix32
-rw-r--r--pkgs/tools/filesystems/glusterfs/default.nix19
-rw-r--r--pkgs/tools/filesystems/go-mtpfs/default.nix29
-rw-r--r--pkgs/tools/filesystems/hubicfuse/default.nix25
-rw-r--r--pkgs/tools/filesystems/jmtpfs/default.nix26
-rw-r--r--pkgs/tools/filesystems/mp3fs/default.nix5
-rw-r--r--pkgs/tools/filesystems/nixpart/0.4/blivet.nix6
-rw-r--r--pkgs/tools/filesystems/rdfind/default.nix2
-rw-r--r--pkgs/tools/filesystems/reiser4progs/default.nix4
-rw-r--r--pkgs/tools/filesystems/reiserfsprogs/default.nix2
-rw-r--r--pkgs/tools/filesystems/s3fs/default.nix16
-rw-r--r--pkgs/tools/filesystems/sshfs-fuse/default.nix5
-rw-r--r--pkgs/tools/filesystems/unionfs-fuse/default.nix1
-rw-r--r--pkgs/tools/filesystems/xfsprogs/4.2.0-sharedlibs.patch (renamed from pkgs/tools/filesystems/xfsprogs/xfsprogs-3.2.2-sharedlibs.patch)80
-rw-r--r--pkgs/tools/filesystems/xfsprogs/default.nix15
-rw-r--r--pkgs/tools/filesystems/xtreemfs/default.nix127
-rw-r--r--pkgs/tools/filesystems/yandex-disk/default.nix10
44 files changed, 715 insertions, 379 deletions
diff --git a/pkgs/tools/filesystems/avfs/default.nix b/pkgs/tools/filesystems/avfs/default.nix
index 1a9a09aaa50..060247aa532 100644
--- a/pkgs/tools/filesystems/avfs/default.nix
+++ b/pkgs/tools/filesystems/avfs/default.nix
@@ -2,10 +2,10 @@
 
 stdenv.mkDerivation rec {
   name = "avfs-${version}";
-  version = "1.0.2";
+  version = "1.0.3";
   src = fetchurl {
     url = "mirror://sourceforge/avf/${version}/${name}.tar.bz2";
-    sha1 = "e4f8377ea2565c1ac59f7b66893905b778ddf849";
+    sha256 = "1j7ysjkv0kbkwjagcdgwcnbii1smd58pwwlpz0l7amki5dxygpn6";
   };
 
   buildInputs = [ pkgconfig fuse xz ];
diff --git a/pkgs/tools/filesystems/bcache-tools/default.nix b/pkgs/tools/filesystems/bcache-tools/default.nix
index a4b1363d841..14d8d282c81 100644
--- a/pkgs/tools/filesystems/bcache-tools/default.nix
+++ b/pkgs/tools/filesystems/bcache-tools/default.nix
@@ -21,7 +21,10 @@ stdenv.mkDerivation rec {
         -i Makefile
   '';
 
-  patches = [ ./bcache-udev-modern.patch ];
+  patches = [
+    ./bcache-udev-modern.patch
+    ./fix-static.patch
+  ];
 
   preBuild = ''
     export makeFlags="$makeFlags PREFIX=\"$out\" UDEVLIBDIR=\"$out/lib/udev/\"";
diff --git a/pkgs/tools/filesystems/bcache-tools/fix-static.patch b/pkgs/tools/filesystems/bcache-tools/fix-static.patch
new file mode 100644
index 00000000000..e5dd2df5299
--- /dev/null
+++ b/pkgs/tools/filesystems/bcache-tools/fix-static.patch
@@ -0,0 +1,22 @@
+diff --git a/bcache.c b/bcache.c
+index 8f37445..79806d8 100644
+--- a/bcache.c
++++ b/bcache.c
+@@ -26,7 +26,7 @@
+  * x^7 + x^4 + x + 1
+ */
+ 
+-static const uint64_t crc_table[256] = {
++const uint64_t crc_table[256] = {
+ 	0x0000000000000000ULL, 0x42F0E1EBA9EA3693ULL, 0x85E1C3D753D46D26ULL,
+ 	0xC711223CFA3E5BB5ULL, 0x493366450E42ECDFULL, 0x0BC387AEA7A8DA4CULL,
+ 	0xCCD2A5925D9681F9ULL, 0x8E224479F47CB76AULL, 0x9266CC8A1C85D9BEULL,
+@@ -115,7 +115,7 @@ static const uint64_t crc_table[256] = {
+ 	0x9AFCE626CE85B507ULL
+ };
+ 
+-inline uint64_t crc64(const void *_data, size_t len)
++uint64_t crc64(const void *_data, size_t len)
+ {
+ 	uint64_t crc = 0xFFFFFFFFFFFFFFFFULL;
+ 	const unsigned char *data = _data;
diff --git a/pkgs/tools/filesystems/bonnie/default.nix b/pkgs/tools/filesystems/bonnie/default.nix
new file mode 100644
index 00000000000..684a8311a74
--- /dev/null
+++ b/pkgs/tools/filesystems/bonnie/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation {
+  name = "bonnie++-1.03e";
+  src = fetchurl {
+    url = http://www.coker.com.au/bonnie++/bonnie++-1.03e.tgz;
+    sha256 = "1jz2l8dz08c7vxvchigisv5a293yz95bw1k81dv6bgrlcq8ncf6b";
+  };
+  enableParallelBuilding = true;
+  meta = {
+    homepage = "http://www.coker.com.au/bonnie++/";
+    description = "Hard drive and file system benchmark suite";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/tools/filesystems/boxfs/default.nix b/pkgs/tools/filesystems/boxfs/default.nix
index c0a6c8400fd..e82e720c11b 100644
--- a/pkgs/tools/filesystems/boxfs/default.nix
+++ b/pkgs/tools/filesystems/boxfs/default.nix
@@ -32,7 +32,10 @@ in stdenv.mkDerivation {
     cp -a --no-preserve=mode ${libjson} libjson
   '';
 
-  buildInputs = [ curl fuse libxml2 pkgconfig ];
+  patches = [ ./work-around-API-borkage.patch ];
+
+  buildInputs = [ curl fuse libxml2 ];
+  nativeBuildInputs = [ pkgconfig ];
 
   buildFlags = "static";
 
@@ -51,7 +54,7 @@ in stdenv.mkDerivation {
       unmount the file system with `fusermount -u mountpoint`.
     '';
     homepage = https://github.com/drotiro/boxfs2;
-    license = with licenses; gpl3;
+    license = licenses.gpl3;
     platforms = with platforms; linux;
     maintainers = with maintainers; [ nckx ];
   };
diff --git a/pkgs/tools/filesystems/boxfs/work-around-API-borkage.patch b/pkgs/tools/filesystems/boxfs/work-around-API-borkage.patch
new file mode 100644
index 00000000000..b74e7f32466
--- /dev/null
+++ b/pkgs/tools/filesystems/boxfs/work-around-API-borkage.patch
@@ -0,0 +1,15 @@
+diff --git a/boxapi.c b/boxapi.c
+index 4964273..1a32e0d 100644
+--- a/boxapi.c
++++ b/boxapi.c
+@@ -38,8 +38,8 @@
+ //    AUTH
+ #define API_KEY_VAL "f9ss11y2w0hg5r04jsidxlhk4pil28cf"
+ #define API_SECRET  "r3ZHAIhsOL2FoHjgERI9xf74W5skIM0w"
+-#define API_OAUTH_URL "https://app.box.com/api/oauth2/" //"https://www.box.com/api/oauth2/"
+-#define API_OAUTH_AUTHORIZE API_OAUTH_URL "authorize?response_type=code&client_id=" API_KEY_VAL /*"&redirect_uri=http%3A//localhost"*/
++#define API_OAUTH_URL "https://api.box.com/oauth2/" //"https://www.box.com/api/oauth2/"
++#define API_OAUTH_AUTHORIZE "https://app.box.com/api/oauth2/authorize?response_type=code&client_id=" API_KEY_VAL /*"&redirect_uri=http%3A//localhost"*/
+ #define API_OAUTH_TOKEN     API_OAUTH_URL "token"
+ //    CALLS
+ #define API_ENDPOINT	"https://api.box.com/2.0/"
diff --git a/pkgs/tools/filesystems/btrfsprogs/default.nix b/pkgs/tools/filesystems/btrfsprogs/default.nix
index d1e0e8e430b..d0fac3c93c9 100644
--- a/pkgs/tools/filesystems/btrfsprogs/default.nix
+++ b/pkgs/tools/filesystems/btrfsprogs/default.nix
@@ -1,14 +1,15 @@
 { stdenv, fetchurl, pkgconfig, attr, acl, zlib, libuuid, e2fsprogs, lzo
-, asciidoc, xmlto, docbook_xml_dtd_45, docbook_xsl, libxslt }:
+, asciidoc, xmlto, docbook_xml_dtd_45, docbook_xsl, libxslt
+}:
 
-let version = "3.19.1"; in
+let version = "4.2.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 = "1nw8rsc0dc5k6hrg03m1c65n4d0f7rfs1fjv96xqhqg0wykn5214";
+    sha256 = "1nzyyfj84q98n7lf798k6695pbsd02hg2ffd1kgn8g3qcbwqhwar";
   };
 
   buildInputs = [
@@ -16,10 +17,9 @@ stdenv.mkDerivation rec {
     asciidoc xmlto docbook_xml_dtd_45 docbook_xsl libxslt
   ];
 
-  # for btrfs to get the rpath to libgcc_s, needed for pthread_cancel to work
-  NIX_CFLAGS_LINK = "-lgcc_s";
-
-  makeFlags = "prefix=$(out)";
+  # gcc bug with -O1 on ARM with gcc 4.8
+  # This should be fine on all platforms so apply universally
+  patchPhase = "sed -i s/-O1/-O2/ configure";
 
   meta = with stdenv.lib; {
     description = "Utilities for the btrfs filesystem";
diff --git a/pkgs/tools/filesystems/ceph/0.80.nix b/pkgs/tools/filesystems/ceph/0.80.nix
index 2faf30f570c..ffb52f3fa5b 100644
--- a/pkgs/tools/filesystems/ceph/0.80.nix
+++ b/pkgs/tools/filesystems/ceph/0.80.nix
@@ -1,16 +1,17 @@
 { callPackage, fetchgit, ... } @ args:
 
 callPackage ./generic.nix (args // rec {
-  version = "0.80.9";
+  version = "0.80.10";
 
   src = fetchgit {
     url = "git://github.com/ceph/ceph.git";
     rev = "refs/tags/v${version}";
-    sha256 = "0c1hwl2jzghvbrnddwbp748b02jqznvigwriqx447iz2xyrz2w8q";
+    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
index a14259184a5..f564e28c5a3 100644
--- a/pkgs/tools/filesystems/ceph/0.94.nix
+++ b/pkgs/tools/filesystems/ceph/0.94.nix
@@ -1,12 +1,12 @@
 { callPackage, fetchgit, ... } @ args:
 
 callPackage ./generic.nix (args // rec {
-  version = "0.94.1";
+  version = "0.94.3";
 
   src = fetchgit {
     url = "https://github.com/ceph/ceph.git";
     rev = "refs/tags/v${version}";
-    sha256 = "0rrl10vda4xv22al2c5ccd8v8drs26186dvkrxndvqz8p9999cjx";
+    sha256 = "020khb9978wayi4jnx7f9g1fzfg3r2xn9qw66snpd3k8w2dmycxy";
   };
 
   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
new file mode 100644
index 00000000000..142bcabec54
--- /dev/null
+++ b/pkgs/tools/filesystems/ceph/9.0.3-i686-fix.patch
@@ -0,0 +1,25 @@
+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/boost-158.patch b/pkgs/tools/filesystems/ceph/boost-158.patch
new file mode 100644
index 00000000000..11a1d55c494
--- /dev/null
+++ b/pkgs/tools/filesystems/ceph/boost-158.patch
@@ -0,0 +1,27 @@
+From e7b196a4a091c0ea258866559ba06e7ed0cc4247 Mon Sep 17 00:00:00 2001
+From: Kefu Chai <kchai@redhat.com>
+Date: Fri, 8 May 2015 15:21:20 +0800
+Subject: [PATCH] mon: remove unused variable
+
+* as a side effect, this change silences
+  http://tracker.ceph.com/issues/11576
+
+Fixes: #11576
+Signed-off-by: Kefu Chai <kchai@redhat.com>
+---
+ src/mon/OSDMonitor.cc | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc
+index 73dcd5f..7caaa45 100644
+--- a/src/mon/OSDMonitor.cc
++++ b/src/mon/OSDMonitor.cc
+@@ -3174,8 +3174,6 @@ bool OSDMonitor::preprocess_command(MMonCommand *m)
+   } else if (prefix == "osd crush get-tunable") {
+     string tunable;
+     cmd_getval(g_ceph_context, cmdmap, "tunable", tunable);
+-    int value;
+-    cmd_getval(g_ceph_context, cmdmap, "value", value);
+     ostringstream rss;
+     if (f)
+       f->open_object_section("tunable");
diff --git a/pkgs/tools/filesystems/ceph/dev.nix b/pkgs/tools/filesystems/ceph/dev.nix
index 31d5e95359c..23757278b6f 120000..100644
--- a/pkgs/tools/filesystems/ceph/dev.nix
+++ b/pkgs/tools/filesystems/ceph/dev.nix
@@ -1 +1,16 @@
-0.94.nix
\ No newline at end of file
+{ callPackage, fetchgit, ... } @ args:
+
+callPackage ./generic.nix (args // rec {
+  version = "9.0.3";
+
+  src = fetchgit {
+    url = "https://github.com/ceph/ceph.git";
+    rev = "refs/tags/v${version}";
+    sha256 = "08ccy735srzmi505qlrpqdh5js40mpd5k1vdhnysknra0vqlpmdx";
+  };
+
+  patches = [
+    ./fix-pythonpath.patch
+    ./9.0.3-i686-fix.patch
+  ];
+})
diff --git a/pkgs/tools/filesystems/ceph/fix-pythonpath.patch b/pkgs/tools/filesystems/ceph/fix-pythonpath.patch
new file mode 100644
index 00000000000..7458a46aca1
--- /dev/null
+++ b/pkgs/tools/filesystems/ceph/fix-pythonpath.patch
@@ -0,0 +1,31 @@
+diff --git a/src/Makefile-env.am b/src/Makefile-env.am
+index e176596..384e230 100644
+--- a/src/Makefile-env.am
++++ b/src/Makefile-env.am
+@@ -40,7 +40,7 @@ check_SCRIPTS =
+ export VERBOSE = true
+ 
+ # python unit tests need to know where the scripts are located
+-export PYTHONPATH=$(top_srcdir)/src/pybind
++export PYTHONPATH+=:$(top_srcdir)/src/pybind
+ 
+ # when doing a debug build, make sure to make the targets
+ if WITH_DEBUG
+diff --git a/src/ceph-detect-init/Makefile.am b/src/ceph-detect-init/Makefile.am
+index 3e5ad03..66d6683 100644
+--- a/src/ceph-detect-init/Makefile.am
++++ b/src/ceph-detect-init/Makefile.am
+@@ -64,9 +64,10 @@ install-data-local::
+ 	if test "$(DESTDIR)" ; then \
+ 		if lsb_release -si | grep --quiet 'Ubuntu\|Debian\|Devuan' ; then \
+ 			options=--install-layout=deb ; \
+-		else \
+-			options=--prefix=/usr ; \
+ 		fi ; \
+ 		root="--root=$(DESTDIR)" ; \
+ 	fi ; \
+-	python setup.py install $$root $$options
++	if test "$(prefix)"; then \
++		prefix="--prefix=$(prefix)" ; \
++	fi ; \
++	python setup.py install $$prefix $$root $$options
diff --git a/pkgs/tools/filesystems/ceph/generic.nix b/pkgs/tools/filesystems/ceph/generic.nix
index 825d14c9fb1..cfc020b107d 100644
--- a/pkgs/tools/filesystems/ceph/generic.nix
+++ b/pkgs/tools/filesystems/ceph/generic.nix
@@ -1,5 +1,5 @@
-{ stdenv, autoconf, automake, makeWrapper, pkgconfig, libtool, which
-, boost, python, pythonPackages, libxml2, git
+{ stdenv, autoconf, automake, makeWrapper, pkgconfig, libtool, which, git
+, boost, python, pythonPackages, libxml2, zlib
 
 # Optional Dependencies
 , snappy ? null, leveldb ? null, yasm ? null, fcgi ? null, expat ? null
@@ -26,46 +26,81 @@
 # We must have one crypto library
 assert cryptopp != null || (nss != null && nspr != null);
 
+with stdenv;
 with stdenv.lib;
 let
   mkFlag = trueStr: falseStr: cond: name: val:
     if cond == null then null else
-      "--${if cond != false then trueStr else falseStr}${name}${if val != null && cond != false then "=${val}" else ""}";
+      "--${if cond != false then trueStr else falseStr}${name}"
+      + "${if val != null && cond != false then "=${val}" else ""}";
+
   mkEnable = mkFlag "enable-" "disable-";
   mkWith = mkFlag "with-" "without-";
   mkOther = mkFlag "" "" true;
 
-  hasServer = snappy != null && leveldb != null;
+  shouldUsePkg = pkg_: let pkg = (builtins.tryEval pkg_).value;
+    in if lib.any (x: x == system) (pkg.meta.platforms or [])
+      then pkg else null;
+
+  optSnappy = shouldUsePkg snappy;
+  optLeveldb = shouldUsePkg leveldb;
+  optYasm = shouldUsePkg yasm;
+  optFcgi = shouldUsePkg fcgi;
+  optExpat = shouldUsePkg expat;
+  optCurl = shouldUsePkg curl;
+  optFuse = shouldUsePkg fuse;
+  optAccelio = shouldUsePkg accelio;
+  optLibibverbs = shouldUsePkg libibverbs;
+  optLibrdmacm = shouldUsePkg librdmacm;
+  optLibedit = shouldUsePkg libedit;
+  optLibatomic_ops = shouldUsePkg libatomic_ops;
+  optKinetic-cpp-client = shouldUsePkg kinetic-cpp-client;
+  optRocksdb = shouldUsePkg rocksdb;
+  optLibs3 = if versionAtLeast version "10.0.0" then null else shouldUsePkg libs3;
+
+  optJemalloc = shouldUsePkg jemalloc;
+  optGperftools = shouldUsePkg gperftools;
+
+  optCryptopp = shouldUsePkg cryptopp;
+  optNss = shouldUsePkg nss;
+  optNspr = shouldUsePkg nspr;
+
+  optLibaio = shouldUsePkg libaio;
+  optLibxfs = shouldUsePkg libxfs;
+  optZfs = shouldUsePkg zfs;
+
+  hasServer = optSnappy != null && optLeveldb != null;
   hasMon = hasServer;
   hasMds = hasServer;
   hasOsd = hasServer;
-  hasRadosgw = fcgi != null && expat != null && curl != null && libedit != null;
+  hasRadosgw = optFcgi != null && optExpat != null && optCurl != null && optLibedit != null;
 
   hasXio = (stdenv.isLinux || stdenv.isFreeBSD) &&
-    versionAtLeast version "0.95" &&
-    accelio != null && libibverbs != null && librdmacm != null;
+    versionAtLeast version "9.0.3" &&
+    optAccelio != null && optLibibverbs != null && optLibrdmacm != null;
 
-  hasRocksdb = versionAtLeast version "0.95" && rocksdb != null;
+  hasRocksdb = versionAtLeast version "9.0.0" && optRocksdb != null;
 
   # TODO: Reenable when kinetic support is fixed
-  hasKinetic = versionAtLeast version "0.95" && kinetic-cpp-client != null && false;
+  #hasKinetic = versionAtLeast version "9.0.0" && optKinetic-cpp-client != null;
+  hasKinetic = false;
 
   # Malloc implementation (can be jemalloc, tcmalloc or null)
-  malloc = if jemalloc != null then jemalloc else gperftools;
+  malloc = if optJemalloc != null then optJemalloc else optGperftools;
 
   # We prefer nss over cryptopp
-  cryptoStr = if nss != null && nspr != null then "nss" else
-    if cryptopp != null then "cryptopp" else "none";
+  cryptoStr = if optNss != null && optNspr != null then "nss" else
+    if optCryptopp != null then "cryptopp" else "none";
   cryptoLibsMap = {
-    nss = [ nss nspr ];
-    cryptopp = [ cryptopp ];
+    nss = [ optNss optNspr ];
+    cryptopp = [ optCryptopp ];
     none = [ ];
   };
 
-  wrapArgs = "--prefix PYTHONPATH : \"$(toPythonPath $lib)\""
+  wrapArgs = "--set PYTHONPATH \"$(toPythonPath $lib)\""
     + " --prefix PYTHONPATH : \"$(toPythonPath ${python.modules.readline})\""
     + " --prefix PYTHONPATH : \"$(toPythonPath ${pythonPackages.flask})\""
-    + " --prefix PATH : \"$out/bin\"";
+    + " --set PATH \"$out/bin\"";
 in
 stdenv.mkDerivation {
   name="ceph-${version}";
@@ -76,24 +111,26 @@ stdenv.mkDerivation {
     ./0001-Makefile-env-Don-t-force-sbin.patch
   ];
 
-  nativeBuildInputs = [ autoconf automake makeWrapper pkgconfig libtool which ];
+  nativeBuildInputs = [ autoconf automake makeWrapper pkgconfig libtool which git ]
+    ++ optionals (versionAtLeast version "9.0.2") [
+      pythonPackages.setuptools pythonPackages.argparse
+    ];
   buildInputs = buildInputs ++ cryptoLibsMap.${cryptoStr} ++ [
-    boost python libxml2 yasm libatomic_ops libs3 malloc pythonPackages.flask
-  ] ++ optional (versionAtLeast version "0.95") [
-    git                   # Used for the gitversion string
+    boost python libxml2 optYasm optLibatomic_ops optLibs3 malloc pythonPackages.flask zlib
+  ] ++ optional (versionAtLeast version "9.0.0") [
     pythonPackages.sphinx # Used for docs
   ] ++ optional stdenv.isLinux [
-    linuxHeaders libuuid udev keyutils libaio libxfs zfs
+    linuxHeaders libuuid udev keyutils optLibaio optLibxfs optZfs
   ] ++ optional hasServer [
-    snappy leveldb
+    optSnappy optLeveldb
   ] ++ optional hasRadosgw [
-    fcgi expat curl fuse libedit
+    optFcgi optExpat optCurl optFuse optLibedit
   ] ++ optional hasXio [
-    accelio libibverbs librdmacm
+    optAccelio optLibibverbs optLibrdmacm
   ] ++ optional hasRocksdb [
-    rocksdb
+    optRocksdb
   ] ++ optional hasKinetic [
-    kinetic-cpp-client
+    optKinetic-cpp-client
   ];
 
   postPatch = ''
@@ -102,12 +139,15 @@ stdenv.mkDerivation {
 
     # Fix seagate kinetic linking
     sed -i 's,libcrypto.a,-lcrypto,g' src/os/Makefile.am
+  '' + optionalString (versionAtLeast version "9.0.0") ''
+    # Fix gmock
+    patchShebangs src/gmock
   '';
 
   preConfigure = ''
     # Ceph expects the arch command to be usable during configure
     # for detecting the assembly type
-    mkdir mybin
+    mkdir -p mybin
     echo "#${stdenv.shell} -e" >> mybin/arch
     echo "uname -m" >> mybin/arch
     chmod +x mybin/arch
@@ -117,49 +157,69 @@ stdenv.mkDerivation {
 
     # Fix the python site-packages install directory
     sed -i "s,\(PYTHON\(\|_EXEC\)_PREFIX=\).*,\1'$lib',g" configure
+
+    # Fix the PYTHONPATH for installing ceph-detect-init to $out
+    mkdir -p "$(toPythonPath $out)"
+    export PYTHONPATH="$(toPythonPath $out):$PYTHONPATH"
   '';
 
   configureFlags = [
-    "--exec_prefix=\${out}"
-    "--sysconfdir=/etc"
-    "--localstatedir=/var"
-    "--libdir=\${lib}/lib"
-    "--includedir=\${lib}/include"
-
-    (mkWith   true                         "rbd"               null)
-    (mkWith   true                         "cephfs"            null)
-    (mkWith   hasRadosgw                   "radosgw"           null)
-    (mkWith   true                         "radosstriper"      null)
-    (mkWith   hasServer                    "mon"               null)
-    (mkWith   hasServer                    "osd"               null)
-    (mkWith   hasServer                    "mds"               null)
-    (mkEnable true                         "client"            null)
-    (mkEnable hasServer                    "server"            null)
-    (mkWith   (cryptoStr == "cryptopp")    "cryptopp"          null)
-    (mkWith   (cryptoStr == "nss")         "nss"               null)
-    (mkEnable false                        "root-make-check"   null)
-    (mkWith   false                        "profiler"          null)
-    (mkWith   false                        "debug"             null)
-    (mkEnable false                        "coverage"          null)
-    (mkWith   (fuse != null)               "fuse"              null)
-    (mkWith   (malloc == jemalloc)         "jemalloc"          null)
-    (mkWith   (malloc == gperftools)       "tcmalloc"          null)
-    (mkEnable false                        "pgrefdebugging"    null)
-    (mkEnable false                        "cephfs-java"       null)
-    (mkEnable hasXio                       "xio"               null)
-    (mkWith   (libatomic_ops != null)      "libatomic-ops"     null)
-    (mkWith   true                         "ocf"               null)
-    (mkWith   hasKinetic                   "kinetic"           null)
-    (mkWith   hasRocksdb                   "librocksdb"        null)
-    (mkWith   false                        "librocksdb-static" null)
-    (mkWith   (libs3 != null)              "system-libs3"      null)
-    (mkWith   true                         "rest-bench"        null)
+    (mkOther                               "exec_prefix"         "\${out}")
+    (mkOther                               "sysconfdir"          "/etc")
+    (mkOther                               "localstatedir"       "/var")
+    (mkOther                               "libdir"              "\${lib}/lib")
+    (mkOther                               "includedir"          "\${lib}/include")
+    (mkWith   true                         "rbd"                  null)
+    (mkWith   true                         "cephfs"               null)
+    (mkWith   hasRadosgw                   "radosgw"              null)
+    (mkWith   true                         "radosstriper"         null)
+    (mkWith   hasServer                    "mon"                  null)
+    (mkWith   hasServer                    "osd"                  null)
+    (mkWith   hasServer                    "mds"                  null)
+    (mkEnable true                         "client"               null)
+    (mkEnable hasServer                    "server"               null)
+    (mkWith   (cryptoStr == "cryptopp")    "cryptopp"             null)
+    (mkWith   (cryptoStr == "nss")         "nss"                  null)
+    (mkEnable false                        "root-make-check"      null)
+    (mkWith   false                        "profiler"             null)
+    (mkWith   false                        "debug"                null)
+    (mkEnable false                        "coverage"             null)
+    (mkWith   (optFuse != null)            "fuse"                 null)
+    (mkWith   (malloc == optJemalloc)      "jemalloc"             null)
+    (mkWith   (malloc == optGperftools)    "tcmalloc"             null)
+    (mkEnable false                        "pgrefdebugging"       null)
+    (mkEnable false                        "cephfs-java"          null)
+    (mkEnable hasXio                       "xio"                  null)
+    (mkWith   (optLibatomic_ops != null)   "libatomic-ops"        null)
+    (mkWith   true                         "ocf"                  null)
+    (mkWith   hasKinetic                   "kinetic"              null)
+    (mkWith   hasRocksdb                   "librocksdb"           null)
+    (mkWith   false                        "librocksdb-static"    null)
   ] ++ optional stdenv.isLinux [
-    (mkWith   (libaio != null)             "libaio"            null)
-    (mkWith   (libxfs != null)             "libxfs"            null)
-    (mkWith   (zfs != null)                "libzfs"            null)
+    (mkWith   (optLibaio != null)          "libaio"               null)
+    (mkWith   (optLibxfs != null)          "libxfs"               null)
+    (mkWith   (optZfs != null)             "libzfs"               null)
+  ] ++ optional (versionAtLeast version "0.94.3") [
+    (mkWith   false                        "tcmalloc-minimal"     null)
+  ] ++ optional (versionAtLeast version "9.0.1") [
+    (mkWith   false                        "valgrind"             null)
+  ] ++ optional (versionAtLeast version "9.0.2") [
+    (mkWith   true                         "man-pages"            null)
+    (mkWith   true                         "systemd-libexec-dir"  "\${out}/libexec")
+  ] ++ optional (versionOlder version "10.0.0") [
+    (mkWith   (optLibs3 != null)           "system-libs3"         null)
+    (mkWith   true                         "rest-bench"           null)
+  ] ++ optional (versionAtLeast version "10.0.0") [
+    (mkWith   true                         "rgw-user"             "rgw")
+    (mkWith   true                         "rgw-group"            "rgw")
+    (mkWith   true                         "systemd-unit-dir"     "\${out}/etc/systemd/system")
+    (mkWith   false                        "selinux"              null)  # TODO: Implement
   ];
 
+  preBuild = optionalString (versionAtLeast version "9.0.0") ''
+    (cd src/gmock; make -j $NIX_BUILD_CORES)
+  '';
+
   installFlags = [ "sysconfdir=\${out}/etc" ];
 
   outputs = [ "out" "lib" ];
@@ -181,16 +241,36 @@ stdenv.mkDerivation {
     for PY in $(find $lib/lib -name \*.py); do
       LIBS="$(sed -n "s/.*find_library('\([^)]*\)').*/\1/p" "$PY")"
 
+      # Delete any calls to find_library
+      sed -i '/find_library/d' "$PY"
+
       # Fix each find_library call
       for LIB in $LIBS; do
         REALLIB="$lib/lib/lib$LIB.so"
-        sed -i "s,find_library('$LIB'),'$REALLIB',g" "$PY"
+        sed -i "s,\(lib$LIB = CDLL(\).*,\1'$REALLIB'),g" "$PY"
       done
 
       # Reapply compilation optimizations
       NAME=$(basename -s .py "$PY")
-      (cd "$(dirname $PY)"; python -c "import $NAME"; python -O -c "import $NAME")
+      rm -f "$PY"{c,o}
+      pushd "$(dirname $PY)"
+      python -c "import $NAME"
+      python -O -c "import $NAME"
+      popd
+      test -f "$PY"c
+      test -f "$PY"o
     done
+
+    # Fix .la file link dependencies
+    find "$lib/lib" -name \*.la | xargs sed -i \
+      -e 's,-lboost_[a-z]*,-L${boost.lib}/lib \0,g' \
+  '' + optionalString (cryptoStr == "cryptopp") ''
+      -e 's,-lcryptopp,-L${optCryptopp}/lib \0,g' \
+  '' + optionalString (cryptoStr == "nss") ''
+      -e 's,-l\(plds4\|plc4\|nspr4\),-L${optNss}/lib \0,g' \
+      -e 's,-l\(ssl3\|smime3\|nss3\|nssutil3\),-L${optNspr}/lib \0,g' \
+  '' + ''
+
   '';
 
   enableParallelBuilding = true;
diff --git a/pkgs/tools/filesystems/ceph/git.nix b/pkgs/tools/filesystems/ceph/git.nix
index 8aa4bbd34bb..5b44a7d20f8 100644
--- a/pkgs/tools/filesystems/ceph/git.nix
+++ b/pkgs/tools/filesystems/ceph/git.nix
@@ -1,11 +1,13 @@
-{ callPackage, fetchgit, git, ... } @ args:
+{ callPackage, fetchgit, ... } @ args:
 
 callPackage ./generic.nix (args // rec {
-  version = "2015-04-22";
+  version = "2015-09-22";
 
   src = fetchgit {
     url = "git://github.com/ceph/ceph.git";
-    rev = "89262abc53e324f3ef4d504473a4f1d6eb337c20";
-    sha256 = "0d6hlk1nwgx9cdhvppggz6sbjc1jl8j26l9739qspw1sviac5lcb";
+    rev = "f1ead76f80cc3d078778080c35a6427256874062";
+    sha256 = "16c01b9v04slp80dlgw8n9a5ndjqxi6lv0pnklh1ykh4xb248gjh";
   };
+
+  patches = [ ./fix-pythonpath.patch ];
 })
diff --git a/pkgs/tools/filesystems/dosfstools/default.nix b/pkgs/tools/filesystems/dosfstools/default.nix
index 6bd6bfe368c..76df4f41257 100644
--- a/pkgs/tools/filesystems/dosfstools/default.nix
+++ b/pkgs/tools/filesystems/dosfstools/default.nix
@@ -1,11 +1,14 @@
-{ stdenv, fetchurl }:
+{ stdenv, fetchFromGitHub }:
 
 stdenv.mkDerivation rec {
-  name = "dosfstools-3.0.26";
+  name = "dosfstools-${version}";
+  version = "3.0.28";
 
-  src = fetchurl {
-    url = "http://daniel-baumann.ch/files/software/dosfstools/${name}.tar.xz";
-    sha256 = "0x9yi6s1419k678pr9h3a5bjccbrcxxpzmjwgl262ffrikz45126";
+  src = fetchFromGitHub {
+    owner = "dosfstools";
+    repo = "dosfstools";
+    rev = "v${version}";
+    sha256 = "0lqirpxcn8ml0anq8aqmaljfsji9h6mdzz0jrs0yqqfhgg90bkg2";
   };
 
   makeFlags = "PREFIX=$(out)";
diff --git a/pkgs/tools/filesystems/duff/default.nix b/pkgs/tools/filesystems/duff/default.nix
index 409e7a8c36f..31015334166 100644
--- a/pkgs/tools/filesystems/duff/default.nix
+++ b/pkgs/tools/filesystems/duff/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchFromGitHub, autoreconfHook, gettext }:
 
 let version = "0.5.2"; in
-stdenv.mkDerivation rec {
+stdenv.mkDerivation {
   name = "duff-${version}";
 
   src = fetchFromGitHub {
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     owner = "elmindreda";
   };
 
-  buildInputs = [ autoreconfHook gettext ];
+  nativeBuildInputs = [ autoreconfHook gettext ];
 
   preAutoreconf = ''
     # duff is currently badly packaged, requiring us to do extra work here that
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     description = "Quickly find duplicate files";
     homepage = http://duff.dreda.org/;
-    license = with licenses; zlib;
+    license = licenses.zlib;
     longDescription = ''
       Duff is a Unix command-line utility for quickly finding duplicates in
       a given set of files.
diff --git a/pkgs/tools/filesystems/duperemove/default.nix b/pkgs/tools/filesystems/duperemove/default.nix
index 087012d62a1..4836e39d439 100644
--- a/pkgs/tools/filesystems/duperemove/default.nix
+++ b/pkgs/tools/filesystems/duperemove/default.nix
@@ -1,12 +1,14 @@
-{ lib, stdenv, fetchurl, libgcrypt, pkgconfig, glib, linuxHeaders }:
+{ lib, stdenv, fetchFromGitHub, libgcrypt, pkgconfig, glib, linuxHeaders }:
 
 stdenv.mkDerivation rec {
   name = "duperemove-${version}";
-  version = "0.09.beta2";
+  version = "0.09.4";
 
-  src = fetchurl {
-    url = "https://github.com/markfasheh/duperemove/archive/v${version}.tar.gz";
-    sha256 = "0rn7lf9rjf4ypgfwms2y7b459rri4rfn809h6wx8xl9nbm5niil4";
+  src = fetchFromGitHub {
+    owner = "markfasheh";
+    repo = "duperemove";
+    rev = "v${version}";
+    sha256 = "1d586k6rbfqb5557i1p5xq8ngbppbwpxlkw8wqm7d900a3hp36nl";
   };
 
   buildInputs = [ libgcrypt pkgconfig glib linuxHeaders ];
diff --git a/pkgs/tools/filesystems/e2fsprogs/default.nix b/pkgs/tools/filesystems/e2fsprogs/default.nix
index 7ae2b9c4b85..c091158bff6 100644
--- a/pkgs/tools/filesystems/e2fsprogs/default.nix
+++ b/pkgs/tools/filesystems/e2fsprogs/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, pkgconfig, libuuid }:
 
 stdenv.mkDerivation rec {
-  name = "e2fsprogs-1.42.12";
+  name = "e2fsprogs-1.42.13";
 
   src = fetchurl {
     url = "mirror://sourceforge/e2fsprogs/${name}.tar.gz";
-    sha256 = "0v0qcfyls0dlrjy8gx9m3s2wbkp5z3lbsr5hb7x8kp8f3bclcy71";
+    sha256 = "1m72lk90b5i3h9qnmss6aygrzyn8x2avy3hyaq2fb0jglkrkz6ar";
   };
 
   outputs = [ "bin" "out" "man" ];
diff --git a/pkgs/tools/filesystems/encfs/default.nix b/pkgs/tools/filesystems/encfs/default.nix
index 81a3b46cacb..b21054e478d 100644
--- a/pkgs/tools/filesystems/encfs/default.nix
+++ b/pkgs/tools/filesystems/encfs/default.nix
@@ -2,7 +2,7 @@
 , pkgconfig, rlog }:
 
 let version = "1.8.1"; in
-stdenv.mkDerivation rec {
+stdenv.mkDerivation {
   name = "encfs-${version}";
 
   src = fetchFromGitHub {
@@ -12,7 +12,8 @@ stdenv.mkDerivation rec {
     owner = "vgough";
   };
 
-  buildInputs = [ autoreconfHook boost fuse openssl perl pkgconfig rlog ];
+  buildInputs = [ boost fuse openssl rlog ];
+  nativeBuildInputs = [ autoreconfHook perl pkgconfig ];
 
   configureFlags = [
     "--with-boost-serialization=boost_wserialization"
@@ -24,7 +25,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://vgough.github.io/encfs;
     description = "Provides an encrypted filesystem in user-space via FUSE";
-    license = with licenses; lgpl2;
+    license = licenses.lgpl2;
     maintainers = with maintainers; [ nckx ];
   };
 }
diff --git a/pkgs/tools/filesystems/exfat-utils/default.nix b/pkgs/tools/filesystems/exfat-utils/default.nix
deleted file mode 100644
index a767ba36b3f..00000000000
--- a/pkgs/tools/filesystems/exfat-utils/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ stdenv, fetchurl, scons }:
-
-let version = "1.1.1"; in
-stdenv.mkDerivation rec {
-  name = "exfat-utils-${version}";
-
-  src = fetchurl {
-    sha256 = "0ck2snhlhp965bb9a4y1g2lpl979sw1yznm79wbavyv174458i66";
-    url = "https://docs.google.com/uc?export=download&id=0B7CLI-REKbE3UzNtSkRvdHBpdjQ";
-    name = "${name}.tar.gz";
-  };
-
-  meta = with stdenv.lib; {
-    description = "Free exFAT file system utilities";
-    longDescription = ''
-      Full-featured exFAT file system implementation for GNU/Linux and other
-      Unix-like systems.
-    '';
-    homepage = https://code.google.com/p/exfat;
-    license = with licenses; gpl2Plus;
-    platforms = with platforms; linux;
-    maintainers = with maintainers; [ nckx ];
-  };
-
-  buildInputs = [ scons ];
-
-  buildPhase = ''
-    export CCFLAGS="-std=c99"
-    mkdir -pv $out/sbin
-    scons DESTDIR=$out/sbin install
-  '';
-
-  installPhase = ":";
-}
diff --git a/pkgs/tools/filesystems/exfat/default.nix b/pkgs/tools/filesystems/exfat/default.nix
new file mode 100644
index 00000000000..08cb70dcfc8
--- /dev/null
+++ b/pkgs/tools/filesystems/exfat/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, fuse }:
+
+let version = "1.2.1"; in
+stdenv.mkDerivation rec {
+  name = "exfat-${version}";
+
+  src = fetchFromGitHub {
+    sha256 = "1k716civkxszkzpc7bcqqcmfik8lpwk3zwp2nl4v844b8g7r5xz9";
+    rev = "v${version}";
+    repo = "exfat";
+    owner = "relan";
+  };
+
+  buildInputs = [ fuse ];
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+
+  meta = with stdenv.lib; {
+    inherit version;
+    inherit (src.meta) homepage;
+    description = "Free exFAT file system implementation";
+    platforms = platforms.linux;
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ nckx ];
+  };
+}
diff --git a/pkgs/tools/filesystems/f2fs-tools/default.nix b/pkgs/tools/filesystems/f2fs-tools/default.nix
index f52ead32acd..f8fa5cc264d 100644
--- a/pkgs/tools/filesystems/f2fs-tools/default.nix
+++ b/pkgs/tools/filesystems/f2fs-tools/default.nix
@@ -2,12 +2,12 @@
 
 stdenv.mkDerivation rec {
   name = "f2fs-tools-${version}";
-  version = "1.3.0";
+  version = "1.4.1";
 
   src = fetchgit {
     url = git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs-tools.git;
     rev = "refs/tags/v${version}";
-    sha256 = "1r97k91qaf42jz623jqy0wm97yjq1ym034q4fdhfirq27s46sn6i";
+    sha256 = "16i74r2656q6x4gg5kgjy2fxipr5czbm10r66s34pi2lfczbwhjr";
   };
 
   buildInputs = [ autoconf automake libtool pkgconfig libuuid ];
@@ -17,11 +17,11 @@ stdenv.mkDerivation rec {
     autoreconf --install
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = "http://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs-tools.git/";
     description = "Userland tools for the f2fs filesystem";
-    license = stdenv.lib.licenses.gpl2;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.emery ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ emery jagajaga ];
   };
 }
diff --git a/pkgs/tools/filesystems/fatresize/default.nix b/pkgs/tools/filesystems/fatresize/default.nix
new file mode 100644
index 00000000000..7fb60d2f388
--- /dev/null
+++ b/pkgs/tools/filesystems/fatresize/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, parted, substituteAll, utillinux }:
+
+stdenv.mkDerivation rec {
+  
+  version = "1.0.2";
+  name = "fatresize-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/fatresize/fatresize-${version}.tar.bz2";
+    sha256 = "04wp48jpdvq4nn0dgbw5za07g842rnxlh9mig4mslz70zqs0izjm";
+  };
+  
+  buildInputs = [ parted utillinux ];
+  
+  # This patch helps this unmantained piece of software to be built against recent parted
+  # It basically modifies the detection scheme for parted version (the current one has no micro version defined)
+  # The second change is to include a header for a moved function since 1.6+ to current 3.1+ parted
+  # The third change is to modify the call to PED_ASSERT that is no longer defined with 2 params
+  patches = [ ./fatresize_parted_nix.patch ];
+  
+  preConfigure = ''
+    echo "Replacing calls to ped_free with free ..."
+    substituteInPlace ./fatresize.c --replace ped_free free
+  '';
+  
+  # Filesystem resize functions were reintroduced in parted 3.1 due to no other available free alternatives
+  # but in a sepparate library -> libparted-fs-resize --- that's why the added LDFLAG
+  makeFlags = ''
+    LDFLAGS=-lparted-fs-resize
+  '';
+  
+  propagatedBuildInputs = [ parted utillinux ];
+  
+  meta = {
+    description = "The FAT16/FAT32 non-destructive resizer";
+    homepage = http://sourceforge.net/projects/fatresize;
+    platform = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/tools/filesystems/fatresize/fatresize_parted_nix.patch b/pkgs/tools/filesystems/fatresize/fatresize_parted_nix.patch
new file mode 100644
index 00000000000..e9aa87a2d56
--- /dev/null
+++ b/pkgs/tools/filesystems/fatresize/fatresize_parted_nix.patch
@@ -0,0 +1,74 @@
+diff --git a/aclocal.m4 b/aclocal.m4
+index 18e8176..2e75592 100644
+--- a/aclocal.m4
++++ b/aclocal.m4
+@@ -88,8 +88,15 @@ int main ()
+ 	if ( !(version = ped_get_version ()) )
+ 		exit(1);
+ 	if (sscanf(version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+-		printf("%s, bad version string\n", version);
+-		exit(1);
++		if (sscanf(version, "%d.%d", &major, &minor) != 2)
++		{
++		  printf("%s, bad version string\n", version);
++		  exit(1);
++		}
++		else
++		{
++		  micro = 0;
++		}
+ 	}
+ 	
+ 	if ((major > $parted_config_major_version) ||
+diff --git a/configure b/configure
+index ed31457..e5f1705 100755
+--- a/configure
++++ b/configure
+@@ -4793,8 +4793,15 @@ int main ()
+ 	if ( !(version = ped_get_version ()) )
+ 		exit(1);
+ 	if (sscanf(version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+-		printf("%s, bad version string\n", version);
+-		exit(1);
++		if (sscanf(version, "%d.%d", &major, &minor) != 2)
++		{
++		  printf("%s, bad version string\n", version);
++		  exit(1);
++		}
++		else
++		{
++		  micro = 0;
++		}
+ 	}
+ 
+ 	if ((major > $parted_config_major_version) ||
+diff --git a/fatresize.c b/fatresize.c
+index 424d5d2..e439102 100644
+--- a/fatresize.c
++++ b/fatresize.c
+@@ -30,6 +30,7 @@
+ #include <inttypes.h>
+ #include <parted/parted.h>
+ #include <parted/debug.h>
++#include <parted/filesys.h>
+ #include <parted/unit.h>
+ 
+ #include "config.h"
+@@ -217,7 +218,7 @@ fatresize_handler(PedException *ex)
+ static int
+ snap(PedSector* sector, PedSector new_sector, PedGeometry* range)
+ {
+-    PED_ASSERT(ped_geometry_test_sector_inside (range, *sector), return 0);
++    PED_ASSERT(ped_geometry_test_sector_inside (range, *sector));
+     if (!ped_geometry_test_sector_inside(range, new_sector))
+ 	return 0;
+ 
+@@ -281,7 +282,7 @@ snap_to_boundaries (PedGeometry* new_geom, PedGeometry* old_geom,
+ 			  end_part->geom.end, end_part->geom.start - 1, -1);
+ 	}
+ 
+-	PED_ASSERT (start <= end, return);
++	PED_ASSERT (start <= end);
+ 	ped_geometry_set (new_geom, start, end - start + 1);
+ }
+ 
diff --git a/pkgs/tools/filesystems/fuse-exfat/default.nix b/pkgs/tools/filesystems/fuse-exfat/default.nix
deleted file mode 100644
index 983228e9de5..00000000000
--- a/pkgs/tools/filesystems/fuse-exfat/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ stdenv, fetchurl, pkgconfig, fuse, scons }:
-
-stdenv.mkDerivation rec {
-  name = "fuse-exfat-1.1.0";
-
-  src = fetchurl {
-    sha256 = "0glmgwrf0nv09am54i6s35ksbvrywrwc51w6q32mv5by8475530r";
-    url = "https://docs.google.com/uc?export=download&id=0B7CLI-REKbE3VTdaa0EzTkhYdU0";
-    name = "${name}.tar.gz";
-  };
-
-  buildInputs = [ pkgconfig fuse scons ];
-
-  buildPhase = ''
-    export CCFLAGS="-O2 -Wall -std=c99 -I${fuse}/include"
-    export LDFLAGS="-L${fuse}/lib"
-    mkdir -pv $out/sbin
-    scons DESTDIR=$out/sbin install
-  '';
-
-  installPhase = ":";
-
-  meta = with stdenv.lib; {
-    homepage = http://code.google.com/p/exfat/;
-    description = "A FUSE-based filesystem that allows read and write access to exFAT devices";
-    platforms = with platforms; linux;
-    license = with licenses; gpl2Plus;
-    maintainers = with maintainers; [ nckx ];
-  };
-}
-
diff --git a/pkgs/tools/filesystems/fuseiso/default.nix b/pkgs/tools/filesystems/fuseiso/default.nix
new file mode 100644
index 00000000000..161425ad137
--- /dev/null
+++ b/pkgs/tools/filesystems/fuseiso/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pkgconfig, fuse, zlib, glib }:
+
+stdenv.mkDerivation rec {
+  name = "fuseiso-20070708";
+
+  src = fetchurl {
+    url = "http://sourceforge.net/projects/fuseiso/files/fuseiso/20070708/fuseiso-20070708.tar.bz2";
+    sha1 = "fe142556ad35dd7e5dc31a16183232a6e2da7692";  
+  };
+
+  buildInputs = [ pkgconfig fuse zlib glib ];
+
+  meta = {
+    homepage = http://sourceforge.net/projects/fuseiso;
+    description = "FUSE module to mount ISO filesystem images";
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/tools/filesystems/gitfs/default.nix b/pkgs/tools/filesystems/gitfs/default.nix
new file mode 100644
index 00000000000..cd79f5db85b
--- /dev/null
+++ b/pkgs/tools/filesystems/gitfs/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, python, buildPythonPackage, pythonPackages }:
+
+buildPythonPackage rec {
+  name = "gitfs-0.2.5";
+
+  src = fetchFromGitHub {
+    owner = "PressLabs";
+    repo = "gitfs";
+    rev = "495c6c52ec3573294ba7b8426ed794eb466cbb82";
+    sha256 = "04yh6b5ivbviqy5k2768ag75cd5kr8k70ar0d801yvc8hnijvphk";
+  };
+
+  patchPhase = ''
+    # requirement checks are unnecessary at runtime
+    echo > requirements.txt
+  '';
+
+  propagatedBuildInputs = with pythonPackages; [ atomiclong fusepy pygit2 ];
+
+  meta = {
+    description = "A FUSE filesystem that fully integrates with git";
+    longDescription = ''
+      A git remote repository's branch can be mounted locally,
+      and any subsequent changes made to the files will be
+      automatically committed to the remote.
+    '';
+    homepage = https://github.com/PressLabs/gitfs;
+    license = stdenv.lib.licenses.asl20;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.robbinch ];
+  };
+}
\ No newline at end of file
diff --git a/pkgs/tools/filesystems/glusterfs/default.nix b/pkgs/tools/filesystems/glusterfs/default.nix
index 76861467348..062f27e286f 100644
--- a/pkgs/tools/filesystems/glusterfs/default.nix
+++ b/pkgs/tools/filesystems/glusterfs/default.nix
@@ -1,24 +1,31 @@
 {stdenv, fetchurl, fuse, bison, flex_2_5_35, openssl, python, ncurses, readline,
- autoconf, automake, libtool, pkgconfig, zlib, libaio, libxml2}:
+ autoconf, automake, libtool, pkgconfig, zlib, libaio, libxml2, acl, sqlite
+ , liburcu, attr
+}:
 let 
   s = # Generated upstream information 
   rec {
     baseName="glusterfs";
-    version="3.6.2";
+    version="3.7.3";
     name="${baseName}-${version}";
-    hash="1kz0kmj0apkhkmw1zy72bsx06b1ii6z8y3fq365cy5l3xnjibdaa";
-    url="http://download.gluster.org/pub/gluster/glusterfs/3.6/3.6.2/glusterfs-3.6.2.tar.gz";
-    sha256="1kz0kmj0apkhkmw1zy72bsx06b1ii6z8y3fq365cy5l3xnjibdaa";
+    hash="0xdzxprsi0gybv6jdp0ycfpsxzijwfrm3217fk3fnixcs92frshv";
+    url="http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.3/glusterfs-3.7.3.tar.gz";
+    sha256="0xdzxprsi0gybv6jdp0ycfpsxzijwfrm3217fk3fnixcs92frshv";
   };
   buildInputs = [
     fuse bison flex_2_5_35 openssl python ncurses readline
     autoconf automake libtool pkgconfig zlib libaio libxml2
+    acl sqlite liburcu attr
+  ];
+  # Some of the headers reference acl
+  propagatedBuildInputs = [
+    acl
   ];
 in
 stdenv.mkDerivation
 rec {
   inherit (s) name version;
-  inherit buildInputs;
+  inherit buildInputs propagatedBuildInputs;
 
   preConfigure = ''
     ./autogen.sh
diff --git a/pkgs/tools/filesystems/go-mtpfs/default.nix b/pkgs/tools/filesystems/go-mtpfs/default.nix
deleted file mode 100644
index cf521425a76..00000000000
--- a/pkgs/tools/filesystems/go-mtpfs/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib, goPackages, pkgconfig, libmtp, fetchFromGitHub }:
-
-with goPackages;
-
-buildGoPackage rec {
-  rev = "9c2b46050e8ea8574eaec2124867ac7b11e6471d";
-  name = "go-mtpfs-${lib.strings.substring 0 7 rev}";
-  goPackagePath = "github.com/hanwen/go-mtpfs";
-  src = fetchFromGitHub {
-    inherit rev;
-    owner = "hanwen";
-    repo = "go-mtpfs";
-    sha256 = "0kxi18cb078q4wikfajp3yvp802wzfsfdp431j0dg2jdw8y7gfii";
-  };
-
-  buildInputs = [ go-fuse libmtp usb ];
-
-  subPackages = [ "./" ];
-
-  dontInstallSrc = true;
-
-  meta = with lib; {
-    description = "A simple FUSE filesystem for mounting Android devices as a MTP device";
-    homepage    = https://github.com/hanwen/go-mtpfs;
-    maintainers = with maintainers; [ bennofs ];
-    platforms   = platforms.linux;
-    license     = licenses.bsd3;
-  };
-}
diff --git a/pkgs/tools/filesystems/hubicfuse/default.nix b/pkgs/tools/filesystems/hubicfuse/default.nix
new file mode 100644
index 00000000000..7ce48d28803
--- /dev/null
+++ b/pkgs/tools/filesystems/hubicfuse/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, pkgconfig, curl, openssl, fuse, libxml2, json_c, file }:
+
+stdenv.mkDerivation rec {
+  name = "hubicfuse-${version}";
+  version = "2.1.0";
+
+  src = fetchurl {
+    url = https://github.com/TurboGit/hubicfuse/archive/v2.1.0.tar.gz;
+    sha256 = "1mnijcwac6k3f6xknvdrsbmkkizpwbayqkb5l6jic15ymxv1fs7d";
+  };
+
+  buildInputs = [ pkgconfig curl openssl fuse libxml2 json_c file ];
+  postInstall = ''
+    install hubic_token $out/bin
+    mkdir -p $out/sbin
+    ln -sf $out/bin/hubicfuse $out/sbin/mount.hubicfuse
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/TurboGit/hubicfuse;
+    description = "FUSE-based filesystem to access hubic cloud storage";
+    platforms = platforms.linux;
+    license = licenses.mit;
+  };
+}
diff --git a/pkgs/tools/filesystems/jmtpfs/default.nix b/pkgs/tools/filesystems/jmtpfs/default.nix
index 86dad1cc0fa..091270deab6 100644
--- a/pkgs/tools/filesystems/jmtpfs/default.nix
+++ b/pkgs/tools/filesystems/jmtpfs/default.nix
@@ -1,23 +1,23 @@
-{ stdenv, fetchurl
-, autoconf, automake
-, unzip, pkgconfig
-, file, fuse, libmtp }:
+{ stdenv, fetchFromGitHub, pkgconfig, file, fuse, libmtp }:
 
-stdenv.mkDerivation rec {
-  version = "0.5";
+let version = "0.5"; in
+stdenv.mkDerivation {
   name = "jmtpfs-${version}";
 
-  src = fetchurl {
-    url = "https://github.com/JasonFerrara/jmtpfs/archive/v0.5.zip";
-    sha256 = "09fw4g350mjz1mnga7ws5nvnsnfzs8s7cscl300mas1m9s6vmhz6";
+  src = fetchFromGitHub {
+    sha256 = "1pm68agkhrwgrplrfrnbwdcvx5lrivdmqw8pb5gdmm3xppnryji1";
+    rev = "v${version}";
+    repo = "jmtpfs";
+    owner = "JasonFerrara";
   };
 
-  buildInputs = [ autoconf automake file fuse libmtp pkgconfig unzip ];
+  buildInputs = [ file fuse libmtp pkgconfig ];
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "A FUSE filesystem for MTP devices like Android phones";
     homepage = https://github.com/JasonFerrara/jmtpfs;
-    license = stdenv.lib.licenses.gpl3;
-    maintainers = [ stdenv.lib.maintainers.coconnor ];
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.coconnor ];
   };
 }
diff --git a/pkgs/tools/filesystems/mp3fs/default.nix b/pkgs/tools/filesystems/mp3fs/default.nix
index 50242bb6388..8859aa003eb 100644
--- a/pkgs/tools/filesystems/mp3fs/default.nix
+++ b/pkgs/tools/filesystems/mp3fs/default.nix
@@ -11,7 +11,8 @@ stdenv.mkDerivation rec {
 
   patches = [ ./fix-statfs-operation.patch ];
 
-  buildInputs = [ flac fuse lame libid3tag pkgconfig ];
+  buildInputs = [ flac fuse lame libid3tag ];
+  nativeBuildInputs = [ pkgconfig ];
 
   enableParallelBuilding = true;
 
@@ -25,7 +26,7 @@ stdenv.mkDerivation rec {
       simple drag-and-drop in a file browser.
     '';
     homepage = http://khenriks.github.io/mp3fs/;
-    license = with licenses; gpl3Plus;
+    license = licenses.gpl3Plus;
     platforms = with platforms; linux;
     maintainers = with maintainers; [ nckx ];
   };
diff --git a/pkgs/tools/filesystems/nixpart/0.4/blivet.nix b/pkgs/tools/filesystems/nixpart/0.4/blivet.nix
index 45c79aad08e..4033cdc87e0 100644
--- a/pkgs/tools/filesystems/nixpart/0.4/blivet.nix
+++ b/pkgs/tools/filesystems/nixpart/0.4/blivet.nix
@@ -45,10 +45,10 @@ buildPythonPackage rec {
   # tests are currently _heavily_ broken upstream
   doCheck = false;
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = "https://fedoraproject.org/wiki/Blivet";
     description = "Module for management of a system's storage configuration";
-    license = [ "GPLv2+" "LGPLv2.1+" ];
-    platforms = stdenv.lib.platforms.linux;
+    license = with licenses; [ gpl2Plus lgpl21Plus ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/filesystems/rdfind/default.nix b/pkgs/tools/filesystems/rdfind/default.nix
index 5106af48917..853654c0f79 100644
--- a/pkgs/tools/filesystems/rdfind/default.nix
+++ b/pkgs/tools/filesystems/rdfind/default.nix
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = http://rdfind.pauldreik.se/;
     description = "Removes or hardlinks duplicate files very swiftly";
-    license = with stdenv.lib.licenses; gpl2;
+    license = stdenv.lib.licenses.gpl2;
     maintainers = with stdenv.lib.maintainers; [ wmertens ];
     platforms = with stdenv.lib.platforms; all;
   };
diff --git a/pkgs/tools/filesystems/reiser4progs/default.nix b/pkgs/tools/filesystems/reiser4progs/default.nix
index 7dfbbf66c0a..662ceba03b8 100644
--- a/pkgs/tools/filesystems/reiser4progs/default.nix
+++ b/pkgs/tools/filesystems/reiser4progs/default.nix
@@ -1,12 +1,12 @@
 {stdenv, fetchurl, libaal}:
 
-let version = "1.0.9"; in
+let version = "1.1.0"; in
 stdenv.mkDerivation rec {
   name = "reiser4progs-${version}";
 
   src = fetchurl {
     url = "mirror://sourceforge/reiser4/reiser4-utils/${name}.tar.gz";
-    sha256 = "0d6djyd7wjvzbqj738b2z4jr5c2s30g8q8xygipyi0007g42gc7z";
+    sha256 = "18bgv0wd75q53642x5dsk4g0mil1hw1zrp7a4xkb0pxx4bzjlbqg";
   };
 
   buildInputs = [libaal];
diff --git a/pkgs/tools/filesystems/reiserfsprogs/default.nix b/pkgs/tools/filesystems/reiserfsprogs/default.nix
index 899f9463951..e41318a982c 100644
--- a/pkgs/tools/filesystems/reiserfsprogs/default.nix
+++ b/pkgs/tools/filesystems/reiserfsprogs/default.nix
@@ -11,6 +11,8 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ libuuid ];
 
+  NIX_CFLAGS_COMPILE = "-std=gnu90";
+
   meta = {
     inherit version;
     homepage = http://www.namesys.com/;
diff --git a/pkgs/tools/filesystems/s3fs/default.nix b/pkgs/tools/filesystems/s3fs/default.nix
index 4c509444b74..4c40d5e4983 100644
--- a/pkgs/tools/filesystems/s3fs/default.nix
+++ b/pkgs/tools/filesystems/s3fs/default.nix
@@ -1,16 +1,20 @@
 {stdenv, fetchurl, autoconf, automake, pkgconfig, curl, openssl, libxml2, fuse}:
 
 stdenv.mkDerivation {
-  name = "sshfs-fuse-1.78";
+  name = "s3fs-fuse-1.79";
   src = fetchurl {
-    url = https://github.com/s3fs-fuse/s3fs-fuse/archive/v1.78.tar.gz;
-    sha256 = "1xcp0bqa4a2ynjn5phb1pj70wm322czhqp4qcb27d5jd545b1h1n";
+    url = https://github.com/s3fs-fuse/s3fs-fuse/archive/v1.79.tar.gz;
+    sha256 = "0rmzkngzq040g020pv75qqx3jy34vdxzqvxz29k6q8yfb3wpkhb1";
   };
   preConfigure = "./autogen.sh";
   buildInputs = [ autoconf automake pkgconfig curl openssl libxml2 fuse ];
-  
-  meta = {
+
+  postInstall = ''
+    ln -s $out/bin/s3fs $out/bin/mount.s3fs
+  '';
+
+  meta = with stdenv.lib; {
     description = "Mount an S3 bucket as filesystem through FUSE";
-    license = "GPLv2";
+    license = licenses.gpl2;
   };
 }
diff --git a/pkgs/tools/filesystems/sshfs-fuse/default.nix b/pkgs/tools/filesystems/sshfs-fuse/default.nix
index 98cf3c533ae..d1e33098a94 100644
--- a/pkgs/tools/filesystems/sshfs-fuse/default.nix
+++ b/pkgs/tools/filesystems/sshfs-fuse/default.nix
@@ -14,9 +14,10 @@ stdenv.mkDerivation rec {
     ln -sf $out/bin/sshfs $out/sbin/mount.sshfs
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://fuse.sourceforge.net/sshfs.html;
     description = "FUSE-based filesystem that allows remote filesystems to be mounted over SSH";
-    platforms = stdenv.lib.platforms.linux;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ jgeerds ];
   };
 }
diff --git a/pkgs/tools/filesystems/unionfs-fuse/default.nix b/pkgs/tools/filesystems/unionfs-fuse/default.nix
index 1d39108afb1..73db9e2ca20 100644
--- a/pkgs/tools/filesystems/unionfs-fuse/default.nix
+++ b/pkgs/tools/filesystems/unionfs-fuse/default.nix
@@ -36,7 +36,6 @@ stdenv.mkDerivation rec {
     description = "FUSE UnionFS implementation";
     homepage = http://podgorny.cz/moin/UnionFsFuse;
     license = stdenv.lib.licenses.bsd3;
-    maintainers = [ stdenv.lib.maintainers.shlevy ];
     platforms = stdenv.lib.platforms.linux;
   };
 }
diff --git a/pkgs/tools/filesystems/xfsprogs/xfsprogs-3.2.2-sharedlibs.patch b/pkgs/tools/filesystems/xfsprogs/4.2.0-sharedlibs.patch
index 118874a5e99..86eb6f81869 100644
--- a/pkgs/tools/filesystems/xfsprogs/xfsprogs-3.2.2-sharedlibs.patch
+++ b/pkgs/tools/filesystems/xfsprogs/4.2.0-sharedlibs.patch
@@ -1,9 +1,5 @@
-use libtool to do all installing.  do not use the manual file install as
-that'll copy files directly from the .libs/ subdir which might have rpaths
-that we do not want.
-
---- xfsprogs-3.2.2/include/buildmacros
-+++ xfsprogs-3.2.2/include/buildmacros
+--- xfsprogs-4.2.0/include/buildmacros
++++ xfsprogs-4.2.0/include/buildmacros
 @@ -70,18 +70,9 @@
  # /usr/lib.
  ifeq ($(ENABLE_SHARED),yes)
@@ -15,7 +11,7 @@ that we do not want.
 -	../$(INSTALL) -m 755 -d $(PKG_ROOT_LIB_DIR); \
 -	../$(INSTALL) -T so_base $(LIBNAME).lai $(PKG_ROOT_LIB_DIR); \
 -	if [ "x$(shell readlink -f $(PKG_LIB_DIR))" != \
--	     "x$(shell readlink -f $(PKG_ROOT_LIB_DIR))"; ]; then \
+-	     "x$(shell readlink -f $(PKG_ROOT_LIB_DIR))" ]; then \
 -		../$(INSTALL) -S $(PKG_LIB_DIR)/$(LIBNAME).a $(PKG_ROOT_LIB_DIR)/$(LIBNAME).a; \
 -		../$(INSTALL) -S $(PKG_LIB_DIR)/$(LIBNAME).la $(PKG_ROOT_LIB_DIR)/$(LIBNAME).la; \
 -		../$(INSTALL) -S $(PKG_ROOT_LIB_DIR)/$(LIBNAME).so $(PKG_LIB_DIR)/$(LIBNAME).so; \
@@ -26,53 +22,31 @@ that we do not want.
  else
  INSTALL_LTLIB_DEV = $(INSTALL_LTLIB_STATIC)
  endif
---- xfsprogs-3.2.2/libdisk/Makefile
-+++ xfsprogs-3.2.2/libdisk/Makefile
-@@ -31,6 +31,7 @@
- install: default
- 
- install-dev: default
-+	$(INSTALL_LTLIB_DEV)
- 
- install-qa: install-dev
- 
---- xfsprogs-3.2.2/libhandle/Makefile
-+++ xfsprogs-3.2.2/libhandle/Makefile
-@@ -20,7 +20,6 @@
- include $(BUILDRULES)
- 
- install: default
--	$(INSTALL_LTLIB)
- 
- install-dev: default
- 	$(INSTALL_LTLIB_DEV)
---- xfsprogs-3.2.2/libxcmd/Makefile
-+++ xfsprogs-3.2.2/libxcmd/Makefile
-@@ -34,6 +34,11 @@
+--- xfsprogs-4.2.0/libxcmd/Makefile
++++ xfsprogs-4.2.0/libxcmd/Makefile
+@@ -34,6 +34,9 @@
  
  include $(BUILDRULES)
  
--install install-dev install-qa: default
+-install install-dev: default
 +install: default
 +
-+ install-dev: default
++install-dev: default
 +	$(INSTALL_LTLIB_DEV)
-+
-+install-qa: default
  
  -include .ltdep
---- xfsprogs-3.2.2/libxfs/Makefile
-+++ xfsprogs-3.2.2/libxfs/Makefile
-@@ -86,6 +86,7 @@
- install: default
+--- xfsprogs-4.2.0/libxfs/Makefile
++++ xfsprogs-4.2.0/libxfs/Makefile
+@@ -138,6 +138,7 @@
  
- install-dev: default
+ install-dev: install
+ 	$(INSTALL) -m 644 $(PKGHFILES) $(PKG_INC_DIR)
 +	$(INSTALL_LTLIB_DEV)
  
- install-qa: default
- 
---- xfsprogs-3.2.2/libxlog/Makefile
-+++ xfsprogs-3.2.2/libxlog/Makefile
+ # We need to install the headers before building the dependencies.  If we
+ # include the .ltdep file, the makefile decides that it needs to build the
+--- xfsprogs-4.2.0/libxlog/Makefile
++++ xfsprogs-4.2.0/libxlog/Makefile
 @@ -12,6 +12,8 @@
  
  CFILES = xfs_log_recover.c util.c
@@ -82,27 +56,25 @@ that we do not want.
  # don't want to link xfs_repair with a debug libxlog.
  DEBUG = -DNDEBUG
  
-@@ -19,6 +21,11 @@
+@@ -19,6 +21,9 @@
  
  include $(BUILDRULES)
  
--install install-dev install-qa: default
+-install install-dev: default
 +install: default
 +
 +install-dev: default
 +	$(INSTALL_LTLIB_DEV)
-+
-+install-qa: default
  
  -include .ltdep
---- xfsprogs-3.2.2/Makefile
-+++ xfsprogs-3.2.2/Makefile
-@@ -63,6 +63,8 @@
- mkfs: libxfs
+--- xfsprogs-4.2.0/Makefile
++++ xfsprogs-4.2.0/Makefile
+@@ -81,6 +81,8 @@
+ io: libxcmd libhandle
  quota: libxcmd
- repair: libxfs libxlog
+ repair: libxlog
 +libxlog: libxfs
 +libxlog-install-dev: libxfs-install-dev
  
- ifneq ($(ENABLE_BLKID), yes)
- mkfs: libdisk
+ 
+ ifeq ($(HAVE_BUILDDEFS), yes)
diff --git a/pkgs/tools/filesystems/xfsprogs/default.nix b/pkgs/tools/filesystems/xfsprogs/default.nix
index 52e1ed7c28f..e30f67af3e9 100644
--- a/pkgs/tools/filesystems/xfsprogs/default.nix
+++ b/pkgs/tools/filesystems/xfsprogs/default.nix
@@ -1,28 +1,27 @@
 { stdenv, fetchurl, gettext, libuuid, readline }:
 
 stdenv.mkDerivation rec {
-  name = "xfsprogs-3.2.2";
+  name = "xfsprogs-4.2.0";
 
   src = fetchurl {
     urls = map (dir: "ftp://oss.sgi.com/projects/xfs/${dir}/${name}.tar.gz")
       [ "cmd_tars" "previous" ];
-    sha256 = "1aszsqz7gkqdagads18ybslbfkyxq893rykmsz9lm7f33pi5qlhs";
+    sha256 = "0q2j1rrh37kqyihaq5lc31xdi36lgg9asidaad0fada61ynv3six";
   };
 
   prePatch = ''
-    sed -i s,/bin/bash,`type -P bash`,g install-sh
-    sed -i s,ldconfig,`type -P ldconfig`,g configure m4/libtool.m4
+    sed -i "s,/bin/bash,$(type -P bash),g" install-sh
+    sed -i "s,ldconfig,$(type -P ldconfig),g" configure m4/libtool.m4
 
     # Fixes from gentoo 3.2.1 ebuild
     sed -i "/^PKG_DOC_DIR/s:@pkg_name@:${name}:" include/builddefs.in
-    sed -i '1iLLDFLAGS = -static' {estimate,fsr}/Makefile
-    sed -i "/LLDFLAGS/s:-static::" $(find -name Makefile)
+    sed -i "/LLDFLAGS.*libtool-libs/d" $(find -name Makefile)
     sed -i '/LIB_SUBDIRS/s:libdisk::' Makefile
   '';
 
   patches = [
-    # This patch fixes shared libs installation, still not fixed in 3.2.2
-    ./xfsprogs-3.2.2-sharedlibs.patch
+    # This patch fixes shared libs installation, still not fixed in 4.2.0
+    ./4.2.0-sharedlibs.patch
   ];
 
   buildInputs = [ gettext libuuid readline ];
diff --git a/pkgs/tools/filesystems/xtreemfs/default.nix b/pkgs/tools/filesystems/xtreemfs/default.nix
index 81be62b5159..8f090c29781 100644
--- a/pkgs/tools/filesystems/xtreemfs/default.nix
+++ b/pkgs/tools/filesystems/xtreemfs/default.nix
@@ -1,80 +1,65 @@
-x@{builderDefsPackage
-  , boost, fuse, openssl, cmake, attr, jdk, ant, which, python, file
-  , ...}:
-builderDefsPackage
-(a :  
-let 
-  helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++ 
-    [];
-
-  buildInputs = map (n: builtins.getAttr n x)
-    (builtins.attrNames (builtins.removeAttrs x helperArgNames));
-  sourceInfo = rec {
-    baseName="XtreemFS";
-    version="1.4";
-    name="${baseName}-${version}";
-    url="http://xtreemfs.googlecode.com/files/${name}.tar.gz";
-    hash="1hzd6anplxdcl4cg6xwriqk9b34541r7ah1ab2xavv149a2ll25s";
-  };
-in
-rec {
-  src = a.fetchurl {
-    url = sourceInfo.url;
-    sha256 = sourceInfo.hash;
+{ stdenv, boost, fuse, openssl, cmake, attr, jdk, ant, which, file, python
+, fetchurl, lib, valgrind, makeWrapper, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  src = fetchFromGitHub {
+    # using unstable release because stable (v1.5.1) has broken repl java plugin
+    rev = "7ddcb081aa125b0cfb008dc98addd260b8353ab3";
+    owner = "xtreemfs";
+    repo = "xtreemfs";
+    sha256 = "1hjmd32pla27zf98ghzz6r5ml8ry86m9dsryv1z01kxv5l95b3m0";
   };
 
-  inherit (sourceInfo) name version;
-  inherit buildInputs;
+  name = "XtreemFS-${version}";
+  version = "1.5.1.81";
+
+  buildInputs = [ which attr makeWrapper python ];
+
+  preConfigure = ''
+    export JAVA_HOME=${jdk}
+    export ANT_HOME=${ant}
+
+    export BOOST_INCLUDEDIR=${boost.dev}/include
+    export BOOST_LIBRARYDIR=${boost.lib}/lib
+    export OPENSSL_ROOT_DIR=${openssl}
+
+    substituteInPlace cpp/cmake/FindValgrind.cmake \
+      --replace "/usr/local" "${valgrind}"
+
+    substituteInPlace cpp/CMakeLists.txt \
+      --replace '"/lib64" "/usr/lib64"' '"${attr}/lib" "${fuse}/lib"'
+
+    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${fuse}/include"
+    export NIX_CFLAGS_LINK="$NIX_CFLAGS_LINK -L${fuse}/lib"
+
+    export DESTDIR=$out
 
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["setVars" "fixMakefile" "doMakeInstall" "fixInterpreterBin"
-    "fixInterpreterEtc"
-    "usrIsOut"];
+    substituteInPlace Makefile \
+      --replace "/usr/share/" "/share/" \
+      --replace 'BIN_DIR=$(DESTDIR)/usr/bin' "BIN_DIR=$out/bin"
 
-  setVars = a.noDepEntry ''
-    export JAVA_HOME="${jdk}"
-    export ANT_HOME="${ant}"
-    export CMAKE_HOME=${cmake}
+    substituteInPlace etc/init.d/generate_initd_scripts.sh \
+      --replace "/bin/bash" "${stdenv.shell}"
+
+    # do not put cmake into buildInputs
+    export PATH="$PATH:${cmake}/bin"
+  '';
+
+  preBuild = ''
+    substituteInPlace configure \
+    --replace "/usr/bin/file" "${file}/bin/file"
+  '';
+
+  doCheck = false;
+
+  postInstall = ''
+    rm -r $out/sbin
   '';
 
-  fixMakefile = a.fullDepEntry ''
-    sed -e 's@DESTDIR)/usr@DESTDIR)@g' -i Makefile
-
-    sed -e 's@/usr/bin/@@g' -i cpp/thirdparty/protobuf-*/configure
-    sed -e 's@/usr/bin/@@g' -i cpp/thirdparty/protobuf-*/gtest/configure
-    sed -e 's@/usr/bin/@@g' -i cpp/thirdparty/gtest-*/configure
-  '' ["doUnpack" "minInit"];
-
-  fixInterpreterBin = a.doPatchShebangs "$out/bin";
-  fixInterpreterEtc = a.doPatchShebangs "$out/etc/xos/xtreemfs";
-
-  usrIsOut = a.fullDepEntry ''
-    sed -e "s@/usr/@$out/@g" -i \
-      "$out"/{bin/xtfs_*,etc/xos/xtreemfs/*.*,etc/xos/xtreemfs/*/*,etc/init.d/*}
-    sed -e "s@JAVA_HOME=/usr@JAVA_HOME=${jdk}@g" -i \
-      "$out"/{bin/xtfs_*,etc/init.d/*}
-  '' ["minInit"];
-
-  makeFlags = [
-    ''DESTDIR="$out"''
-    ''SHELL="${a.stdenv.shell}"''
-  ];
-      
   meta = {
     description = "A distributed filesystem";
-    maintainers = with a.lib.maintainers;
-    [
-      raskin
-    ];
-    platforms = with a.lib.platforms;
-      linux;
-    license = a.lib.licenses.bsd3;
-    broken = true;
+    maintainers = with lib.maintainers; [ raskin matejc ];
+    platforms = lib.platforms.linux;
+    license = lib.licenses.bsd3;
   };
-  passthru = {
-    updateInfo = {
-      downloadPage = "http://xtreemfs.org/download_sources.php";
-    };
-  };
-}) x
-
+}
diff --git a/pkgs/tools/filesystems/yandex-disk/default.nix b/pkgs/tools/filesystems/yandex-disk/default.nix
index eb308f9de4f..97d70d1a45b 100644
--- a/pkgs/tools/filesystems/yandex-disk/default.nix
+++ b/pkgs/tools/filesystems/yandex-disk/default.nix
@@ -6,18 +6,18 @@ let
   p = if stdenv.is64bit then {
       arch = "x86_64";
       gcclib = "${stdenv.cc.cc}/lib64";
-      sha256 = "061kl186vllqhl1443d9cwvp4qdhqc42yf3x72a1w0bjvn0i3z1i";
+      sha256 = "08mmjz061b0hrqp8zg31w089n5bk3sq4r3w84zr33d8pnvkgq2wk";
     }
     else {
       arch = "i386";
       gcclib = "${stdenv.cc.cc}/lib";
-      sha256 = "1l9mxlin41w83dn70cvdk1n1vn1dll3d8r120jkqn5jfhicrgvv3";
+      sha256 = "1zb6cnldd43nr4k2qg9hnrkgj0iik2gpxqrjypbhwv75hnvjma93";
     };
 in 
 stdenv.mkDerivation rec {
 
   name = "yandex-disk-${version}";
-  version = "0.1.5.870";
+  version = "0.1.5.905";
 
   src = fetchurl {
     url = "http://repo.yandex.ru/yandex-disk/rpm/stable/${p.arch}/${name}-1.fedora.${p.arch}.rpm";
@@ -49,8 +49,8 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = http://help.yandex.com/disk/cli-clients.xml;
-    description = "Yandex.Disk is a free cloud file storage service";
-    maintainers = with stdenv.lib.maintainers; [smironov];
+    description = "A free cloud file storage service";
+    maintainers = with stdenv.lib.maintainers; [ smironov jagajaga ];
     platforms = ["i686-linux" "x86_64-linux"];
     license = stdenv.lib.licenses.unfree;
     longDescription = ''