summary refs log tree commit diff
path: root/pkgs/os-specific/linux/zfs/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/os-specific/linux/zfs/default.nix')
-rw-r--r--pkgs/os-specific/linux/zfs/default.nix53
1 files changed, 53 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/zfs/default.nix b/pkgs/os-specific/linux/zfs/default.nix
new file mode 100644
index 000000000000..cbb8f30e1b32
--- /dev/null
+++ b/pkgs/os-specific/linux/zfs/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchurl, kernel, spl, perl, zlib, libuuid, coreutils, utillinux }:
+
+stdenv.mkDerivation {
+  name = "zfs-0.6.0-rc11";
+  src = fetchurl {
+    url = http://github.com/downloads/zfsonlinux/zfs/zfs-0.6.0-rc11.tar.gz;
+    sha256 = "0wx0srn2k31j9xdk3nvk7l847r0diyb7ph6hd006ax9l5p9zj0a7";
+  };
+
+  patches = [ ./module_perm_prefix.patch ./mount_zfs_prefix.patch ./kerneldir_path.patch ./no_absolute_paths_to_coreutils.patch ];
+
+  buildInputs = [ kernel spl perl zlib libuuid coreutils ];
+
+  NIX_CFLAGS_COMPILE = "-I${kernel}/lib/modules/${kernel.modDirVersion}/build/include/generated";
+
+  preConfigure = ''
+    substituteInPlace ./module/zfs/zfs_ctldir.c  --replace "umount -t zfs"   "${utillinux}/bin/umount -t zfs"
+    substituteInPlace ./module/zfs/zfs_ctldir.c  --replace "mount -t zfs"    "${utillinux}/bin/mount -t zfs"
+    substituteInPlace ./udev/rules.d/*           --replace "/lib/udev/vdev_id" "$out/lib/udev/vdev_id"
+  '';
+
+  configureFlags = ''
+    --with-linux=${kernel}/lib/modules/${kernel.version}/build 
+    --with-linux-obj=${kernel}/lib/modules/${kernel.version}/build 
+    --with-spl=${spl}/libexec/spl/${kernel.version}
+  '';
+
+  meta = {
+    description = "ZFS Filesystem Linux Kernel module";
+    longDescription = ''
+
+      ZFS is a filesystem that combines a logical volume manager with a
+      Copy-On-Write filesystem with data integrity detection and repair,
+      snapshotting, cloning, block devices, deduplication, and more. 
+
+      LICENSE NOTE: the Linux kernel is licensed under the GNU General Public
+      License which is incompatible with ZFS which is licensed under the Sun CDDL.
+      While both the GPL and CDDL are open source licenses their terms are such that
+      it is impossible to simultaneously satisfy both licenses. This means that a
+      single derived work of the Linux kernel and ZFS cannot be legally distributed.
+
+      The ZFS code can be modified to build as a CDDL licensed kernel module
+      which is not distributed as part of the Linux kernel. This makes a Native ZFS
+      on Linux implementation possible if you are willing to download and build it
+      yourself.
+      '';
+          
+    homepage = http://zfsonlinux.org/;
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.cddl;
+    maintainers = with stdenv.lib.maintainers; [ jcumming ];
+  };
+}