about summary refs log tree commit diff
path: root/pkgs/os-specific
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2016-05-05 08:18:44 +0200
committerVladimír Čunát <vcunat@gmail.com>2016-05-05 08:25:38 +0200
commit7a005601d48f760864258e369364b3b847d4e9fd (patch)
treefb562597c59110eb319e9cd8f484280fcf587433 /pkgs/os-specific
parent7d7a9df3605c86e17bced51afe67eecd43f99754 (diff)
parentdf310048e5f4a516663bf8c5a74029b54813a7f3 (diff)
downloadnixlib-7a005601d48f760864258e369364b3b847d4e9fd.tar
nixlib-7a005601d48f760864258e369364b3b847d4e9fd.tar.gz
nixlib-7a005601d48f760864258e369364b3b847d4e9fd.tar.bz2
nixlib-7a005601d48f760864258e369364b3b847d4e9fd.tar.lz
nixlib-7a005601d48f760864258e369364b3b847d4e9fd.tar.xz
nixlib-7a005601d48f760864258e369364b3b847d4e9fd.tar.zst
nixlib-7a005601d48f760864258e369364b3b847d4e9fd.zip
Merge branch 'master' to resolve conflicts
Diffstat (limited to 'pkgs/os-specific')
-rw-r--r--pkgs/os-specific/darwin/apple-sdk/default.nix24
-rw-r--r--pkgs/os-specific/darwin/apple-sdk/frameworks.nix2
-rw-r--r--pkgs/os-specific/darwin/cf-private/setup-hook.sh2
-rw-r--r--pkgs/os-specific/linux/acpid/default.nix15
-rw-r--r--pkgs/os-specific/linux/android-udev-rules/default.nix6
-rw-r--r--pkgs/os-specific/linux/blktrace/default.nix23
-rw-r--r--pkgs/os-specific/linux/consoletools/default.nix5
-rw-r--r--pkgs/os-specific/linux/dietlibc/builder.sh36
-rw-r--r--pkgs/os-specific/linux/dietlibc/default.nix43
-rw-r--r--pkgs/os-specific/linux/dietlibc/dns64.patch109
-rw-r--r--pkgs/os-specific/linux/dietlibc/no-wchar.patch77
-rw-r--r--pkgs/os-specific/linux/dietlibc/pc.patch78
-rw-r--r--pkgs/os-specific/linux/dietlibc/x86_64-lseek64.patch6
-rw-r--r--pkgs/os-specific/linux/dpdk/default.nix41
-rwxr-xr-xpkgs/os-specific/linux/e3cfsprogs/builder.sh14
-rw-r--r--pkgs/os-specific/linux/e3cfsprogs/default.nix20
-rw-r--r--pkgs/os-specific/linux/e3cfsprogs/e3cfsprogs-1.39_bin_links.patch111
-rw-r--r--pkgs/os-specific/linux/e3cfsprogs/e3cfsprogs-1.39_etc.patch27
-rw-r--r--pkgs/os-specific/linux/fatrace/default.nix6
-rw-r--r--pkgs/os-specific/linux/firmware/rtl8723bs-firmware/default.nix21
-rw-r--r--pkgs/os-specific/linux/ifplugd/interface.patch13
-rw-r--r--pkgs/os-specific/linux/iw/default.nix4
-rw-r--r--pkgs/os-specific/linux/kernel-headers-cross/builder.sh31
-rw-r--r--pkgs/os-specific/linux/kernel-headers-cross/default.nix13
-rw-r--r--pkgs/os-specific/linux/kernel/common-config.nix3
-rw-r--r--pkgs/os-specific/linux/kernel/grsecurity-path-4.5.patch14
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.4.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-grsecurity-4.4.nix2
-rw-r--r--pkgs/os-specific/linux/kernel/linux-grsecurity-4.5.nix (renamed from pkgs/os-specific/linux/kernel/linux-grsecurity-4.1.nix)6
-rw-r--r--pkgs/os-specific/linux/kernel/linux-testing.nix6
-rw-r--r--pkgs/os-specific/linux/kernel/manual-config.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/patches.nix27
-rw-r--r--pkgs/os-specific/linux/libnl/default.nix6
-rw-r--r--pkgs/os-specific/linux/lsb-release/default.nix27
-rw-r--r--pkgs/os-specific/linux/mdadm/default.nix4
-rw-r--r--pkgs/os-specific/linux/module-init-tools/default.nix38
-rw-r--r--pkgs/os-specific/linux/module-init-tools/docbook2man.patch12
-rw-r--r--pkgs/os-specific/linux/module-init-tools/module-dir.patch161
-rw-r--r--pkgs/os-specific/linux/open-iscsi/default.nix36
-rw-r--r--pkgs/os-specific/linux/open-isns/default.nix25
-rw-r--r--pkgs/os-specific/linux/pam_devperm/default.nix12
-rw-r--r--pkgs/os-specific/linux/pcmciautils/default.nix6
-rw-r--r--pkgs/os-specific/linux/pm-utils/default.nix4
-rw-r--r--pkgs/os-specific/linux/procps/default.nix30
-rw-r--r--pkgs/os-specific/linux/procps/gnumake3.82.patch13
-rw-r--r--pkgs/os-specific/linux/procps/linux-ver-init.patch23
-rw-r--r--pkgs/os-specific/linux/procps/makefile.patch71
-rw-r--r--pkgs/os-specific/linux/procps/procps-build.patch50
-rw-r--r--pkgs/os-specific/linux/rtl8723bs/default.nix51
-rw-r--r--pkgs/os-specific/linux/sdparm/default.nix9
-rw-r--r--pkgs/os-specific/linux/tomb/default.nix41
51 files changed, 326 insertions, 1086 deletions
diff --git a/pkgs/os-specific/darwin/apple-sdk/default.nix b/pkgs/os-specific/darwin/apple-sdk/default.nix
index c18d3f6cc6d3..c1e09c201114 100644
--- a/pkgs/os-specific/darwin/apple-sdk/default.nix
+++ b/pkgs/os-specific/darwin/apple-sdk/default.nix
@@ -66,7 +66,18 @@ let
         mkdir -p "$dest"
         pushd "$dest" >/dev/null
 
-        cp -R "${sdk}/Library/Frameworks/$path/Versions/$current/Headers" .
+        # Keep track of if this is a child or a child rescue as with
+        # ApplicationServices in the 10.9 SDK
+        local isChild
+
+        if [ -d "${sdk}/Library/Frameworks/$path/Versions/$current/Headers" ]; then
+          isChild=1
+          cp -R "${sdk}/Library/Frameworks/$path/Versions/$current/Headers" .
+        else
+          isChild=0
+          current="$(readlink "/System/Library/Frameworks/$name.framework/Versions/Current")"
+          cp -R "${sdk}/Library/Frameworks/$name.framework/Versions/$current/Headers" .
+        fi
         ln -s -L "/System/Library/Frameworks/$path/Versions/$current/$name"
         ln -s -L "/System/Library/Frameworks/$path/Versions/$current/Resources"
 
@@ -74,8 +85,17 @@ let
           ln -s "/System/Library/Frameworks/$path/module.map"
         fi
 
-        pushd "${sdk}/Library/Frameworks/$path/Versions/$current" >/dev/null
+        if [ $isChild -eq 1 ]; then
+          pushd "${sdk}/Library/Frameworks/$path/Versions/$current" >/dev/null
+        else
+          pushd "${sdk}/Library/Frameworks/$name.framework/Versions/$current" >/dev/null
+        fi
         local children=$(echo Frameworks/*.framework)
+        if [ "$name" == "ApplicationServices" ]; then
+          # Fixing up ApplicationServices which is missing
+          # CoreGraphics in the 10.9 SDK
+          children="$children Frameworks/CoreGraphics.framework"
+        fi
         popd >/dev/null
 
         for child in $children; do
diff --git a/pkgs/os-specific/darwin/apple-sdk/frameworks.nix b/pkgs/os-specific/darwin/apple-sdk/frameworks.nix
index 750adfe3cbf4..3ecb35114220 100644
--- a/pkgs/os-specific/darwin/apple-sdk/frameworks.nix
+++ b/pkgs/os-specific/darwin/apple-sdk/frameworks.nix
@@ -48,7 +48,7 @@ with frameworks; with libs; {
   ForceFeedback           = [ CF IOKit ];
   Foundation              = [ CF libobjc Security ApplicationServices SystemConfiguration ];
   GLKit                   = [ CF ];
-  GLUT                    = [ GL OpenGL ];
+  GLUT                    = [ OpenGL ];
   GSS                     = [];
   GameController          = [];
   GameKit                 = [ Foundation ];
diff --git a/pkgs/os-specific/darwin/cf-private/setup-hook.sh b/pkgs/os-specific/darwin/cf-private/setup-hook.sh
index 7594c07977b9..ae9ed5d15845 100644
--- a/pkgs/os-specific/darwin/cf-private/setup-hook.sh
+++ b/pkgs/os-specific/darwin/cf-private/setup-hook.sh
@@ -1,5 +1,5 @@
 prependSearchPath() {
-  NIX_CFLAGS_COMPILE="-F@out@/Library/Frameworks ${NIX_CFLAGS_COMPILE/"-F@out@/Library/Frameworks"/}"
+  NIX_CFLAGS_COMPILE="-F@out@/Library/Frameworks ${NIX_CFLAGS_COMPILE}"
 }
 
 linkWithRealCF() {
diff --git a/pkgs/os-specific/linux/acpid/default.nix b/pkgs/os-specific/linux/acpid/default.nix
index 1746c938444a..aa8b25560e6a 100644
--- a/pkgs/os-specific/linux/acpid/default.nix
+++ b/pkgs/os-specific/linux/acpid/default.nix
@@ -1,21 +1,18 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "acpid-2.0.25";
+  name = "acpid-2.0.27";
 
   src = fetchurl {
     url = "mirror://sourceforge/acpid2/${name}.tar.xz";
-    sha256 = "0s2wg84x6pnrkf7i7lpzw2rilq4mj50vwb7p2b2n5hdyfa00lw0b";
+    sha256 = "05m6scbdzi2fb8zzi01c11a10pr0qb1gzccz4bbxj4fcacz24342";
   };
 
-  preBuild = ''
-    makeFlagsArray=(BINDIR=$out/bin SBINDIR=$out/sbin MAN8DIR=$out/share/man/man8)
-  '';
-
-  meta = {
+  meta = with stdenv.lib; {
     homepage = http://tedfelix.com/linux/acpid-netlink.html;
     description = "A daemon for delivering ACPI events to userspace programs";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ nckx ];
   };
 }
diff --git a/pkgs/os-specific/linux/android-udev-rules/default.nix b/pkgs/os-specific/linux/android-udev-rules/default.nix
index 5e3fb1c2ba03..be2b8026817a 100644
--- a/pkgs/os-specific/linux/android-udev-rules/default.nix
+++ b/pkgs/os-specific/linux/android-udev-rules/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   name = "android-udev-rules-${version}";
-  version = "2016-03-03";
+  version = "2016-04-26";
 
   src = fetchFromGitHub {
     owner = "M0Rf30";
     repo = "android-udev-rules";
-    rev = "a6ec1239173bfbe2082211261528e834af9fbb64";
-    sha256 = "11g7m8jjxxzyrbsd9g7cbk6bwy3c4f76pdy4lvdx68xrbsl2rvmj";
+    rev = "9af6e552016392db35191142b599a5199cf8a9fa";
+    sha256 = "1lvh7md6qz91q8jy9phnfxlb19s104lvsk75a5r07d8bjc4w9pxb";
   };
 
   installPhase = ''
diff --git a/pkgs/os-specific/linux/blktrace/default.nix b/pkgs/os-specific/linux/blktrace/default.nix
new file mode 100644
index 000000000000..3871630758cf
--- /dev/null
+++ b/pkgs/os-specific/linux/blktrace/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, libaio }:
+
+stdenv.mkDerivation {
+  name = "blktrace-1.1.0";
+
+  # Official source
+  # "git://git.kernel.org/pub/scm/linux/kernel/git/axboe/blktrace.git"
+  src = fetchurl {
+    url = "http://brick.kernel.dk/snaps/blktrace-1.1.0.tar.bz2";
+    sha256 = "15cj9aki7z5i5y6bnchqry6yp40r4lmgmam6ar5gslnx0smgm8jl";
+  };
+
+  buildInputs = [ libaio ];
+
+  preConfigure = ''
+    sed s,/usr/local,$out, -i Makefile
+  '';
+
+  meta = {
+    description = "Block layer IO tracing mechanism";
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/os-specific/linux/consoletools/default.nix b/pkgs/os-specific/linux/consoletools/default.nix
index 0a7997755514..b9f1ee90fe95 100644
--- a/pkgs/os-specific/linux/consoletools/default.nix
+++ b/pkgs/os-specific/linux/consoletools/default.nix
@@ -10,14 +10,17 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs = [ SDL ];
+
   makeFlags = [ "DESTDIR=$(out)"];
 
+  installFlags = ''PREFIX=""'';
+
   meta = with stdenv.lib; {
     homepage = https://sourceforge.net/projects/linuxconsole/;
     description = "A set of tools for joysticks and serial peripherals";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ pSub ];
+    maintainers = with maintainers; [ pSub ebzzry ];
 
     longDescription = ''
       The included tools are:
diff --git a/pkgs/os-specific/linux/dietlibc/builder.sh b/pkgs/os-specific/linux/dietlibc/builder.sh
deleted file mode 100644
index ee0cb2b7522b..000000000000
--- a/pkgs/os-specific/linux/dietlibc/builder.sh
+++ /dev/null
@@ -1,36 +0,0 @@
-source $stdenv/setup
-
-makeFlags="prefix=$out"
-installFlags="prefix=$out"
-
-postInstall() {
-    (cd $out && ln -s lib-* lib)
-    (cd $out/lib && ln -s start.o crt1.o)
-
-    # Fake crti.o and crtn.o.
-    touch empty.c
-    gcc -c empty.c -o $out/lib/crti.o
-    gcc -c empty.c -o $out/lib/crtn.o
-
-    # Copy <sys/user.h> from Glibc; binutils wants it.
-    cp $glibc/include/sys/user.h $out/include/sys/
-
-    # Remove <dlfcn.h>, it makes some packages think we can load
-    # dynamic libraries.
-    rm $out/include/dlfcn.h
-
-    # Dietlibc has a asm include directory, whose presence makes the
-    # asm directory of kernel-headers unreachable.  So make symlinks
-    # from the dietlibc asm to the kernel-headers asm.
-    ln -s $kernelHeaders/include/asm/* $out/include/asm/ || true
-
-    # Make asm-x86_64 etc. available.
-    for i in $kernelHeaders/include/asm-*; do
-        ln -s $i $out/include/
-    done
-
-    # Idem for include/linux.
-    ln -s $kernelHeaders/include/linux/* $out/include/linux/ || true
-}
-
-genericBuild
diff --git a/pkgs/os-specific/linux/dietlibc/default.nix b/pkgs/os-specific/linux/dietlibc/default.nix
deleted file mode 100644
index d98bfb967356..000000000000
--- a/pkgs/os-specific/linux/dietlibc/default.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{stdenv, fetchurl, glibc}:
-
-assert stdenv.isLinux;
-
-stdenv.mkDerivation {
-  name = "dietlibc-0.30";
-  src = fetchurl {
-    url = mirror://kernel/linux/libs/dietlibc/dietlibc-0.30.tar.bz2;
-    md5 = "2465d652fff6f1fad3da3b98e60e83c9";
-  };
-  builder = ./builder.sh;
-  
-  inherit glibc;
-  kernelHeaders = glibc.linuxHeaders;
-
-  patches = [
-
-    # dietlibc's sigcontext.h provides a macro called PC(), which is
-    # rather intrusive (e.g., binutils fails to compile because of
-    # it).  Rename it.
-    ./pc.patch
-
-    # wchar.h declares lots of functions that don't actually exist.
-    # Remove them.
-    ./no-wchar.patch
-
-    # Fix to get DNS resolution to work on 64-bit platforms.  Taken
-    # from 0.31 CVS.
-    ./dns64.patch
-
-    # Get lseek64 working on x86_64.  From
-    # http://svn.annvix.org/cgi-bin/viewvc.cgi/packages/releases/2.0-CURRENT/dietlibc/SOURCES
-    ./x86_64-lseek64.patch
-    #./x86_64-stat64.patch
-
-  ];
-
-  meta = {
-    homepage = http://www.fefe.de/dietlibc/;
-    description = "A small implementation of the C library";
-    license = "GPL";
-  };
-}
diff --git a/pkgs/os-specific/linux/dietlibc/dns64.patch b/pkgs/os-specific/linux/dietlibc/dns64.patch
deleted file mode 100644
index 47d54d1d16b7..000000000000
--- a/pkgs/os-specific/linux/dietlibc/dns64.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-Only in dietlibc-0.30: CHANGES.orig
-diff -rc dietlibc-0.30-orig/libcruft/dnscruft2.c dietlibc-0.30/libcruft/dnscruft2.c
-*** dietlibc-0.30-orig/libcruft/dnscruft2.c	2005-05-01 22:08:25.000000000 +0200
---- dietlibc-0.30/libcruft/dnscruft2.c	2007-01-22 15:32:18.000000000 +0100
-***************
-*** 5,11 ****
-  #include <netdb.h>
-  #include <stdlib.h>
-  #include <arpa/inet.h>
-- #include <sys/poll.h>
-  #include <unistd.h>
-  #include <errno.h>
-  #include <arpa/nameser.h>
---- 5,10 ----
-diff -rc dietlibc-0.30-orig/libcruft/dnscruft.c dietlibc-0.30/libcruft/dnscruft.c
-*** dietlibc-0.30-orig/libcruft/dnscruft.c	2006-06-18 20:32:35.000000000 +0200
---- dietlibc-0.30/libcruft/dnscruft.c	2007-01-22 15:32:18.000000000 +0100
-***************
-*** 45,53 ****
-    tmp=socket(PF_INET6,SOCK_DGRAM,IPPROTO_UDP);
-    if (tmp<0) return;
-    fcntl(tmp,F_SETFD,FD_CLOEXEC);
-    si.sin6_family=AF_INET6;
--   si.sin6_port=0;
--   memset(&si.sin6_addr,0,16);
-    if (bind(tmp,(struct sockaddr*)&si,sizeof(si))) return;
-    __dns_fd6=tmp;
-  }
---- 45,52 ----
-    tmp=socket(PF_INET6,SOCK_DGRAM,IPPROTO_UDP);
-    if (tmp<0) return;
-    fcntl(tmp,F_SETFD,FD_CLOEXEC);
-+   memset(&si,0,sizeof(si));
-    si.sin6_family=AF_INET6;
-    if (bind(tmp,(struct sockaddr*)&si,sizeof(si))) return;
-    __dns_fd6=tmp;
-  }
-diff -rc dietlibc-0.30-orig/libcruft/res_mkquery.c dietlibc-0.30/libcruft/res_mkquery.c
-*** dietlibc-0.30-orig/libcruft/res_mkquery.c	2004-11-10 18:45:17.000000000 +0100
---- dietlibc-0.30/libcruft/res_mkquery.c	2007-01-22 15:32:18.000000000 +0100
-***************
-*** 42,51 ****
-  int res_mkquery(int op, const char *dname, int class, int type, char* data,
-  		int datalen, const unsigned char* newrr, char* buf, int buflen) {
-    unsigned char packet[512];
-!   unsigned long len=0;
-!   memmove(packet,dnspacket,12);
-    if ((_res.options&RES_RECURSE)==0) packet[2]=0;
--   *(unsigned short*)packet=rand();
-    {
-      unsigned char* x;
-      const char* y,* tmp;
---- 42,55 ----
-  int res_mkquery(int op, const char *dname, int class, int type, char* data,
-  		int datalen, const unsigned char* newrr, char* buf, int buflen) {
-    unsigned char packet[512];
-!   unsigned long len;
-! 
-!   memcpy(packet,dnspacket,12);
-!   len=rand();
-!   packet[0]=len;
-!   packet[1]=len>>8;
-!   len=0;
-    if ((_res.options&RES_RECURSE)==0) packet[2]=0;
-    {
-      unsigned char* x;
-      const char* y,* tmp;
-diff -rc dietlibc-0.30-orig/libcruft/res_query.c dietlibc-0.30/libcruft/res_query.c
-*** dietlibc-0.30-orig/libcruft/res_query.c	2005-10-14 17:37:59.000000000 +0200
---- dietlibc-0.30/libcruft/res_query.c	2007-01-22 15:32:18.000000000 +0100
-***************
-*** 99,105 ****
-  	duh[1].fd=pnpfd;
-        } else {
-  	duh[1].fd=-1;
-! 	duh[1].revents=0;
-        }
-  
-  #endif
---- 99,105 ----
-  	duh[1].fd=pnpfd;
-        } else {
-  	duh[1].fd=-1;
-! 	duh[1].events=0;
-        }
-  
-  #endif
-diff -rc dietlibc-0.30-orig/syscalls.s/__guard.S dietlibc-0.30/syscalls.s/__guard.S
-*** dietlibc-0.30-orig/syscalls.s/__guard.S	2006-04-07 17:33:20.000000000 +0200
---- dietlibc-0.30/syscalls.s/__guard.S	2007-01-22 15:32:18.000000000 +0100
-***************
-*** 1,3 ****
---- 1,4 ----
-+ #include <endian.h>
-  .data
-  .type __guard,@object
-  .global __guard
-***************
-*** 5,9 ****
---- 6,14 ----
-  .global __stack_chk_guard
-  __guard:
-  __stack_chk_guard:
-+ #if __WORDSIZE == 64
-+ .quad 0xaff00
-+ #else
-  .long 0xaff00
-+ #endif
-  
diff --git a/pkgs/os-specific/linux/dietlibc/no-wchar.patch b/pkgs/os-specific/linux/dietlibc/no-wchar.patch
deleted file mode 100644
index 92be2cd2feaf..000000000000
--- a/pkgs/os-specific/linux/dietlibc/no-wchar.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-diff -rc dietlibc-0.30-orig/include/wchar.h dietlibc-0.30/include/wchar.h
-*** dietlibc-0.30-orig/include/wchar.h	2005-09-21 09:33:08.000000000 +0200
---- dietlibc-0.30/include/wchar.h	2006-10-20 15:04:04.000000000 +0200
-***************
-*** 30,99 ****
-    unsigned long sofar;
-  } mbstate_t;
-  
-- wint_t btowc(int);
-- wint_t fgetwc(FILE *);
-- wchar_t* fgetws(wchar_t *__restrict__, int, FILE *__restrict__);
-- wint_t fputwc(wchar_t, FILE *);
-- int fputws(const wchar_t *__restrict__, FILE *__restrict__);
-- int fwide(FILE *, int);
-- int fwprintf(FILE *__restrict__, const wchar_t *__restrict__, ...);
-- int fwscanf(FILE *__restrict__, const wchar_t *__restrict__, ...);
-- wint_t getwc(FILE *);
-- wint_t getwchar(void);
-- 
-- size_t mbrlen(const char *__restrict__, size_t, mbstate_t *__restrict__);
-- size_t mbrtowc(wchar_t *__restrict__, const char *__restrict__, size_t, mbstate_t *__restrict__);
-- int mbsinit(const mbstate_t *);
-- size_t mbsrtowcs(wchar_t *__restrict__, const char **__restrict__, size_t, mbstate_t *__restrict__);
-- wint_t putwc(wchar_t, FILE *);
-- wint_t putwchar(wchar_t);
-- int swprintf(wchar_t *__restrict__, size_t, const wchar_t *__restrict__, ...);
-- int swscanf(const wchar_t *__restrict__, const wchar_t *__restrict__, ...);
-- 
-- wint_t ungetwc(wint_t, FILE *);
-- int vfwprintf(FILE *__restrict__, const wchar_t *__restrict__, va_list);
-- int vfwscanf(FILE *__restrict__, const wchar_t *__restrict__, va_list);
-- int vwprintf(const wchar_t *__restrict__, va_list);
-- int vswprintf(wchar_t *__restrict__, size_t, const wchar_t *__restrict__, va_list);
-- int vswscanf(const wchar_t *__restrict__, const wchar_t *__restrict__, va_list);
-- int vwscanf(const wchar_t *__restrict__, va_list);
-- size_t wcrtomb(char *__restrict__, wchar_t, mbstate_t *__restrict__);
-- wchar_t *wcscat(wchar_t *__restrict__, const wchar_t *__restrict__);
-- wchar_t *wcschr(const wchar_t *, wchar_t);
-- int wcscmp(const wchar_t *, const wchar_t *);
-- int wcscoll(const wchar_t *, const wchar_t *);
-- wchar_t* wcscpy(wchar_t *__restrict__, const wchar_t *__restrict__);
-- size_t wcscspn(const wchar_t *, const wchar_t *);
-- size_t wcsftime(wchar_t *__restrict__, size_t, const wchar_t *__restrict__, const struct tm *__restrict__);
-- size_t wcslen(const wchar_t *) __pure;
-- wchar_t *wcsncat(wchar_t *__restrict__, const wchar_t *__restrict__, size_t);
-- int wcsncmp(const wchar_t *, const wchar_t *, size_t);
-- wchar_t *wcsncpy(wchar_t *__restrict__, const wchar_t *__restrict__, size_t);
-- wchar_t *wcspbrk(const wchar_t *, const wchar_t *);
-- wchar_t *wcsrchr(const wchar_t *, wchar_t);
-- size_t wcsrtombs(char *__restrict__, const wchar_t **__restrict__, size_t, mbstate_t *__restrict__);
-- size_t wcsspn(const wchar_t *, const wchar_t *);
-- wchar_t *wcsstr(const wchar_t *__restrict__, const wchar_t *__restrict__);
-- double wcstod(const wchar_t *__restrict__, wchar_t **__restrict__);
-- float wcstof(const wchar_t *__restrict__, wchar_t **__restrict__);
-- wchar_t *wcstok(wchar_t *__restrict__, const wchar_t *__restrict__, wchar_t **__restrict__);
-- long wcstol(const wchar_t *__restrict__, wchar_t **__restrict__, int);
-- long double wcstold(const wchar_t *__restrict__, wchar_t **__restrict__);
-- long long wcstoll(const wchar_t *__restrict__, wchar_t **__restrict__, int);
-- unsigned long wcstoul(const wchar_t *__restrict__, wchar_t **__restrict__, int);
-- unsigned long long wcstoull(const wchar_t *__restrict__, wchar_t **__restrict__, int);
-- 
-- size_t wcsxfrm(wchar_t *__restrict__, const wchar_t *__restrict__, size_t);
-- int wctob(wint_t);
-- 
-- wchar_t *wmemchr(const wchar_t *, wchar_t, size_t);
-- int wmemcmp(const wchar_t *, const wchar_t *, size_t);
-- wchar_t *wmemcpy(wchar_t *__restrict__, const wchar_t *__restrict__, size_t);
-- wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t);
-- wchar_t *wmemset(wchar_t *, wchar_t, size_t);
-- int wprintf(const wchar_t *__restrict__, ...);
-- int wscanf(const wchar_t *__restrict__, ...);
-- 
-  __END_DECLS
-  
-  #endif
---- 30,35 ----
-Only in dietlibc-0.30/include: wchar.h~
diff --git a/pkgs/os-specific/linux/dietlibc/pc.patch b/pkgs/os-specific/linux/dietlibc/pc.patch
deleted file mode 100644
index fd274d24f038..000000000000
--- a/pkgs/os-specific/linux/dietlibc/pc.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-diff -rc dietlibc-0.30-orig/include/asm/arm-sigcontext.h dietlibc-0.30/include/asm/arm-sigcontext.h
-*** dietlibc-0.30-orig/include/asm/arm-sigcontext.h	2002-05-09 03:05:10.000000000 +0200
---- dietlibc-0.30/include/asm/arm-sigcontext.h	2006-10-19 12:40:30.000000000 +0200
-***************
-*** 1,5 ****
-  
-! #define PC(ctx) (ctx.arm_pc)
-  
-  /*
-   * Signal context structure - contains all info to do with the state
---- 1,5 ----
-  
-! #define __DIETLIBC_PC(ctx) (ctx.arm_pc)
-  
-  /*
-   * Signal context structure - contains all info to do with the state
-diff -rc dietlibc-0.30-orig/include/asm/i386-sigcontext.h dietlibc-0.30/include/asm/i386-sigcontext.h
-*** dietlibc-0.30-orig/include/asm/i386-sigcontext.h	2005-09-21 09:33:08.000000000 +0200
---- dietlibc-0.30/include/asm/i386-sigcontext.h	2006-10-19 12:40:41.000000000 +0200
-***************
-*** 38,44 ****
-  };
-  
-  #define X86_FXSR_MAGIC		0x0000
-! #define PC(ctx) (ctx.eip)
-  
-  struct sigcontext {
-  	__u16         gs, __gsh;
---- 38,44 ----
-  };
-  
-  #define X86_FXSR_MAGIC		0x0000
-! #define __DIETLIBC_PC(ctx) (ctx.eip)
-  
-  struct sigcontext {
-  	__u16         gs, __gsh;
-diff -rc dietlibc-0.30-orig/include/asm/ia64-sigcontext.h dietlibc-0.30/include/asm/ia64-sigcontext.h
-*** dietlibc-0.30-orig/include/asm/ia64-sigcontext.h	2002-07-20 18:47:48.000000000 +0200
---- dietlibc-0.30/include/asm/ia64-sigcontext.h	2006-10-19 12:39:40.000000000 +0200
-***************
-*** 1,6 ****
-  #include <sys/ptrace.h>
-  
-! #define PC(ctx) (ctx.sc_ip)
-  
-  struct sigcontext {
-  	unsigned long		sc_flags;
---- 1,6 ----
-  #include <sys/ptrace.h>
-  
-! #define __DIETLIBC_PC(ctx) (ctx.sc_ip)
-  
-  struct sigcontext {
-  	unsigned long		sc_flags;
-diff -rc dietlibc-0.30-orig/profiling/profil.c dietlibc-0.30/profiling/profil.c
-*** dietlibc-0.30-orig/profiling/profil.c	2002-04-08 00:13:53.000000000 +0200
---- dietlibc-0.30/profiling/profil.c	2006-10-19 12:40:58.000000000 +0200
-***************
-*** 43,51 ****
-  static void
-  profiler (int signal, struct sigcontext ctx)
-  {
-! 	size_t s = PC(ctx)-low_pc;
-  	(void)signal;
-! 	if ((PC(ctx)) < low_pc) return;
-  	s >>= 1;
-  	if (s < maxhits)
-  		++buffer[s];
---- 43,51 ----
-  static void
-  profiler (int signal, struct sigcontext ctx)
-  {
-! 	size_t s = __DIETLIBC_PC(ctx)-low_pc;
-  	(void)signal;
-! 	if ((__DIETLIBC_PC(ctx)) < low_pc) return;
-  	s >>= 1;
-  	if (s < maxhits)
-  		++buffer[s];
diff --git a/pkgs/os-specific/linux/dietlibc/x86_64-lseek64.patch b/pkgs/os-specific/linux/dietlibc/x86_64-lseek64.patch
deleted file mode 100644
index 47187a310d2c..000000000000
--- a/pkgs/os-specific/linux/dietlibc/x86_64-lseek64.patch
+++ /dev/null
@@ -1,6 +0,0 @@
---- dietlibc-0.27/x86_64/lseek64.S.x86_64-lseek64	2005-03-29 08:46:09.074515293 -0500
-+++ dietlibc-0.27/x86_64/lseek64.S	2005-03-29 08:46:09.074515293 -0500
-@@ -0,0 +1,3 @@
-+#include "syscalls.h"
-+
-+syscall_weak(lseek,lseek64,__libc_lseek64)
diff --git a/pkgs/os-specific/linux/dpdk/default.nix b/pkgs/os-specific/linux/dpdk/default.nix
new file mode 100644
index 000000000000..7ca71a695e01
--- /dev/null
+++ b/pkgs/os-specific/linux/dpdk/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, lib, kernel, fetchurl }:
+
+assert lib.versionAtLeast kernel.version "3.18";
+
+stdenv.mkDerivation rec {
+  name = "dpdk-${version}-${kernel.version}";
+  version = "16.04";
+
+  src = fetchurl {
+    url = "http://dpdk.org/browse/dpdk/snapshot/dpdk-${version}.tar.gz";
+    sha256 = "0yrz3nnhv65v2jzz726bjswkn8ffqc1sr699qypc9m78qrdljcfn";
+  };
+
+  RTE_KERNELDIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
+  RTE_TARGET = "x86_64-native-linuxapp-gcc";
+
+  enableParallelBuilding = true;
+  outputs = [ "out" "examples" ];
+
+  buildPhase = ''
+    make T=x86_64-native-linuxapp-gcc config
+    make T=x86_64-native-linuxapp-gcc install
+    make T=x86_64-native-linuxapp-gcc examples
+  '';
+
+  installPhase = ''
+    mkdir $out
+    cp -pr x86_64-native-linuxapp-gcc/{app,lib,include,kmod} $out/
+
+    mkdir $examples
+    cp -pr examples/* $examples/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Set of libraries and drivers for fast packet processing";
+    homepage = http://dpdk.org/;
+    license = with licenses; [ lgpl21 gpl2 bsd2 ];
+    platforms =  [ "x86_64-linux" ];
+    maintainers = [ maintainers.iElectric ];
+  };
+}
diff --git a/pkgs/os-specific/linux/e3cfsprogs/builder.sh b/pkgs/os-specific/linux/e3cfsprogs/builder.sh
deleted file mode 100755
index c3352ec84ae3..000000000000
--- a/pkgs/os-specific/linux/e3cfsprogs/builder.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-source $stdenv/setup
-
-tar -zxvf $src
-cd e3cfsprogs*/
-
-mkdir build; 
-cd build;
-../configure --prefix=$out
-make
-#make check			#almost all checks fail... maybe they have to be done on a ext3cow fs ???
-make install
-
-#we must rename according to the manual of e3cfprogs
-cp misc/mke2fs $out/sbin/mkfs.ext3cow
diff --git a/pkgs/os-specific/linux/e3cfsprogs/default.nix b/pkgs/os-specific/linux/e3cfsprogs/default.nix
deleted file mode 100644
index ef25d59a9df5..000000000000
--- a/pkgs/os-specific/linux/e3cfsprogs/default.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-{stdenv, fetchurl, gettext}:
-
-stdenv.mkDerivation {
-  name = "e3cfsprogs-1.39";
-  builder = ./builder.sh;
-
-  patches = [ ./e3cfsprogs-1.39_bin_links.patch ./e3cfsprogs-1.39_etc.patch ];
-
-  src = fetchurl {
-    url = http://ext3cow.com/e3cfsprogs/e3cfsprogs-1.39.tgz;
-    sha256 = "8dd3de546aeb1ae42fb05409aeb724a145fe9aa1dbe1115441c2297c9d48cf31";
-  };
-
-  configureFlags ="--enable-dynamic-e2fsck --enable-elf-shlibs";
-  buildInputs = [gettext];
-  preInstall = "installFlagsArray=('LN=ln -s')";
-  postInstall = "make install-libs";
-}
-
-#note that ext3cow requires the ext3cow kernel patch !!!!
diff --git a/pkgs/os-specific/linux/e3cfsprogs/e3cfsprogs-1.39_bin_links.patch b/pkgs/os-specific/linux/e3cfsprogs/e3cfsprogs-1.39_bin_links.patch
deleted file mode 100644
index cf8c819c97a4..000000000000
--- a/pkgs/os-specific/linux/e3cfsprogs/e3cfsprogs-1.39_bin_links.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-diff -Naur e3cfsprogs-1.39/config/config.guess e3cfsprogs-1.39_mod/config/config.guess
---- e3cfsprogs-1.39/config/config.guess	2006-04-10 00:34:21.000000000 +0200
-+++ e3cfsprogs-1.39_mod/config/config.guess	2007-07-20 16:28:58.000000000 +0200
-@@ -319,7 +319,7 @@
- 	echo sparc-icl-nx6
- 	exit ;;
-     DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
--	case `/usr/bin/uname -p` in
-+	case `uname -p` in
- 	    sparc) echo sparc-icl-nx7; exit ;;
- 	esac ;;
-     sun4H:SunOS:5.*:*)
-@@ -460,7 +460,7 @@
- 	exit ;;
-     AViiON:dgux:*:*)
-         # DG/UX returns AViiON for all architectures
--        UNAME_PROCESSOR=`/usr/bin/uname -p`
-+        UNAME_PROCESSOR=`uname -p`
- 	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
- 	then
- 	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
-@@ -1054,7 +1054,7 @@
- 	exit ;;
-     i*86:*:5:[678]*)
-     	# UnixWare 7.x, OpenUNIX and OpenServer 6.
--	case `/bin/uname -X | grep "^Machine"` in
-+	case `uname -X | grep "^Machine"` in
- 	    *486*)	     UNAME_MACHINE=i486 ;;
- 	    *Pentium)	     UNAME_MACHINE=i586 ;;
- 	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
-@@ -1065,14 +1065,14 @@
- 	if test -f /usr/options/cb.name; then
- 		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
- 		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
--	elif /bin/uname -X 2>/dev/null >/dev/null ; then
--		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
--		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
--		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
-+	elif uname -X 2>/dev/null >/dev/null ; then
-+		UNAME_REL=`(uname -X|grep Release|sed -e 's/.*= //')`
-+		(uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
-+		(uname -X|grep '^Machine.*Pentium' >/dev/null) \
- 			&& UNAME_MACHINE=i586
--		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
-+		(uname -X|grep '^Machine.*Pent *II' >/dev/null) \
- 			&& UNAME_MACHINE=i686
--		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
-+		(uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
- 			&& UNAME_MACHINE=i686
- 		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
- 	else
-@@ -1114,12 +1114,12 @@
- 	OS_REL=''
- 	test -r /etc/.relid \
- 	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
--	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-+	uname -p 2>/dev/null | grep 86 >/dev/null \
- 	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
--	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-+	uname -p 2>/dev/null | /bin/grep entium >/dev/null \
- 	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
-     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
--        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-+        uname -p 2>/dev/null | grep 86 >/dev/null \
-           && { echo i486-ncr-sysv4; exit; } ;;
-     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
- 	echo m68k-unknown-lynxos${UNAME_RELEASE}
-@@ -1471,8 +1471,8 @@
- uname -s = `(uname -s) 2>/dev/null || echo unknown`
- uname -v = `(uname -v) 2>/dev/null || echo unknown`
- 
--/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
--/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
-+uname -p = `(uname -p) 2>/dev/null`
-+uname -X     = `(uname -X) 2>/dev/null`
- 
- hostinfo               = `(hostinfo) 2>/dev/null`
- /bin/universe          = `(/bin/universe) 2>/dev/null`
-diff -Naur e3cfsprogs-1.39/lib/blkid/test_probe.in e3cfsprogs-1.39_mod/lib/blkid/test_probe.in
---- e3cfsprogs-1.39/lib/blkid/test_probe.in	2005-09-10 20:08:42.000000000 +0200
-+++ e3cfsprogs-1.39_mod/lib/blkid/test_probe.in	2007-07-20 16:26:02.000000000 +0200
-@@ -21,7 +21,7 @@
- 	fi
- 	bunzip2 < $SRCDIR/tests/$i.img.bz2 > /tmp/test.img.$$
- 	./tst_probe /tmp/test.img.$$ > tests/$i.out
--	/bin/rm -f /tmp/test.img.$$ tests/$i.ok tests/$i.failed
-+	rm -f /tmp/test.img.$$ tests/$i.ok tests/$i.failed
- 	cmp -s tests/$i.out $SRCDIR/tests/$i.results
- 	if [ $? = 0 ];  then
- 		echo ok
-diff -Naur e3cfsprogs-1.39/tests/defaults/e_script e3cfsprogs-1.39_mod/tests/defaults/e_script
---- e3cfsprogs-1.39/tests/defaults/e_script	2005-09-06 11:40:14.000000000 +0200
-+++ e3cfsprogs-1.39_mod/tests/defaults/e_script	2007-07-20 16:26:26.000000000 +0200
-@@ -25,7 +25,7 @@
- elif [ "$class" = icount ]; then
- 	TEST_PROG=$TEST_ICOUNT
- else
--	TEST_PROG=/bin/cat
-+	TEST_PROG=cat
- fi
- 
- cat $SRCDIR/progs/test_data/$instance.setup $SRCDIR/progs/test_data/test.$class \
-diff -Naur e3cfsprogs-1.39/util/gcc-wall-cleanup e3cfsprogs-1.39_mod/util/gcc-wall-cleanup
---- e3cfsprogs-1.39/util/gcc-wall-cleanup	2005-09-06 11:40:15.000000000 +0200
-+++ e3cfsprogs-1.39_mod/util/gcc-wall-cleanup	2007-07-20 16:30:04.000000000 +0200
-@@ -1,4 +1,4 @@
--#!/bin/sed -f
-+#!sed -f
- #
- # This script filters out gcc-wall crud that we're not interested in seeing.
- #
diff --git a/pkgs/os-specific/linux/e3cfsprogs/e3cfsprogs-1.39_etc.patch b/pkgs/os-specific/linux/e3cfsprogs/e3cfsprogs-1.39_etc.patch
deleted file mode 100644
index 5997d431f4c6..000000000000
--- a/pkgs/os-specific/linux/e3cfsprogs/e3cfsprogs-1.39_etc.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -Naur e3cfsprogs-1.39/misc/Makefile.in e3cfsprogs-1.39_path_mod/misc/Makefile.in
---- e3cfsprogs-1.39/misc/Makefile.in	2006-03-27 07:58:10.000000000 +0200
-+++ e3cfsprogs-1.39_path_mod/misc/Makefile.in	2007-07-20 16:45:04.000000000 +0200
-@@ -223,12 +223,12 @@
- 	@$(SUBSTITUTE_UPTIME) $(srcdir)/filefrag.8.in filefrag.8
- 
- installdirs:
--	@echo "	MKINSTALLDIRS $(sbindir) $(root_sbindir) $(bindir) $(man1dir) $(man8dir) $(libdir)"
-+	@echo "	MKINSTALLDIRS $(sbindir) $(root_sbindir) $(bindir) $(man1dir) $(man8dir) $(libdir) $(root_sysconfdir)"
- 	@$(MKINSTALLDIRS) $(DESTDIR)$(sbindir) \
- 		$(DESTDIR)$(root_sbindir) $(DESTDIR)$(bindir) \
- 		$(DESTDIR)$(man1dir) $(DESTDIR)$(man8dir) \
- 		$(DESTDIR)$(man1dir) $(DESTDIR)$(man5dir) \
--		$(DESTDIR)$(libdir) $(DESTDIR)/etc
-+		$(DESTDIR)$(libdir) $(DESTDIR)$(root_sysconfdir)/etc
- 
- install: all $(SMANPAGES) $(UMANPAGES) installdirs
- 	@for i in $(SPROGS); do \
-@@ -291,7 +291,7 @@
- 	@if ! test -f $(DESTDIR)/etc/mke2fs.conf; then \
- 		echo "	INSTALL_DATA /etc/mke2fs.conf"; \
- 		$(INSTALL_DATA) $(srcdir)/mke2fs.conf \
--			$(DESTDIR)/etc/mke2fs.conf; \
-+			$(DESTDIR)$(root_sysconfdir)/mke2fs.conf; \
- 	fi
- 
- install-strip: install
diff --git a/pkgs/os-specific/linux/fatrace/default.nix b/pkgs/os-specific/linux/fatrace/default.nix
index ca864091d4bf..09da891a175d 100644
--- a/pkgs/os-specific/linux/fatrace/default.nix
+++ b/pkgs/os-specific/linux/fatrace/default.nix
@@ -1,12 +1,12 @@
-{ stdenv, fetchurl, python3, which }:
+{ stdenv, fetchurl, fetchpatch, python3, which }:
 
 stdenv.mkDerivation rec {
   name = "fatrace-${version}";
-  version = "0.11";
+  version = "0.12";
 
   src = fetchurl {
     url = "http://launchpad.net/fatrace/trunk/${version}/+download/${name}.tar.bz2";
-    sha256 = "1f77v222nlfbf8fv7d28cnpm7x8xz0mhxavgz19c2jc51pjlv84s";
+    sha256 = "0szn86rbbvmjcw192vjhhgc3v99s5lm2kg93gk1yzm6ay831grsh";
   };
 
   buildInputs = [ python3 which ];
diff --git a/pkgs/os-specific/linux/firmware/rtl8723bs-firmware/default.nix b/pkgs/os-specific/linux/firmware/rtl8723bs-firmware/default.nix
new file mode 100644
index 000000000000..dd30003aa408
--- /dev/null
+++ b/pkgs/os-specific/linux/firmware/rtl8723bs-firmware/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, linuxPackages }:
+with stdenv.lib;
+stdenv.mkDerivation {
+  name = "rtl8723bs-firmware-${linuxPackages.rtl8723bs.rev}";
+  inherit (linuxPackages.rtl8723bs) src;
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  installPhase = ''
+    mkdir -p                "$out/lib/firmware/rtlwifi"
+    cp rtl8723bs_nic.bin    "$out/lib/firmware/rtlwifi"
+    cp rtl8723bs_wowlan.bin "$out/lib/firmware/rtlwifi"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Firmware for RealTek 8723bs";
+    homepage = https://github.com/hadess/rtl8723bs;
+    license = licenses.unfreeRedistributableFirmware;
+    maintainers = with maintainers; [ elitak ];
+  };
+}
diff --git a/pkgs/os-specific/linux/ifplugd/interface.patch b/pkgs/os-specific/linux/ifplugd/interface.patch
deleted file mode 100644
index 9c2de464bbde..000000000000
--- a/pkgs/os-specific/linux/ifplugd/interface.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- src/interface.c	2004/12/19 00:08:01	114
-+++ src/interface.c	2006/03/07 13:15:11	133
-@@ -22,9 +22,9 @@
- #include <config.h>
- #endif
- 
-+#include <sys/types.h>
- #include <linux/sockios.h>
- #include <linux/if_ether.h>
--#include <sys/types.h>
- #include <sys/socket.h>
- #include <sys/ioctl.h>
- #include <linux/if.h>
diff --git a/pkgs/os-specific/linux/iw/default.nix b/pkgs/os-specific/linux/iw/default.nix
index 3cd2567d96f4..53aa15ec62e6 100644
--- a/pkgs/os-specific/linux/iw/default.nix
+++ b/pkgs/os-specific/linux/iw/default.nix
@@ -1,11 +1,11 @@
 {stdenv, fetchurl, libnl, pkgconfig}:
 
 stdenv.mkDerivation rec {
-  name = "iw-4.1";
+  name = "iw-4.3";
 
   src = fetchurl {
     url = "https://www.kernel.org/pub/software/network/iw/${name}.tar.xz";
-    sha256 = "0jx3s5wdvm2qxd3h883fnyjsb1c29qcsz1r19bc029g8v2nalr2i";
+    sha256 = "085jyvrxzarvn5jl0fk618jjxy50nqx7ifngszc4jxk6a4ddibd6";
   };
 
   buildInputs = [ libnl pkgconfig ];
diff --git a/pkgs/os-specific/linux/kernel-headers-cross/builder.sh b/pkgs/os-specific/linux/kernel-headers-cross/builder.sh
deleted file mode 100644
index 3bc4abc92331..000000000000
--- a/pkgs/os-specific/linux/kernel-headers-cross/builder.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-source $stdenv/setup
-
-
-buildPhase() {
-    make include/linux/version.h
-}
-
-
-installPhase() {
-    mkdir $out
-    mkdir $out/include
-    #cd $out/include
-    #ln -s asm-arm asm
-    if test $cross = "arm-linux"; then
-       arch=arm
-    elif test $cross = "mips-linux"; then
-           arch=mips
-    elif test $cross = "sparc-linux"; then
-           arch=sparc
-    elif test $cross = "powerpc-linux"; then
-           arch=ppc
-    elif test $cross = "ppc-linux"; then
-           arch=ppc
-    fi
-    make include/asm ARCH=$arch
-    cp -prvd include/linux include/asm include/asm-$arch include/asm-generic $out/include
-    echo -n > $out/include/linux/autoconf.h
-}
-
-
-genericBuild
diff --git a/pkgs/os-specific/linux/kernel-headers-cross/default.nix b/pkgs/os-specific/linux/kernel-headers-cross/default.nix
deleted file mode 100644
index e2d4dedf799a..000000000000
--- a/pkgs/os-specific/linux/kernel-headers-cross/default.nix
+++ /dev/null
@@ -1,13 +0,0 @@
-{stdenv, fetchurl, cross}:
-
-assert stdenv.system == "i686-linux";
-
-stdenv.mkDerivation {
-  name = "linux-headers-2.6.14.5";
-  builder = ./builder.sh;
-  src = fetchurl {
-    url = mirror://kernel/linux/kernel/v2.6/linux-2.6.14.5.tar.bz2;
-    md5 = "9f057e3bd31c50dc48553def01bc8037";
-  };
-  inherit cross;
-}
diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix
index 6ba1234673ba..485cdd76f6ac 100644
--- a/pkgs/os-specific/linux/kernel/common-config.nix
+++ b/pkgs/os-specific/linux/kernel/common-config.nix
@@ -496,6 +496,9 @@ with stdenv.lib;
     BINFMT_SCRIPT y
   ''}
 
+  # For systemd-binfmt
+  BINFMT_MISC? y
+
   # Enable the 9P cache to speed up NixOS VM tests.
   9P_FSCACHE? y
   9P_FS_POSIX_ACL? y
diff --git a/pkgs/os-specific/linux/kernel/grsecurity-path-4.5.patch b/pkgs/os-specific/linux/kernel/grsecurity-path-4.5.patch
new file mode 100644
index 000000000000..e0430a69c950
--- /dev/null
+++ b/pkgs/os-specific/linux/kernel/grsecurity-path-4.5.patch
@@ -0,0 +1,14 @@
+diff -ru a/kernel/kmod.c b/kernel/kmod.c
+--- a/kernel/kmod.c	2016-04-21 17:06:09.882281660 +0200
++++ b/kernel/kmod.c	2016-04-21 17:08:17.458949309 +0200
+@@ -294,7 +294,9 @@
+ 	     strncmp(sub_info->path, "/lib/", 5) && strncmp(sub_info->path, "/lib64/", 7) &&
+ 	     strncmp(sub_info->path, "/usr/libexec/", 13) && strncmp(sub_info->path, "/usr/bin/", 9) &&
+ 	     strncmp(sub_info->path, "/usr/sbin/", 10) && strcmp(sub_info->path, "/bin/false") && 
+-	     strcmp(sub_info->path, "/usr/share/apport/apport")) || strstr(sub_info->path, "..")) {
++	     strcmp(sub_info->path, "/usr/share/apport/apport") &&
++       strncmp(sub_info->path, "/nix/store/", 11) &&
++       strncmp(sub_info->path, "/run/current-system/systemd/lib/", 32)) || strstr(sub_info->path, "..")) {
+ 		printk(KERN_ALERT "grsec: denied exec of usermode helper binary %.950s located outside of permitted system paths\n", sub_info->path);
+ 		retval = -EPERM;
+ 		goto out;
diff --git a/pkgs/os-specific/linux/kernel/linux-4.4.nix b/pkgs/os-specific/linux/kernel/linux-4.4.nix
index c6dfb6935235..6b997943d7c7 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.4.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.4.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, perl, buildLinux, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "4.4.7";
+  version = "4.4.8";
   extraMeta.branch = "4.4";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "00nkh0klk9b777fvhgf10wsrc7h8ycchgazwirk2926wmisjhl8q";
+    sha256 = "02gf7dkdibhxv8n4qfnyqh645d102g9z7pdid8pcq4jhd99sg9yj";
   };
 
   kernelPatches = args.kernelPatches;
diff --git a/pkgs/os-specific/linux/kernel/linux-grsecurity-4.4.nix b/pkgs/os-specific/linux/kernel/linux-grsecurity-4.4.nix
index 36181308a8be..e51fe6423680 100644
--- a/pkgs/os-specific/linux/kernel/linux-grsecurity-4.4.nix
+++ b/pkgs/os-specific/linux/kernel/linux-grsecurity-4.4.nix
@@ -1,5 +1,7 @@
 { stdenv, fetchurl, perl, buildLinux, ... } @ args:
 
+throw "grsecurity stable is no longer supported; please update your configuration"
+
 import ./generic.nix (args // rec {
   version = "4.4.5";
   extraMeta.branch = "4.4";
diff --git a/pkgs/os-specific/linux/kernel/linux-grsecurity-4.1.nix b/pkgs/os-specific/linux/kernel/linux-grsecurity-4.5.nix
index 4359f4586c50..267d0d58de41 100644
--- a/pkgs/os-specific/linux/kernel/linux-grsecurity-4.1.nix
+++ b/pkgs/os-specific/linux/kernel/linux-grsecurity-4.5.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, perl, buildLinux, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "4.1.7";
-  extraMeta.branch = "4.1";
+  version = "4.5.2";
+  extraMeta.branch = "4.5";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "0g1dnvak0pd03d4miy1025bw64wq71w29a058dzspdr6jcf9qwbn";
+    sha256 = "17r063zx880ka3ayv9cf1yjfilvxlifhja1rhw5z3w35hgdkj8z3";
   };
 
   kernelPatches = args.kernelPatches;
diff --git a/pkgs/os-specific/linux/kernel/linux-testing.nix b/pkgs/os-specific/linux/kernel/linux-testing.nix
index fb1bf73ad0ec..9a948a68c4cf 100644
--- a/pkgs/os-specific/linux/kernel/linux-testing.nix
+++ b/pkgs/os-specific/linux/kernel/linux-testing.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchurl, perl, buildLinux, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "4.6-rc4";
-  modDirVersion = "4.6.0-rc4";
+  version = "4.6-rc6";
+  modDirVersion = "4.6.0-rc6";
   extraMeta.branch = "4.6";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/testing/linux-${version}.tar.xz";
-    sha256 = "1c6y6ry8nll8mab0xwwkmpwzp2k4rbp7jl3f4ihi7g2kv2678cbp";
+    sha256 = "040sk87zdgqsbma5sk1hk4graga8yafh4rn89vkznkwzdlwa3gyx";
   };
 
   features.iwlwifi = true;
diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix
index ffe09cc2fee5..5f2bc2d2c55b 100644
--- a/pkgs/os-specific/linux/kernel/manual-config.nix
+++ b/pkgs/os-specific/linux/kernel/manual-config.nix
@@ -125,7 +125,7 @@ let
       postInstall = (optionalString installsFirmware ''
         mkdir -p $out/lib/firmware
       '') + (if (platform ? kernelDTB && platform.kernelDTB) then ''
- 	make $makeFlags "''${makeFlagsArray[@]}" dtbs
+        make $makeFlags "''${makeFlagsArray[@]}" dtbs
         mkdir -p $out/dtbs
         cp $buildRoot/arch/$karch/boot/dts/*.dtb $out/dtbs
       '' else "") + (if isModular then ''
@@ -190,6 +190,8 @@ let
           $installFlags "''${installFlagsArray[@]}"
       '');
 
+      requiredSystemFeatures = [ "big-parallel" ];
+
       meta = {
         description =
           "The Linux kernel" +
diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix
index 707ebb544bf4..c4bc45133950 100644
--- a/pkgs/os-specific/linux/kernel/patches.nix
+++ b/pkgs/os-specific/linux/kernel/patches.nix
@@ -23,9 +23,7 @@ let
     { name = "grsecurity-${grversion}-${kversion}";
       inherit grversion kernel patches kversion revision;
       patch = fetchurl {
-        url = if branch == "stable"
-              then "https://github.com/kdave/grsecurity-patches/blob/master/grsecurity_patches/grsecurity-${grversion}-${kversion}-${revision}.patch?raw=true"
-              else "https://github.com/slashbeast/grsecurity-scrape/blob/master/${branch}/grsecurity-${grversion}-${kversion}-${revision}.patch?raw=true";
+        url = "https://grsecurity.net/${branch}/grsecurity-${grversion}-${kversion}-${revision}.patch";
         inherit sha256;
       };
       features.grsecurity = true;
@@ -96,14 +94,6 @@ rec {
       sha256    = "1sp1gwa7ahzflq7ayb51bg52abrn5zx1hb3pff3axpjqq7vfai6f";
     };
 
-  grsecurity_4_1 = grsecPatch
-    { kernel    = pkgs.grsecurity_base_linux_4_1;
-      patches   = [ grsecurity_fix_path_3_14 ];
-      kversion  = "4.1.7";
-      revision  = "201509201149";
-      sha256    = "1agv8c3c4vmh5algbzmrq2f6vwk72rikrlcbm4h7jbrb9js6fxk4";
-    };
-
   grsecurity_4_4 = grsecPatch
     { kernel    = pkgs.grsecurity_base_linux_4_4;
       patches   = [ grsecurity_fix_path_4_4 ];
@@ -112,7 +102,15 @@ rec {
       sha256    = "04k4nhshl6r5n41ha5620s7cd70dmmmvyf9mnn5359jr1720kxpf";
     };
 
-  grsecurity_latest = grsecurity_4_4;
+  grsecurity_4_5 = grsecPatch
+    { kernel    = pkgs.grsecurity_base_linux_4_5;
+      patches   = [ grsecurity_fix_path_4_5 ];
+      kversion  = "4.5.2";
+      revision  = "201604290633";
+      sha256    = "0qrs4fk6lyqngq3fnsmrv0y3yp1lrbiwadfc6v7hy4lyv77wz107";
+    };
+
+  grsecurity_latest = grsecurity_4_5;
 
   grsecurity_fix_path_3_14 =
     { name = "grsecurity-fix-path-3.14";
@@ -124,6 +122,11 @@ rec {
       patch = ./grsecurity-path-4.4.patch;
     };
 
+  grsecurity_fix_path_4_5 =
+    { name = "grsecurity-fix-path-4.5";
+      patch = ./grsecurity-path-4.5.patch;
+    };
+
   crc_regression =
     { name = "crc-backport-regression";
       patch = ./crc-regression.patch;
diff --git a/pkgs/os-specific/linux/libnl/default.nix b/pkgs/os-specific/linux/libnl/default.nix
index 1e1ed0a6112c..6e5c63a2722f 100644
--- a/pkgs/os-specific/linux/libnl/default.nix
+++ b/pkgs/os-specific/linux/libnl/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchFromGitHub, autoreconfHook, bison, flex, pkgconfig }:
 
-let version = "3.2.26"; in
+let version = "3.2.27"; in
 stdenv.mkDerivation {
   name = "libnl-${version}";
 
   src = fetchFromGitHub {
-    sha256 = "1cbqdhirn6hxmv8xkm8xp3n6ayyxw7sbi15fym167rdz0h9rkhmm";
-    rev = "libnl3_2_26";
+    sha256 = "1rc8plgl2ijq2pwlzinpfr06kiggjyx71r3lw505m6rvxvdac82r";
+    rev = "libnl3_2_27";
     repo = "libnl";
     owner = "thom311";
   };
diff --git a/pkgs/os-specific/linux/lsb-release/default.nix b/pkgs/os-specific/linux/lsb-release/default.nix
new file mode 100644
index 000000000000..9715f77f9e4e
--- /dev/null
+++ b/pkgs/os-specific/linux/lsb-release/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, perl, getopt }:
+
+stdenv.mkDerivation rec {
+  version = "1.4";
+  name = "lsb-release-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/lsb/${name}.tar.gz";
+    sha256 = "0wkiy7ymfi3fh2an2g30raw6yxh6rzf6nz2v90fplbnnz2414clr";
+  };
+
+  preConfigure = ''
+    substituteInPlace help2man \
+      --replace /usr/bin/perl ${perl}/bin/perl
+  '';
+
+  installFlags = [ "prefix=$(out)" ];
+
+  buildInputs = [ perl getopt ];
+
+  meta = {
+    description = "Prints certain LSB (Linux Standard Base) and Distribution information";
+    homepage = http://www.linuxfoundation.org/collaborate/workgroups/lsb;
+    license = [ stdenv.lib.licenses.gpl2Plus stdenv.lib.licenses.gpl3Plus ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/os-specific/linux/mdadm/default.nix b/pkgs/os-specific/linux/mdadm/default.nix
index 3fe9d462412c..3a04466ce41c 100644
--- a/pkgs/os-specific/linux/mdadm/default.nix
+++ b/pkgs/os-specific/linux/mdadm/default.nix
@@ -29,7 +29,9 @@ stdenv.mkDerivation rec {
   NIX_CFLAGS_COMPILE = "-std=gnu89";
 
   preConfigure = ''
-    sed -e 's@/lib/udev@''${out}/lib/udev@' -e 's@ -Werror @ @' -i Makefile
+    sed -e 's@/lib/udev@''${out}/lib/udev@' \
+        -e 's@ -Werror @ @' \
+        -e 's@/usr/sbin/sendmail@/var/setuid-wrappers/sendmail@' -i Makefile
   '';
 
   meta = {
diff --git a/pkgs/os-specific/linux/module-init-tools/default.nix b/pkgs/os-specific/linux/module-init-tools/default.nix
deleted file mode 100644
index ded6e77e43b4..000000000000
--- a/pkgs/os-specific/linux/module-init-tools/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ stdenv, fetchurl, docbook2x, docbook_sgml_dtd_41 }:
-
-assert (stdenv.lib.elem stdenv.system stdenv.lib.platforms.linux);
-
-stdenv.mkDerivation {
-  name = "module-init-tools-3.16";
-
-  src = [
-    (fetchurl {
-      url = http://ftp.be.debian.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-3.16.tar.bz2;
-      sha256 = "0jxnz9ahfic79rp93l5wxcbgh4pkv85mwnjlbv1gz3jawv5cvwp1";
-    })
-
-    # Upstream forgot to include the generated manpages.  Thankfully
-    # the Gentoo people fixed this for us :-)
-    (fetchurl {
-      urls = [
-        mirror://gentoo/distfiles/module-init-tools-3.16-man.tar.bz2
-        http://mirror.meleeweb.net/pub/linux/gentoo/distfiles/module-init-tools-3.16-man.tar.bz2
-      ];
-      sha256 = "1j1nzi87kgsh4scl645fhwhjvljxj83cmdasa4n4p5krhasgw358";
-    })
-  ];
-
-  buildInputs = [ stdenv.glibc.dev stdenv.glibc.static ];
-
-  SGML_CATALOG_FILES = "${docbook_sgml_dtd_41}/sgml/dtd/docbook-4.1/docbook.cat";
-
-  patches = [ ./module-dir.patch ./docbook2man.patch ];
-
-  postInstall = "rm $out/sbin/insmod.static"; # don't need it
-
-  meta = {
-    homepage = http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/;
-    description = "Tools for loading and managing Linux kernel modules";
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/os-specific/linux/module-init-tools/docbook2man.patch b/pkgs/os-specific/linux/module-init-tools/docbook2man.patch
deleted file mode 100644
index 4de07b658a91..000000000000
--- a/pkgs/os-specific/linux/module-init-tools/docbook2man.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur module-init-tools-3.16-orig/Makefile.in module-init-tools-3.16/Makefile.in
---- module-init-tools-3.16-orig/Makefile.in	2011-06-02 13:56:45.000000000 -0400
-+++ module-init-tools-3.16/Makefile.in	2011-10-01 23:59:30.584443193 -0400
-@@ -174,7 +174,7 @@
- CYGPATH_W = @CYGPATH_W@
- DEFS = @DEFS@
- DEPDIR = @DEPDIR@
--DOCBOOKTOMAN = @DOCBOOKTOMAN@
-+DOCBOOKTOMAN = @DOCBOOKTOMAN@ --sgml
- ECHO_C = @ECHO_C@
- ECHO_N = @ECHO_N@
- ECHO_T = @ECHO_T@
diff --git a/pkgs/os-specific/linux/module-init-tools/module-dir.patch b/pkgs/os-specific/linux/module-init-tools/module-dir.patch
deleted file mode 100644
index 95c7559604dd..000000000000
--- a/pkgs/os-specific/linux/module-init-tools/module-dir.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-commit cf2c95edb7918bc658f6cae93793c1949fc9cb6e
-Author: David Guibert <david.guibert@gmail.com>
-Date:   Fri Aug 5 14:20:12 2011 +0200
-
-    introduce module-dir
-
-diff --git a/depmod.c b/depmod.c
-index a1d2f8c..9362a35 100644
---- a/depmod.c
-+++ b/depmod.c
-@@ -48,9 +48,6 @@
- 
- #include "testing.h"
- 
--#ifndef MODULE_DIR
--#define MODULE_DIR "/lib/modules/"
--#endif
- 
- #ifndef MODULE_BUILTIN_KEY
- #define MODULE_BUILTIN_KEY "built-in"
-@@ -1516,6 +1513,7 @@ static int parse_config_file(const char *filename,
- 	char *line;
- 	unsigned int linenum = 0;
- 	FILE *cfile;
-+ 	char *module_dir;
- 
- 	cfile = fopen(filename, "r");
- 	if (!cfile) {
-@@ -1525,6 +1523,10 @@ static int parse_config_file(const char *filename,
- 		return 0;
- 	}
- 
-+        if((module_dir = getenv("MODULE_DIR")) == NULL) {
-+                module_dir = "/lib/modules/";
-+        }
-+
- 	while ((line = getline_wrapped(cfile, &linenum)) != NULL) {
- 		char *ptr = line;
- 		char *cmd, *modname;
-@@ -1550,7 +1552,7 @@ static int parse_config_file(const char *filename,
- 					continue;
- 				}
- 				nofail_asprintf(&dirname, "%s%s%s/%s", basedir,
--					MODULE_DIR, kernelversion, search_path);
-+					module_dir, kernelversion, search_path);
- 				len = strlen(dirname);
- 				*search = add_search(dirname, len, *search);
- 				free(dirname);
-@@ -1565,7 +1567,7 @@ static int parse_config_file(const char *filename,
- 				continue;
- 
- 			nofail_asprintf(&pathname, "%s%s%s/%s/%s.ko", basedir,
--				MODULE_DIR, kernelversion, subdir, modname);
-+				module_dir, kernelversion, subdir, modname);
- 
- 			*overrides = add_override(pathname, *overrides);
- 			free(pathname);
-@@ -1737,6 +1739,7 @@ int main(int argc, char *argv[])
- 	char *basedir = "", *dirname, *version;
- 	char *system_map = NULL, *module_symvers = NULL;
- 	int i;
-+ 	char *module_dir;
- 	const char *config = NULL;
- 
- 	if (native_endianness() == 0)
-@@ -1832,7 +1835,11 @@ int main(int argc, char *argv[])
- 	if (optind == argc)
- 		all = 1;
- 
--	nofail_asprintf(&dirname, "%s%s%s", basedir, MODULE_DIR, version);
-+        if((module_dir = getenv("MODULE_DIR")) == NULL) {
-+                module_dir = "/lib/modules/";
-+        }
-+
-+	nofail_asprintf(&dirname, "%s%s%s", basedir, module_dir, version);
- 
- 	if (maybe_all) {
- 		if (!doing_stdout && !depfile_out_of_date(dirname))
-@@ -1850,7 +1857,7 @@ int main(int argc, char *argv[])
- 		size_t len;
- 
- 		nofail_asprintf(&dirname, "%s%s%s/updates", basedir,
--				MODULE_DIR, version);
-+				module_dir, version);
- 		len = strlen(dirname);
- 		search = add_search(dirname, len, search);
- 	}
-diff --git a/modinfo.c b/modinfo.c
-index 1dd8469..67b1041 100644
---- a/modinfo.c
-+++ b/modinfo.c
-@@ -19,9 +19,6 @@
- #include "zlibsupport.h"
- #include "testing.h"
- 
--#ifndef MODULE_DIR
--#define MODULE_DIR "/lib/modules"
--#endif
- 
- struct param
- {
-@@ -193,6 +190,11 @@ static struct elf_file *grab_module(const char *name,
- 	struct utsname buf;
- 	char *depname, *p, *moddir;
- 	struct elf_file *module;
-+ 	char *module_dir;
-+
-+        if((module_dir = getenv("MODULE_DIR")) == NULL) {
-+                module_dir = "/lib/modules/";
-+        }
- 
- 	if (strchr(name, '.') || strchr(name, '/')) {
- 		module = grab_elf_file(name);
-@@ -207,9 +209,9 @@ static struct elf_file *grab_module(const char *name,
- 		kernel = buf.release;
- 	}
- 	if (strlen(basedir))
--		nofail_asprintf(&moddir, "%s/%s/%s", basedir, MODULE_DIR, kernel);
-+		nofail_asprintf(&moddir, "%s/%s/%s", basedir, module_dir, kernel);
- 	else
--		nofail_asprintf(&moddir, "%s/%s", MODULE_DIR, kernel);
-+		nofail_asprintf(&moddir, "%s/%s", module_dir, kernel);
- 
- 	/* Search for it in modules.dep. */
- 	nofail_asprintf(&depname, "%s/%s", moddir, "modules.dep");
-diff --git a/modprobe.c b/modprobe.c
-index 5464f45..d9fbf9d 100644
---- a/modprobe.c
-+++ b/modprobe.c
-@@ -86,10 +86,6 @@ typedef enum
- 
- } modprobe_flags_t;
- 
--#ifndef MODULE_DIR
--#define MODULE_DIR "/lib/modules"
--#endif
--
- /**
-  * print_usage - output the prefered program usage
-  *
-@@ -2136,6 +2132,7 @@ int main(int argc, char *argv[])
- 	struct modprobe_conf conf = {};
- 
- 	recursion_depth = 0;
-+ 	char *module_dir = NULL;
- 
- 	/* Prepend options from environment. */
- 	argv = merge_args(getenv("MODPROBE_OPTIONS"), argv, &argc);
-@@ -2233,7 +2230,11 @@ int main(int argc, char *argv[])
- 	if (argc < optind + 1 && !dump_config && !list_only)
- 		print_usage(argv[0]);
- 
--	nofail_asprintf(&dirname, "%s%s/%s", basedir, MODULE_DIR, buf.release);
-+	if((module_dir = getenv("MODULE_DIR")) == NULL) {
-+		module_dir = "/lib/modules";
-+	}
-+
-+	nofail_asprintf(&dirname, "%s%s/%s", basedir, module_dir, buf.release);
- 
- 	/* Old-style -t xxx wildcard?  Only with -l. */
- 	if (list_only) {
diff --git a/pkgs/os-specific/linux/open-iscsi/default.nix b/pkgs/os-specific/linux/open-iscsi/default.nix
index d004328a10b9..480554313048 100644
--- a/pkgs/os-specific/linux/open-iscsi/default.nix
+++ b/pkgs/os-specific/linux/open-iscsi/default.nix
@@ -1,36 +1,36 @@
-{ stdenv, fetchurl, nukeReferences }:
-let
-  pname = "open-iscsi-2.0-873";
-in stdenv.mkDerivation {
-  name = pname;
-  outputs = [ "out" "iscsistart" ];
+{ stdenv, fetchFromGitHub, automake, autoconf, libtool, gettext, utillinux, openisns, openssl, kmod }:
+stdenv.mkDerivation rec {
+  name = "open-iscsi-${version}";
+  version = "2.0-873-${stdenv.lib.substring 0 7 src.rev}";
 
-  buildInputs = [ nukeReferences ];
+  buildInputs = [ automake autoconf libtool gettext utillinux openisns.lib openssl kmod ];
   
-  src = fetchurl {
-    urls = [
-      "http://www.open-iscsi.org/bits/${pname}.tar.gz"
-      "http://pkgs.fedoraproject.org/repo/pkgs/iscsi-initiator-utils/${pname}.tar.gz/8b8316d7c9469149a6cc6234478347f7/${pname}.tar.gz"
-    ];
-    sha256 = "1nbwmj48xzy45h52917jbvyqpsfg9zm49nm8941mc5x4gpwz5nbx";
+  src = fetchFromGitHub {
+    owner = "open-iscsi";
+    repo = "open-iscsi";
+    rev = "4c1f2d90ef1c73e33d9f1e4ae9c206ffe015a8f9";
+    sha256 = "0h030zk4zih3l8z5662b3kcifdxlakbwwkz1afb7yf0cicds7va8";
   };
   
   DESTDIR = "$(out)";
   
+  NIX_LDFLAGS = "-lkmod";
+  NIX_CFLAGS_COMPILE = "-DUSE_KMOD";
+
   preConfigure = ''
-    sed -i 's|/usr/|/|' Makefile
+    sed -i 's|/usr|/|' Makefile
   '';
   
   postInstall = ''
-    mkdir -pv $iscsistart/bin/
-    cp -v usr/iscsistart $iscsistart/bin/
-    nuke-refs $iscsistart/bin/iscsistart
+    cp usr/iscsistart $out/sbin/
+    $out/sbin/iscsistart -v
   '';
 
   meta = with stdenv.lib; {
     description = "A high performance, transport independent, multi-platform implementation of RFC3720";
     license = licenses.gpl2Plus;
-    homepage = http://www.open-iscsi.org;
+    homepage = http://www.open-iscsi.com;
     platforms = platforms.linux;
+    maintainers = with maintainers; [ cleverca22 ];
   };
 }
diff --git a/pkgs/os-specific/linux/open-isns/default.nix b/pkgs/os-specific/linux/open-isns/default.nix
new file mode 100644
index 000000000000..2ef08cd13ce2
--- /dev/null
+++ b/pkgs/os-specific/linux/open-isns/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, openssl, fetchFromGitHub }:
+stdenv.mkDerivation rec {
+  name = "open-isns-${version}";
+  version = "0.95";
+
+  src = fetchFromGitHub {
+    owner = "gonzoleeman";
+    repo = "open-isns";
+    rev = "v${version}";
+    sha256 = "1c2x3yf9806gbjsw4xi805rfhyxk353a3whqvpccz8dwas6jajwh";
+  };
+
+  propagatedBuildInputs = [ openssl ];
+  outputs = ["out" "lib" ];
+  outputInclude = "lib";
+
+  installFlags = "etcdir=$(out)/etc vardir=$(out)/var/lib/isns";
+  installTargets = "install install_hdrs install_lib";
+
+  meta = {
+    description = "iSNS server and client for Linux";
+    license = stdenv.lib.licenses.lgpl21;
+    homepage = https://github.com/gonzoleeman/open-isns;
+  };
+}
diff --git a/pkgs/os-specific/linux/pam_devperm/default.nix b/pkgs/os-specific/linux/pam_devperm/default.nix
deleted file mode 100644
index 1e5a7095e047..000000000000
--- a/pkgs/os-specific/linux/pam_devperm/default.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-{stdenv, fetchurl, pam}:
-   
-stdenv.mkDerivation {
-  name = "pam_devperm-1.6";
-   
-  src = fetchurl {
-    url = http://ftp.suse.com/pub/people/kukuk/pam/pam_devperm/pam_devperm-1.6.tar.bz2;
-    sha256 = "0rvndh6yvcgmjnkqxv24pjy3ayy4p8r29w25xscwjfzqmrdyfbpw";
-  };
-
-  buildInputs = [pam];
-}
diff --git a/pkgs/os-specific/linux/pcmciautils/default.nix b/pkgs/os-specific/linux/pcmciautils/default.nix
index ce5814965efd..3e41df9465f9 100644
--- a/pkgs/os-specific/linux/pcmciautils/default.nix
+++ b/pkgs/os-specific/linux/pcmciautils/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl
 , yacc, flex
-, sysfsutils, module_init_tools, udev
+, sysfsutils, kmod, udev
 , firmware # Special pcmcia cards.
 , config   # Special hardware (map memory & port & irq)
 , lib      # used to generate postInstall script.
@@ -15,11 +15,11 @@ stdenv.mkDerivation rec {
     sha256 = "5d8e2efad8a7f692129610603da232f2144851753d8d49a70eeb8eb1be6f6bc3";
   };
 
-  buildInputs = [udev yacc sysfsutils module_init_tools flex];
+  buildInputs = [udev yacc sysfsutils kmod flex];
 
   patchPhase = ''
     sed -i "
-      s,/sbin/modprobe,${module_init_tools}&,;
+      s,/sbin/modprobe,${kmod}&,;
       s,/lib/udev/,$out/sbin/,;
     " udev/* # fix-color */
     sed -i "
diff --git a/pkgs/os-specific/linux/pm-utils/default.nix b/pkgs/os-specific/linux/pm-utils/default.nix
index 19315ec2d0ba..cb74dc204a3c 100644
--- a/pkgs/os-specific/linux/pm-utils/default.nix
+++ b/pkgs/os-specific/linux/pm-utils/default.nix
@@ -1,10 +1,10 @@
-{ stdenv, fetchurl, coreutils, gnugrep, utillinux, module_init_tools
+{ stdenv, fetchurl, coreutils, gnugrep, utillinux, kmod
 , procps, kbd, dbus_tools }:
 
 let
 
   binPath = stdenv.lib.makeBinPath
-    [ coreutils gnugrep utillinux module_init_tools procps kbd dbus_tools ];
+    [ coreutils gnugrep utillinux kmod procps kbd dbus_tools ];
 
   sbinPath = stdenv.lib.makeSearchPathOutputs "sbin" ["bin"]
     [ procps ];
diff --git a/pkgs/os-specific/linux/procps/default.nix b/pkgs/os-specific/linux/procps/default.nix
deleted file mode 100644
index 9c894256413c..000000000000
--- a/pkgs/os-specific/linux/procps/default.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ stdenv, fetchurl, ncurses }:
-
-stdenv.mkDerivation {
-  name = "procps-3.2.8";
-  
-  src = fetchurl {
-    url = http://procps.sourceforge.net/procps-3.2.8.tar.gz;
-    sha256 = "0d8mki0q4yamnkk4533kx8mc0jd879573srxhg6r2fs3lkc6iv8i";
-  };
-  
-  patches =
-    [ ./makefile.patch
-      ./procps-build.patch
-      ./gnumake3.82.patch
-      ./linux-ver-init.patch
-    ];
-    
-  buildInputs = [ ncurses ];
-  
-  makeFlags = "DESTDIR=$(out)";
-
-  crossAttrs = {
-    CC = stdenv.cross.config + "-gcc";
-  };
-
-  meta = {
-    homepage = http://procps.sourceforge.net/;
-    description = "Utilities that give information about processes using the /proc filesystem";
-  };
-}
diff --git a/pkgs/os-specific/linux/procps/gnumake3.82.patch b/pkgs/os-specific/linux/procps/gnumake3.82.patch
deleted file mode 100644
index 2b1f28d4bce7..000000000000
--- a/pkgs/os-specific/linux/procps/gnumake3.82.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/Makefile b/Makefile
-index 09fb3ed..59eba16 100644
---- a/Makefile
-+++ b/Makefile
-@@ -174,7 +174,7 @@ INSTALL := $(BINFILES) $(MANFILES)
- # want this rule first, use := on ALL, and ALL not filled in yet
- all: do_all
- 
---include */module.mk
-+-include proc/module.mk ps/module.mk
- 
- do_all:    $(ALL)
- 
diff --git a/pkgs/os-specific/linux/procps/linux-ver-init.patch b/pkgs/os-specific/linux/procps/linux-ver-init.patch
deleted file mode 100644
index 9f93784a1fd9..000000000000
--- a/pkgs/os-specific/linux/procps/linux-ver-init.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-https://bugs.gentoo.org/303120
-
-make sure the linux version constructor runs before the libproc constructor
-since the latter uses variables setup by the former
-
-fix by Chris Coleman
-
-Index: proc/version.c
-===================================================================
-RCS file: /cvsroot/procps/procps/proc/version.c,v
-retrieving revision 1.7
-diff -u -p -r1.7 version.c
---- a/proc/version.c	9 Feb 2003 07:27:16 -0000	1.7
-+++ b/proc/version.c	14 Nov 2010 00:22:44 -0000
-@@ -33,7 +33,7 @@ void display_version(void) {
- 
- int linux_version_code;
- 
--static void init_Linux_version(void) __attribute__((constructor));
-+static void init_Linux_version(void) __attribute__((constructor(100)));
- static void init_Linux_version(void) {
-     static struct utsname uts;
-     int x = 0, y = 0, z = 0;	/* cleared in case sscanf() < 3 */
diff --git a/pkgs/os-specific/linux/procps/makefile.patch b/pkgs/os-specific/linux/procps/makefile.patch
deleted file mode 100644
index 20ff71ecdc15..000000000000
--- a/pkgs/os-specific/linux/procps/makefile.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-diff -rc procps-orig/Makefile procps-3.2.4/Makefile
-*** procps-orig/Makefile	2004-10-10 23:31:12.000000000 +0200
---- procps-3.2.4/Makefile	2005-01-21 19:33:49.700437229 +0100
-***************
-*** 24,47 ****
-  ############ vars
-  
-  # so you can disable them or choose alternates
-! ldconfig := ldconfig
-  ln_f     := ln -f
-  ln_sf    := ln -sf
-! install  := install -D --owner 0 --group 0
-  
-  # Lame x86-64 /lib64 and /usr/lib64 abomination:
-  lib64    := lib$(shell [ -d /lib64 ] && echo 64)
-  
-! usr/bin                  := $(DESTDIR)/usr/bin/
-  bin                      := $(DESTDIR)/bin/
-  sbin                     := $(DESTDIR)/sbin/
-! usr/proc/bin             := $(DESTDIR)/usr/bin/
-! man1                     := $(DESTDIR)/usr/share/man/man1/
-! man5                     := $(DESTDIR)/usr/share/man/man5/
-! man8                     := $(DESTDIR)/usr/share/man/man8/
-! lib                      := $(DESTDIR)/$(lib64)/
-! usr/lib                  := $(DESTDIR)/usr/$(lib64)/
-! usr/include              := $(DESTDIR)/usr/include/
-  
-  #SKIP     := $(bin)kill $(man1)kill.1
-  
---- 24,47 ----
-  ############ vars
-  
-  # so you can disable them or choose alternates
-! ldconfig := true
-  ln_f     := ln -f
-  ln_sf    := ln -sf
-! install  := install -D
-  
-  # Lame x86-64 /lib64 and /usr/lib64 abomination:
-  lib64    := lib$(shell [ -d /lib64 ] && echo 64)
-  
-! usr/bin                  := $(DESTDIR)/bin/
-  bin                      := $(DESTDIR)/bin/
-  sbin                     := $(DESTDIR)/sbin/
-! usr/proc/bin             := $(DESTDIR)/bin/
-! man1                     := $(DESTDIR)/share/man/man1/
-! man5                     := $(DESTDIR)/share/man/man5/
-! man8                     := $(DESTDIR)/share/man/man8/
-! lib                      := $(DESTDIR)/lib/
-! usr/lib                  := $(DESTDIR)/lib/
-! usr/include              := $(DESTDIR)/include/
-  
-  #SKIP     := $(bin)kill $(man1)kill.1
-  
-***************
-*** 71,77 ****
-  
-  # Preprocessor flags.
-  PKG_CPPFLAGS := -D_GNU_SOURCE -I proc
-! CPPFLAGS     := -I/usr/include/ncurses
-  ALL_CPPFLAGS := $(PKG_CPPFLAGS) $(CPPFLAGS)
-  
-  # Left out -Wconversion due to noise in glibc headers.
---- 71,77 ----
-  
-  # Preprocessor flags.
-  PKG_CPPFLAGS := -D_GNU_SOURCE -I proc
-! CPPFLAGS     := 
-  ALL_CPPFLAGS := $(PKG_CPPFLAGS) $(CPPFLAGS)
-  
-  # Left out -Wconversion due to noise in glibc headers.
diff --git a/pkgs/os-specific/linux/procps/procps-build.patch b/pkgs/os-specific/linux/procps/procps-build.patch
deleted file mode 100644
index 67141715bb6c..000000000000
--- a/pkgs/os-specific/linux/procps/procps-build.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-diff -ruN procps-3.2.6/Makefile procps-3.2.6.new/Makefile
---- procps-3.2.6/Makefile	2005-10-30 07:27:04.000000000 +0100
-+++ procps-3.2.6.new/Makefile	2005-12-13 16:52:02.000000000 +0100
-@@ -43,7 +43,7 @@
- usr/lib                  := $(DESTDIR)/usr/$(lib64)/
- usr/include              := $(DESTDIR)/usr/include/
- 
--#SKIP     := $(bin)kill $(man1)kill.1
-+SKIP     := $(bin)kill $(man1)kill.1 $(usr/bin)uptime $(man1)uptime.1
- 
- BINFILES := $(usr/bin)uptime $(usr/bin)tload $(usr/bin)free $(usr/bin)w \
-             $(usr/bin)top $(usr/bin)vmstat $(usr/bin)watch $(usr/bin)skill \
-@@ -127,26 +127,26 @@
- # produce separate executables for ppc and ppc64, s390 and s390x,
- # i386 and x86-64, mips and mips64, sparc and sparc64, and so on.
- # Failure to do so will cause data corruption.
--m64 := $(call check_gcc,-m64,$(call check_gcc,-mabi=64,))
--ALL_CFLAGS += $(m64)
-+#m64 := $(call check_gcc,-m64,$(call check_gcc,-mabi=64,))
-+#ALL_CFLAGS += $(m64)
- 
--ALL_CFLAGS += $(call check_gcc,-Wdeclaration-after-statement,)
--ALL_CFLAGS += $(call check_gcc,-Wpadded,)
--ALL_CFLAGS += $(call check_gcc,-Wstrict-aliasing,)
-+#ALL_CFLAGS += $(call check_gcc,-Wdeclaration-after-statement,)
-+#ALL_CFLAGS += $(call check_gcc,-Wpadded,)
-+#ALL_CFLAGS += $(call check_gcc,-Wstrict-aliasing,)
- 
- # Adding -fno-gcse might be good for those files which
- # use computed goto.
- #ALL_CFLAGS += $(call check_gcc,-fno-gcse,)
- 
- # if not debugging, enable things that could confuse gdb
--ifeq (,$(findstring -g,$(filter -g%,$(CFLAGS))))
--ALL_CFLAGS += $(call check_gcc,-fweb,)
--ALL_CFLAGS += $(call check_gcc,-frename-registers,)
--ALL_CFLAGS += $(call check_gcc,-fomit-frame-pointer,)
--endif
-+#ifeq (,$(findstring -g,$(filter -g%,$(CFLAGS))))
-+#ALL_CFLAGS += $(call check_gcc,-fweb,)
-+#ALL_CFLAGS += $(call check_gcc,-frename-registers,)
-+#ALL_CFLAGS += $(call check_gcc,-fomit-frame-pointer,)
-+#endif
- 
- # in case -O3 is enabled, avoid bloat
--ALL_CFLAGS += $(call check_gcc,-fno-inline-functions,)
-+#ALL_CFLAGS += $(call check_gcc,-fno-inline-functions,)
- 
- endif
- endif
diff --git a/pkgs/os-specific/linux/rtl8723bs/default.nix b/pkgs/os-specific/linux/rtl8723bs/default.nix
index 6d55c5522f44..e8cc1f40067e 100644
--- a/pkgs/os-specific/linux/rtl8723bs/default.nix
+++ b/pkgs/os-specific/linux/rtl8723bs/default.nix
@@ -1,36 +1,39 @@
-{ stdenv, fetchFromGitHub, kernel }:
-
-let
-  ver = "c517f2b";
-in
+{ stdenv, fetchFromGitHub, nukeReferences, kernel }:
+with stdenv.lib;
 stdenv.mkDerivation rec {
-  name = "rtl8723bs-${kernel.version}-c517f2b";
-  
+  name = "rtl8723bs-${kernel.version}-${rev}";
+  rev = "6918e9b2ff297b1cc7fde193e72452c33c10e1c8";
+
   src = fetchFromGitHub {
     owner = "hadess";
     repo = "rtl8723bs";
-    rev = "c517f2bf8bcc3d57311252ea7cd49ae81466eead";
-    sha256 = "0phzrhq85g52pi2b74a9sr9l2x6dzlz714k3pix486w2x5axw4xb";
+    inherit rev;
+    sha256 = "07srd457wnz29nvvq02wz66s387bhjbydnmbs3qr7ljprabhsgmi";
   };
-  
-  patchPhase = ''
-    substituteInPlace ./Makefile --replace /lib/modules/ "${kernel.dev}/lib/modules/"
-    substituteInPlace ./Makefile --replace '$(shell uname -r)' "${kernel.modDirVersion}"
-    substituteInPlace ./Makefile --replace /sbin/depmod #
-    substituteInPlace ./Makefile --replace '$(MODDESTDIR)' "$out/lib/modules/${kernel.modDirVersion}/kernel/net/wireless/"
-    substituteInPlace ./Makefile --replace '/lib/firmware' "$out/lib/firmware"
-  '';
-  
-  preInstall = ''
-    mkdir -p "$out/lib/modules/${kernel.modDirVersion}/kernel/net/wireless/"
-    mkdir -p "$out/lib/firmware/rtlwifi"
+
+  buildInputs = [ nukeReferences ];
+
+  makeFlags = concatStringsSep " " [
+    "ARCH=${stdenv.platform.kernelArch}" # Normally not needed, but the Makefile sets ARCH in a broken way.
+    "KSRC=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" # Makefile uses $(uname -r); breaks us.
+  ];
+
+  enableParallelBuilding = true;
+
+  # The Makefile doesn't use env-vars well, so install manually:
+  installPhase = ''
+    mkdir -p      $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/net/wireless
+    cp r8723bs.ko $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/net/wireless
+
+    nuke-refs $(find $out -name "*.ko")
   '';
-   
+
   meta = {
     description = "Realtek SDIO Wi-Fi driver";
     homepage = "https://github.com/hadess/rtl8723bs";
     license = stdenv.lib.licenses.gpl2;
-    platforms = [ "x86_64-linux" "i686-linux" ];
-    broken = !stdenv.lib.versionAtLeast kernel.version "3.19";
+    platforms = [ "x86_64-linux" "i686-linux" "armv7l-linux" ];
+    broken = ! versionAtLeast kernel.version "3.19";
+    maintainers = with maintainers; [ elitak ];
   };
 }
diff --git a/pkgs/os-specific/linux/sdparm/default.nix b/pkgs/os-specific/linux/sdparm/default.nix
index fab13a125c42..fb6cc4d9eac0 100644
--- a/pkgs/os-specific/linux/sdparm/default.nix
+++ b/pkgs/os-specific/linux/sdparm/default.nix
@@ -1,11 +1,12 @@
 {stdenv, fetchurl}:
 
-stdenv.mkDerivation {
-  name = "sdparm-1.09";
+stdenv.mkDerivation rec {
+  name = "sdparm-${version}";
+  version = "1.10";
 
   src = fetchurl {
-    url = http://sg.danny.cz/sg/p/sdparm-1.09.tar.xz;
-    sha256 = "0jakqyjwi72zqjzss04bally0xl0lc4710mx8da08vpmir1hfphg";
+    url = "http://sg.danny.cz/sg/p/${name}.tar.xz";
+    sha256 = "1jjq3lzgfy4r76rc26q02lv4wm5cb4dx5nh913h489zjrr4f3jbx";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/os-specific/linux/tomb/default.nix b/pkgs/os-specific/linux/tomb/default.nix
new file mode 100644
index 000000000000..5ed7ad5b959c
--- /dev/null
+++ b/pkgs/os-specific/linux/tomb/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, zsh, pinentry, cryptsetup, gnupg1orig, makeWrapper }:
+
+let
+    version = "2.2";
+in
+
+stdenv.mkDerivation rec {
+  name = "tomb-${version}";
+
+  src = fetchurl {
+    url = "https://files.dyne.org/tomb/tomb-${version}.tar.gz";
+    sha256 = "11msj38fdmymiqcmwq1883kjqi5zr01ybdjj58rfjjrw4zw2w5y0";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  buildPhase = ''
+    # manually patch the interpreter
+    sed -i -e "1s|.*|#!${zsh}/bin/zsh|g" tomb
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mkdir -p $out/share/man/man1
+
+    cp tomb $out/bin/tomb
+    cp doc/tomb.1 $out/share/man/man1
+
+    wrapProgram $out/bin/tomb \
+        --prefix PATH : "${pinentry}/bin" \
+        --prefix PATH : "${cryptsetup}/bin" \
+        --prefix PATH : "${gnupg1orig}/bin"
+  '';
+
+  meta = {
+    description = "File encryption on GNU/Linux";
+    homepage = https://www.dyne.org/software/tomb/;
+    license = stdenv.lib.licenses.gpl3;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}