diff --git a/pkgs/development/libraries/armadillo/default.nix b/pkgs/development/libraries/armadillo/default.nix
index 8d904efe0d66..937275b6528a 100644
--- a/pkgs/development/libraries/armadillo/default.nix
+++ b/pkgs/development/libraries/armadillo/default.nix
@@ -1,23 +1,26 @@
-{stdenv, fetchurl, cmake, pkgconfig, atlas, blas, openblas}:
+{ stdenv, fetchurl, cmake, openblasCompat, superlu, hdf5 }:
 
 stdenv.mkDerivation rec {
-  version = "7.200.1b";
+  version = "7.200.2";
   name = "armadillo-${version}";
-  
+
   src = fetchurl {
-    url = "http://sourceforge.net/projects/arma/files/armadillo-${version}.tar.xz";
-    sha256 = "00s8xrywc4aipipq1zpd6q9gzqmsiv8cwd25zvb1csrpninmidvc";
+    url = "mirror://sourceforge/arma/armadillo-${version}.tar.xz";
+    sha256 = "1yvx75caks477jqwx5gspi6946jialddk00wdvg6dnh5wdi2xasm";
   };
 
-  unpackCmd = [ "tar -xf ${src}" ];
-  
-  nativeBuildInputs = [ cmake atlas blas openblas ];
+  buildInputs = [ cmake openblasCompat superlu hdf5 ];
+
+  cmakeFlags = [ "-DDETECT_HDF5=ON" ];
+
+  patches = [ ./use-unix-config-on-OS-X.patch
+              ./use-OpenBLAS-as-LAPACK.patch ];
   
   meta = with stdenv.lib; {
     description = "C++ linear algebra library";
-    homepage = "http://arma.sourceforge.net" ;
+    homepage = http://arma.sourceforge.net;
     license = licenses.mpl20;
-    platforms = stdenv.lib.platforms.linux ;
-    maintainers = [ stdenv.lib.maintainers.juliendehos ];
+    platforms = platforms.unix;
+    maintainers = [ maintainers.juliendehos ];
   };
 }
diff --git a/pkgs/development/libraries/armadillo/use-OpenBLAS-as-LAPACK.patch b/pkgs/development/libraries/armadillo/use-OpenBLAS-as-LAPACK.patch
new file mode 100644
index 000000000000..e4c77d2cc2e3
--- /dev/null
+++ b/pkgs/development/libraries/armadillo/use-OpenBLAS-as-LAPACK.patch
@@ -0,0 +1,14 @@
+diff --git a/cmake_aux/Modules/ARMA_FindLAPACK.cmake b/cmake_aux/Modules/ARMA_FindLAPACK.cmake
+index 5395afb..a203c93 100644
+--- a/cmake_aux/Modules/ARMA_FindLAPACK.cmake
++++ b/cmake_aux/Modules/ARMA_FindLAPACK.cmake
+@@ -5,7 +5,7 @@
+ # also defined, but not for general use are
+ #  LAPACK_LIBRARY, where to find the LAPACK library.
+ 
+-SET(LAPACK_NAMES ${LAPACK_NAMES} lapack)
++SET(LAPACK_NAMES ${LAPACK_NAMES} openblas)
+ FIND_LIBRARY(LAPACK_LIBRARY
+   NAMES ${LAPACK_NAMES}
+   PATHS /usr/lib64/atlas /usr/lib/atlas /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib
+
diff --git a/pkgs/development/libraries/armadillo/use-unix-config-on-OS-X.patch b/pkgs/development/libraries/armadillo/use-unix-config-on-OS-X.patch
new file mode 100644
index 000000000000..b6fdddcaf2da
--- /dev/null
+++ b/pkgs/development/libraries/armadillo/use-unix-config-on-OS-X.patch
@@ -0,0 +1,11 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -84,7 +84,7 @@ message(STATUS "DETECT_HDF5                = ${DETECT_HDF5}"               )
+ ##
+ ## Find LAPACK and BLAS libraries, or their optimised versions
+ ##
+-
++set(APPLE false)
+ if(APPLE)
+   
+   set(ARMA_OS macos)