about summary refs log tree commit diff
path: root/pkgs/os-specific/linux
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/os-specific/linux')
-rw-r--r--pkgs/os-specific/linux/alsa-lib/default.nix4
-rw-r--r--pkgs/os-specific/linux/alsa-plugins/default.nix4
-rw-r--r--pkgs/os-specific/linux/alsa-tools/default.nix4
-rw-r--r--pkgs/os-specific/linux/alsa-utils/default.nix4
-rw-r--r--pkgs/os-specific/linux/android-udev-rules/default.nix4
-rw-r--r--pkgs/os-specific/linux/busybox/default.nix4
-rw-r--r--pkgs/os-specific/linux/conky/default.nix12
-rw-r--r--pkgs/os-specific/linux/criu/criu-2.12.1-glibc-2.26.patch13
-rw-r--r--pkgs/os-specific/linux/criu/default.nix4
-rw-r--r--pkgs/os-specific/linux/dbus-broker/default.nix11
-rw-r--r--pkgs/os-specific/linux/devmem2/default.nix5
-rw-r--r--pkgs/os-specific/linux/fbterm/default.nix5
-rw-r--r--pkgs/os-specific/linux/firmware/fwupd/default.nix83
-rw-r--r--pkgs/os-specific/linux/firmware/fwupd/fix-missing-deps.patch176
-rw-r--r--pkgs/os-specific/linux/fuse/common.nix9
-rw-r--r--pkgs/os-specific/linux/fuse/default.nix4
-rw-r--r--pkgs/os-specific/linux/fuse/fuse3-install_man.patch8
-rw-r--r--pkgs/os-specific/linux/fuse/fuse3-no-udev.patch12
-rw-r--r--pkgs/os-specific/linux/iproute/default.nix4
-rw-r--r--pkgs/os-specific/linux/ipset/default.nix4
-rw-r--r--pkgs/os-specific/linux/jfbview/default.nix8
-rw-r--r--pkgs/os-specific/linux/jfbview/mupdf-1.9.patch28
-rw-r--r--pkgs/os-specific/linux/kernel/common-config.nix1
-rw-r--r--pkgs/os-specific/linux/kernel/hardened-config.nix7
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.13.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.14.nix18
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.4.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.9.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-beagleboard.nix6
-rw-r--r--pkgs/os-specific/linux/kernel/linux-hardened-copperhead.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-mptcp.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-testing.nix10
-rw-r--r--pkgs/os-specific/linux/kernel/manual-config.nix34
-rw-r--r--pkgs/os-specific/linux/kernel/patches.nix10
-rw-r--r--pkgs/os-specific/linux/kernel/perf.nix2
-rw-r--r--pkgs/os-specific/linux/klibc/default.nix2
-rw-r--r--pkgs/os-specific/linux/kmscon/default.nix4
-rw-r--r--pkgs/os-specific/linux/kmscon/kmscon-8-glibc-2.26.patch25
-rw-r--r--pkgs/os-specific/linux/libnscd/default.nix14
-rw-r--r--pkgs/os-specific/linux/libsmbios/default.nix38
-rw-r--r--pkgs/os-specific/linux/libwebcam/default.nix55
-rw-r--r--pkgs/os-specific/linux/libwebcam/uvcdynctrl_symlink_support_and_take_data_dir_from_env.patch65
-rw-r--r--pkgs/os-specific/linux/lvm2/default.nix4
-rw-r--r--pkgs/os-specific/linux/mdadm/4.nix2
-rw-r--r--pkgs/os-specific/linux/mdadm/default.nix2
-rw-r--r--pkgs/os-specific/linux/microcode/intel.nix6
-rw-r--r--pkgs/os-specific/linux/mwprocapture/default.nix3
-rw-r--r--pkgs/os-specific/linux/mwprocapture/linux_4_14_fix.patch60
-rw-r--r--pkgs/os-specific/linux/numactl/default.nix2
-rw-r--r--pkgs/os-specific/linux/nvidia-x11/default.nix10
-rw-r--r--pkgs/os-specific/linux/nvidia-x11/settings.nix3
-rw-r--r--pkgs/os-specific/linux/prl-tools/default.nix69
-rw-r--r--pkgs/os-specific/linux/s6-linux-utils/default.nix4
-rw-r--r--pkgs/os-specific/linux/spl/default.nix11
-rw-r--r--pkgs/os-specific/linux/systemd/default.nix4
-rw-r--r--pkgs/os-specific/linux/usbip/default.nix22
-rw-r--r--pkgs/os-specific/linux/virtualbox/default.nix8
-rw-r--r--pkgs/os-specific/linux/virtualbox/fix_kbuild.patch85
-rw-r--r--pkgs/os-specific/linux/virtualbox/fix_kerndir.patch48
-rw-r--r--pkgs/os-specific/linux/wireguard/default.nix4
-rw-r--r--pkgs/os-specific/linux/zfs/default.nix6
61 files changed, 728 insertions, 346 deletions
diff --git a/pkgs/os-specific/linux/alsa-lib/default.nix b/pkgs/os-specific/linux/alsa-lib/default.nix
index 8a6eb77e6b1e1..5b0d404faaf02 100644
--- a/pkgs/os-specific/linux/alsa-lib/default.nix
+++ b/pkgs/os-specific/linux/alsa-lib/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "alsa-lib-1.1.4.1";
+  name = "alsa-lib-1.1.5";
 
   src = fetchurl {
     urls = [
      "ftp://ftp.alsa-project.org/pub/lib/${name}.tar.bz2"
      "http://alsa.cybermirror.org/lib/${name}.tar.bz2"
     ];
-    sha256 = "0xjvi381105gldhv0z872a0x58sghznyx19j45lw5iyi2h68gfwi";
+    sha256 = "1rhacnlj0grvfagjx5qzsnbhw7m7lyccghqs4jsv0dnsqv9qmxpl";
   };
 
   patches = [
diff --git a/pkgs/os-specific/linux/alsa-plugins/default.nix b/pkgs/os-specific/linux/alsa-plugins/default.nix
index ae0aaa3cb6389..dc11d21ff1cb9 100644
--- a/pkgs/os-specific/linux/alsa-plugins/default.nix
+++ b/pkgs/os-specific/linux/alsa-plugins/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchurl, lib, pkgconfig, alsaLib, libogg, libpulseaudio ? null, libjack2 ? null }:
 
 stdenv.mkDerivation rec {
-  name = "alsa-plugins-1.1.4";
+  name = "alsa-plugins-1.1.5";
 
   src = fetchurl {
     urls = [
       "ftp://ftp.alsa-project.org/pub/plugins/${name}.tar.bz2"
       "http://alsa.cybermirror.org/plugins/${name}.tar.bz2"
     ];
-    sha256 = "12hsvm6rpinjkg06pa9hzndkdrbfw6wk6yk00cm8y1gbv8xiq3ak";
+    sha256 = "073zpgvj4pldmzqq97l40wngvbqnvrkc8yw153mgny9kypwaazbr";
   };
 
   # ToDo: a52, etc.?
diff --git a/pkgs/os-specific/linux/alsa-tools/default.nix b/pkgs/os-specific/linux/alsa-tools/default.nix
index 940dde1f75dd5..d1cae06d7fffc 100644
--- a/pkgs/os-specific/linux/alsa-tools/default.nix
+++ b/pkgs/os-specific/linux/alsa-tools/default.nix
@@ -4,14 +4,14 @@
 
 stdenv.mkDerivation rec {
   name = "alsa-tools-${version}";
-  version = "1.1.3";
+  version = "1.1.5";
 
   src = fetchurl {
     urls = [
       "ftp://ftp.alsa-project.org/pub/tools/${name}.tar.bz2"
       "http://alsa.cybermirror.org/tools/${name}.tar.bz2"
     ];
-    sha256 = "02b75fyfmm9m2iz59d3xa97cas4f697a4pzdxn1i64kjd36iv3yq";
+    sha256 = "0d6m5dm5yskfr6q42cv1ihp5lfgv4a67nj39gpp26ll3vrknag5w";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/os-specific/linux/alsa-utils/default.nix b/pkgs/os-specific/linux/alsa-utils/default.nix
index 4cb4af5ca7240..c9b5b0d2e2dc8 100644
--- a/pkgs/os-specific/linux/alsa-utils/default.nix
+++ b/pkgs/os-specific/linux/alsa-utils/default.nix
@@ -2,14 +2,14 @@
 
 stdenv.mkDerivation rec {
   name = "alsa-utils-${version}";
-  version = "1.1.4";
+  version = "1.1.5";
 
   src = fetchurl {
     urls = [
       "ftp://ftp.alsa-project.org/pub/utils/${name}.tar.bz2"
       "http://alsa.cybermirror.org/utils/${name}.tar.bz2"
     ];
-    sha256 = "17cxih9ibjp1193dyd79j50pyfa9dvrs6r9kpwrvzicjvr2110x7";
+    sha256 = "1s727md6mb408y2cfwzjkx23abxhampyrjdkgpyygdhxx62x42rj";
   };
 
   patchPhase = ''
diff --git a/pkgs/os-specific/linux/android-udev-rules/default.nix b/pkgs/os-specific/linux/android-udev-rules/default.nix
index ffc723e55d266..ff32ca01a97ff 100644
--- a/pkgs/os-specific/linux/android-udev-rules/default.nix
+++ b/pkgs/os-specific/linux/android-udev-rules/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   name = "android-udev-rules-${version}";
-  version = "20171107";
+  version = "20171113";
 
   src = fetchFromGitHub {
     owner = "M0Rf30";
     repo = "android-udev-rules";
     rev = version;
-    sha256 = "17al46an6yhjdpz9gxcxzv3zgzjy5c8yn89jwnjdhbq0gkw28nsy";
+    sha256 = "11gcnk6wjc2sw05hwi4xphvx9ksmkpvsdziaczymqxkaads3f1dy";
   };
 
   installPhase = ''
diff --git a/pkgs/os-specific/linux/busybox/default.nix b/pkgs/os-specific/linux/busybox/default.nix
index 0030f60000d20..03b30af6c3e13 100644
--- a/pkgs/os-specific/linux/busybox/default.nix
+++ b/pkgs/os-specific/linux/busybox/default.nix
@@ -78,7 +78,7 @@ stdenv.mkDerivation rec {
     CONFIG_DEFAULT_SETFONT_DIR "/etc/kbd"
 
     ${extraConfig}
-    CONFIG_CROSS_COMPILER_PREFIX "${stdenv.cc.prefix}"
+    CONFIG_CROSS_COMPILER_PREFIX "${stdenv.cc.targetPrefix}"
     EOF
 
     make oldconfig
@@ -87,7 +87,7 @@ stdenv.mkDerivation rec {
   '';
 
   postConfigure = lib.optionalString useMusl ''
-    makeFlagsArray+=("CC=${stdenv.cc.prefix}gcc -isystem ${musl}/include -B${musl}/lib -L${musl}/lib")
+    makeFlagsArray+=("CC=${stdenv.cc.targetPrefix}gcc -isystem ${musl}/include -B${musl}/lib -L${musl}/lib")
   '';
 
   nativeBuildInputs = lib.optional (hostPlatform != buildPlatform) buildPackages.stdenv.cc;
diff --git a/pkgs/os-specific/linux/conky/default.nix b/pkgs/os-specific/linux/conky/default.nix
index 8aa1cec9e12f4..fd585515cf02c 100644
--- a/pkgs/os-specific/linux/conky/default.nix
+++ b/pkgs/os-specific/linux/conky/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, pkgconfig, cmake
+{ stdenv, fetchFromGitHub, fetchpatch, pkgconfig, cmake
 
 # dependencies
 , glib, libXinerama
@@ -73,6 +73,16 @@ stdenv.mkDerivation rec {
     sha256 = "15j8h251v9jpdg6h6wn1vb45pkk806pf9s5n3rdrps9r185w8hn8";
   };
 
+  patches = [
+    # Patch to fix compilation on gcc-7 from conky PR
+    # https://github.com/brndnmtthws/conky/pull/402
+    (fetchpatch {
+      name = "gcc7.patch";
+      url = "https://github.com/brndnmtthws/conky/commit/6140122b82d50acc333e5d2a813cc1933ecc6d21.patch";
+      sha256 = "1fblfj1w2kc0gshc2pq9lc1pxxsgmgh8byb1xs2v6amx15kj11k7";
+    })
+  ];
+
   postPatch = ''
     sed -i -e '/include.*CheckIncludeFile)/i include(CheckIncludeFiles)' \
       cmake/ConkyPlatformChecks.cmake
diff --git a/pkgs/os-specific/linux/criu/criu-2.12.1-glibc-2.26.patch b/pkgs/os-specific/linux/criu/criu-2.12.1-glibc-2.26.patch
new file mode 100644
index 0000000000000..916161e35a492
--- /dev/null
+++ b/pkgs/os-specific/linux/criu/criu-2.12.1-glibc-2.26.patch
@@ -0,0 +1,13 @@
+--- a/criu/cr-restore.c
++++ b/criu/cr-restore.c
+@@ -650,3 +650,2 @@ static void zombie_prepare_signals(void)
+ 		(1 << SIGSYS)	|\
+-		(1 << SIGUNUSED)|\
+ 		(1 << SIGSTKFLT)|\
+--- a/test/zdtm/static/pthread01.c
++++ b/test/zdtm/static/pthread01.c
+@@ -45,3 +45,3 @@ static char *decode_signal(const sigset_t *s, char *buf)
+ 	COLLECT(SIGXFSZ); COLLECT(SIGVTALRM); COLLECT(SIGPROF); COLLECT(SIGWINCH); COLLECT(SIGIO);
+-	COLLECT(SIGPOLL); COLLECT(SIGPWR); COLLECT(SIGSYS); COLLECT(SIGUNUSED);
++	COLLECT(SIGPOLL); COLLECT(SIGPWR); COLLECT(SIGSYS);
+ #undef COLLECT
diff --git a/pkgs/os-specific/linux/criu/default.nix b/pkgs/os-specific/linux/criu/default.nix
index 23d1c4821b878..4ceb397d9f82c 100644
--- a/pkgs/os-specific/linux/criu/default.nix
+++ b/pkgs/os-specific/linux/criu/default.nix
@@ -11,11 +11,13 @@ stdenv.mkDerivation rec {
     sha256 = "18m0sjgcfvzc86w49fd3kxw145nmrsvc5w7zf42nxdiklmszbr1k";
   };
 
+  patches = [ ./criu-2.12.1-glibc-2.26.patch ];
+
   enableParallelBuilding = true;
   nativeBuildInputs = [ pkgconfig docbook_xsl ];
   buildInputs = [ protobuf protobufc asciidoc xmlto libpaper libnl libcap libnet python ];
 
-  patchPhase = ''
+  postPatch = ''
     chmod +w ./scripts/gen-offsets.sh
     substituteInPlace ./scripts/gen-offsets.sh --replace hexdump ${utillinux}/bin/hexdump
     substituteInPlace ./Documentation/Makefile --replace "2>/dev/null" ""
diff --git a/pkgs/os-specific/linux/dbus-broker/default.nix b/pkgs/os-specific/linux/dbus-broker/default.nix
index 7caf5e359d034..d2b3f6005b230 100644
--- a/pkgs/os-specific/linux/dbus-broker/default.nix
+++ b/pkgs/os-specific/linux/dbus-broker/default.nix
@@ -1,21 +1,24 @@
-{ stdenv, fetchgit, fetchFromGitHub, meson, ninja, pkgconfig
+{ stdenv, fetchgit, fetchFromGitHub, docutils, meson, ninja, pkgconfig
 , dbus, glib, systemd }:
 
 stdenv.mkDerivation rec {
   name = "dbus-broker-${version}";
-  version = "3";
+  version = "8";
 
   src = fetchFromGitHub {
     owner           = "bus1";
     repo            = "dbus-broker";
     rev             = "v${version}";
-    sha256          = "1f2vw5b2cbdgd3g7vnzwr9lsw9v4xc5nc0nf9xc3qb5xqzsq7v7i";
+    sha256          = "07k8y6pcx58dfd0vvxcbz352v4apajs5lf0chv6fdp7xf7wbbcwb";
     fetchSubmodules = true;
   };
 
-  nativeBuildInputs = [ meson ninja pkgconfig ];
+  nativeBuildInputs = [ docutils meson ninja pkgconfig ];
+
   buildInputs = [ dbus glib systemd ];
 
+  enableParallelBuilding = true;
+
   prePatch = ''
     substituteInPlace meson.build \
       --replace "dep_systemd.get_pkgconfig_variable('systemdsystemunitdir')" "'$out/lib/systemd/system'" \
diff --git a/pkgs/os-specific/linux/devmem2/default.nix b/pkgs/os-specific/linux/devmem2/default.nix
index 969197c2dc9d1..e38a76ca89124 100644
--- a/pkgs/os-specific/linux/devmem2/default.nix
+++ b/pkgs/os-specific/linux/devmem2/default.nix
@@ -4,7 +4,10 @@ stdenv.mkDerivation rec {
   name = "devmem2-2004-08-05";
 
   src = fetchurl {
-    url = "http://lartmaker.nl/lartware/port/devmem2.c";
+    urls = [
+      "http://lartmaker.nl/lartware/port/devmem2.c"
+      "https://raw.githubusercontent.com/hackndev/tools/7ed212230f8fbb1da3424a15ee88de3279bf96ec/devmem2.c"
+    ];
     sha256 = "14f1k7v6i1yaxg4xcaaf5i4aqn0yabba857zjnbg9wiymy82qf7c";
   };
 
diff --git a/pkgs/os-specific/linux/fbterm/default.nix b/pkgs/os-specific/linux/fbterm/default.nix
index 918527aa318b7..70c1a8cfdf557 100644
--- a/pkgs/os-specific/linux/fbterm/default.nix
+++ b/pkgs/os-specific/linux/fbterm/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, gpm, freetype, fontconfig, pkgconfig, ncurses, libx86}:
+{stdenv, lib, fetchurl, gpm, freetype, fontconfig, pkgconfig, ncurses, libx86}:
 let
   s = # Generated upstream information
   rec {
@@ -9,7 +9,8 @@ let
     url="http://fbterm.googlecode.com/files/fbterm-1.7.0.tar.gz";
     sha256="0pciv5by989vzvjxsv1jsv4bdp4m8j0nfbl29jm5fwi12w4603vj";
   };
-  buildInputs = [gpm freetype fontconfig ncurses libx86];
+  buildInputs = [gpm freetype fontconfig ncurses]
+    ++ lib.optional (stdenv.isi686 || stdenv.isx86_64) libx86;
 in
 stdenv.mkDerivation {
   inherit (s) name version;
diff --git a/pkgs/os-specific/linux/firmware/fwupd/default.nix b/pkgs/os-specific/linux/firmware/fwupd/default.nix
index 09ca05484f7fb..988f4efb9cdb7 100644
--- a/pkgs/os-specific/linux/firmware/fwupd/default.nix
+++ b/pkgs/os-specific/linux/firmware/fwupd/default.nix
@@ -1,31 +1,56 @@
 { stdenv, fetchurl, gtk_doc, pkgconfig, gobjectIntrospection, intltool
-, libgudev, polkit, appstream-glib, gusb, sqlite, libarchive
-, libsoup, docbook2x, gpgme, libxslt, libelf, libsmbios, efivar
-, fwupdate, libyaml, valgrind, meson, libuuid, pygobject3
-, pillow, ninja, gcab
+, libgudev, polkit, appstream-glib, gusb, sqlite, libarchive, glib_networking
+, libsoup, docbook2x, gpgme, libxslt, libelf, libsmbios, efivar, glibcLocales
+, fwupdate, libyaml, valgrind, meson, libuuid, pygobject3, colord
+, pillow, ninja, gcab, gnutls, python3Packages, wrapGAppsHook
 }:
-let version = "0.9.6";
-in
-  stdenv.mkDerivation
-    { name = "fwupd-${version}";
-      src = fetchurl
-        { url = "https://people.freedesktop.org/~hughsient/releases/fwupd-${version}.tar.xz";
-          sha256 = "0h3y4ygckvkjdx7yxwbm273iv84yk37ivlcf4xvq95g64vs8gfhf";
-        };
-      buildInputs =
-        [ gtk_doc pkgconfig gobjectIntrospection intltool libgudev
-          polkit appstream-glib gusb sqlite libarchive libsoup
-          docbook2x libxslt libelf libsmbios fwupdate libyaml valgrind
-          meson gpgme libuuid pygobject3 pillow ninja gcab
-        ];
-      patches = [ ./fix-missing-deps.patch ];
-      preConfigure = ''
-        export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${efivar}/include/efivar"
-      '';
-      mesonFlags = [ "-Denable-colorhug=false" "-Denable-man=false" "-Denable-tests=false" "--localstatedir=/var" "-Denable-doc=false" "-Dwith-bootdir=/boot" ];
-      enableParallelBuilding = true;
-      meta =
-        { license = [ stdenv.lib.licenses.gpl2 ];
-          platforms = stdenv.lib.platforms.linux;
-        };
-    }
+let
+  version = "1.0.1";
+in stdenv.mkDerivation {
+  name = "fwupd-${version}";
+  src = fetchurl {
+    url = "https://people.freedesktop.org/~hughsient/releases/fwupd-${version}.tar.xz";
+    sha256 = "1k627rja7df51dkzqvkzgbwrrj4049k6408d01m34n66zwr2fp59";
+  };
+
+  nativeBuildInputs = [
+    meson ninja gtk_doc pkgconfig gobjectIntrospection intltool glibcLocales
+    valgrind gcab docbook2x libxslt pygobject3 python3Packages.pycairo wrapGAppsHook
+  ];
+  buildInputs = [
+    polkit appstream-glib gusb sqlite libarchive libsoup libelf libsmbios fwupdate libyaml
+    libgudev colord gpgme libuuid pillow gnutls glib_networking
+  ];
+
+  LC_ALL = "en_US.UTF-8"; # For po/make-images
+
+  NIX_CFLAGS_COMPILE = [
+    "-I${efivar}/include/efivar"
+    # warning: "__LIBELF_INTERNAL__" is not defined
+    "-Wno-error=undef"
+  ];
+
+  patches = [
+    ./fix-missing-deps.patch
+  ];
+  postPatch = ''
+    patchShebangs .
+  '';
+
+  mesonFlags = [
+    "-Denable-man=false"
+    "-Denable-tests=false"
+    "-Denable-doc=false"
+    "-Dwith-bootdir=/boot"
+    "-Dwith-udevdir=lib/udev"
+    "-Dwith-systemdunitdir=lib/systemd/system"
+    "--localstatedir=/var"
+  ];
+
+  enableParallelBuilding = true;
+  meta = {
+    homepage = https://fwupd.org/;
+    license = [ stdenv.lib.licenses.gpl2 ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/os-specific/linux/firmware/fwupd/fix-missing-deps.patch b/pkgs/os-specific/linux/firmware/fwupd/fix-missing-deps.patch
index be199227f3f82..46e11952afe0a 100644
--- a/pkgs/os-specific/linux/firmware/fwupd/fix-missing-deps.patch
+++ b/pkgs/os-specific/linux/firmware/fwupd/fix-missing-deps.patch
@@ -1,86 +1,99 @@
-diff -Naur fwupd-0.9.6-orig/data/meson.build fwupd-0.9.6/data/meson.build
---- fwupd-0.9.6-orig/data/meson.build	2017-08-03 05:45:02.000000000 -0400
-+++ fwupd-0.9.6/data/meson.build	2017-09-02 19:58:37.324596487 -0400
-@@ -20,7 +20,7 @@
+--- a/data/builder/meson.build
++++ b/data/builder/meson.build
+@@ -1,3 +0,0 @@
+-install_data('README.md',
+-  install_dir : join_paths(get_option('localstatedir'), 'lib', 'fwupd', 'builder')
+-)
+--- a/data/meson.build
++++ b/data/meson.build
+@@ -7,16 +7,12 @@
+   subdir('installed-tests')
+ endif
+ 
+-install_data(['daemon.conf'],
+-  install_dir : join_paths(get_option('sysconfdir'), 'fwupd')
+-)
+-
+ install_data(['org.freedesktop.fwupd.metainfo.xml'],
+   install_dir: join_paths(get_option('datadir'), 'metainfo')
  )
  
- install_data(['90-fwupd-devices.rules'],
--  install_dir : join_paths(udev.get_pkgconfig_variable('udevdir'), 'rules.d')
-+  install_dir : join_paths(get_option('prefix'), 'lib', 'udev', 'rules.d')
+ install_data(['org.freedesktop.fwupd.conf'],
+-  install_dir : join_paths(get_option('sysconfdir'), 'dbus-1', 'system.d')
++  install_dir : join_paths(get_option('prefix'), 'etc', 'dbus-1', 'system.d')
  )
  
- con2 = configuration_data()
-@@ -52,7 +52,7 @@
-     output : 'fwupd-offline-update.service',
-     configuration : con2,
-     install: true,
--    install_dir: systemd.get_pkgconfig_variable('systemdsystemunitdir'),
-+    install_dir: join_paths(get_option('prefix'), 'lib', 'systemd', 'system'),
+ install_data(['metadata.xml'],
+--- a/data/pki/meson.build
++++ b/data/pki/meson.build
+@@ -3,13 +3,13 @@
+       'GPG-KEY-Hughski-Limited',
+       'GPG-KEY-Linux-Vendor-Firmware-Service',
+     ],
+-    install_dir : join_paths(get_option('sysconfdir'), 'pki', 'fwupd')
++    install_dir : join_paths(get_option('prefix'), 'etc', 'pki', 'fwupd')
    )
- endif
  
-@@ -63,6 +63,6 @@
-     output : 'fwupd.service',
-     configuration : con2,
-     install: true,
--    install_dir: systemd.get_pkgconfig_variable('systemdsystemunitdir'),
-+    install_dir: join_paths(get_option('prefix'), 'lib', 'systemd', 'system'),
+   install_data([
+       'GPG-KEY-Linux-Vendor-Firmware-Service',
+     ],
+-    install_dir : join_paths(get_option('sysconfdir'), 'pki', 'fwupd-metadata')
++    install_dir : join_paths(get_option('prefix'), 'etc', 'pki', 'fwupd-metadata')
    )
  endif
-diff -Naur fwupd-0.9.6-orig/libdfu/meson.build fwupd-0.9.6/libdfu/meson.build
---- fwupd-0.9.6-orig/libdfu/meson.build	2017-08-03 05:45:02.000000000 -0400
-+++ fwupd-0.9.6/libdfu/meson.build	2017-09-02 19:58:37.325596508 -0400
-@@ -23,6 +23,10 @@
-   giounix,
-   libm,
-   gusb,
-+  uuid,
-+  libarchive,
-+  soup,
-+  libgcab
- ]
  
- if get_option('enable-libelf')
-diff -Naur fwupd-0.9.6-orig/meson.build fwupd-0.9.6/meson.build
---- fwupd-0.9.6-orig/meson.build	2017-08-03 05:45:02.000000000 -0400
-+++ fwupd-0.9.6/meson.build	2017-09-02 19:59:07.406216716 -0400
-@@ -124,6 +124,7 @@
- if polkit.version().version_compare('>= 0.114')
-   conf.set('HAVE_POLKIT_0_114', '1')
+@@ -17,12 +17,12 @@
+   install_data([
+       'LVFS-CA.pem',
+     ],
+-    install_dir : join_paths(get_option('sysconfdir'), 'pki', 'fwupd')
++    install_dir : join_paths(get_option('prefix'), 'etc', 'pki', 'fwupd')
+   )
+   install_data([
+       'LVFS-CA.pem',
+     ],
+-    install_dir : join_paths(get_option('sysconfdir'), 'pki', 'fwupd-metadata')
++    install_dir : join_paths(get_option('prefix'), 'etc', 'pki', 'fwupd-metadata')
+   )
  endif
-+libgcab = dependency('libgcab-1.0')
- gudev = dependency('gudev-1.0')
- appstream_glib = dependency('appstream-glib', version : '>= 0.6.9')
- gusb = dependency('gusb', version : '>= 0.2.9')
-@@ -200,7 +201,7 @@
-                         'fwupd-plugins-2')
- conf.set_quoted('PLUGINDIR', plugin_dir)
  
--conf.set_quoted('SYSCONFDIR', get_option('sysconfdir'))
-+conf.set_quoted('SYSCONFDIR', '/etc')
- conf.set_quoted('BINDIR',
-                 join_paths(get_option('prefix'),
-                            get_option('bindir')))
-@@ -227,6 +228,9 @@
- plugin_deps += gmodule
- plugin_deps += gusb
- plugin_deps += soup
-+plugin_deps += libarchive
-+plugin_deps += uuid
-+plugin_deps += libgcab
- 
- subdir('data')
- subdir('docs')
-@@ -255,6 +259,3 @@
-   endif
+--- a/data/remotes.d/meson.build
++++ b/data/remotes.d/meson.build
+@@ -3,7 +3,7 @@
+       'lvfs.conf',
+       'lvfs-testing.conf',
+     ],
+-    install_dir : join_paths(get_option('sysconfdir'), 'fwupd', 'remotes.d')
++    install_dir : join_paths(get_option('prefix'), 'etc', 'fwupd', 'remotes.d')
+   )
  endif
  
--if get_option('enable-systemd')
--  meson.add_install_script('meson_post_install.sh', systemd.get_pkgconfig_variable('systemdsystemunitdir'), localstatedir)
--endif
-diff -Naur fwupd-0.9.6-orig/po/make-images.sh fwupd-0.9.6/po/make-images.sh
---- fwupd-0.9.6-orig/po/make-images.sh	2017-08-03 05:45:02.000000000 -0400
-+++ fwupd-0.9.6/po/make-images.sh	2017-09-02 19:58:37.328596570 -0400
+@@ -19,12 +19,12 @@
+   output : 'fwupd.conf',
+   configuration : con2,
+   install: true,
+-  install_dir: join_paths(get_option('sysconfdir'), 'fwupd', 'remotes.d'),
++  install_dir: join_paths(get_option('prefix'), 'etc', 'fwupd', 'remotes.d'),
+ )
+ configure_file(
+   input : 'vendor.conf',
+   output : 'vendor.conf',
+   configuration : con2,
+   install: true,
+-  install_dir: join_paths(get_option('sysconfdir'), 'fwupd', 'remotes.d'),
++  install_dir: join_paths(get_option('prefix'), 'etc', 'fwupd', 'remotes.d'),
+ )
+--- a/meson_post_install.sh
++++ b/meson_post_install.sh
+@@ -11,6 +11,4 @@
+     echo 'Updating systemd deps'
+     mkdir -p ${DESTDIR}${SYSTEMDUNITDIR}/system-update.target.wants
+     ln -sf ../fwupd-offline-update.service ${DESTDIR}${SYSTEMDUNITDIR}/system-update.target.wants/fwupd-offline-update.service
+-    echo 'Creating stateful directory'
+-    mkdir -p ${DESTDIR}${LOCALSTATEDIR}/lib/fwupd
+ #fi
+--- a/po/make-images.sh
++++ b/po/make-images.sh
 @@ -7,6 +7,7 @@
  #
  install -m 0755 -d ${MESON_INSTALL_DESTDIR_PREFIX}/share/locale/
@@ -89,26 +102,3 @@ diff -Naur fwupd-0.9.6-orig/po/make-images.sh fwupd-0.9.6/po/make-images.sh
  for x in ${MESON_INSTALL_DESTDIR_PREFIX}/share/locale/*/LC_IMAGES/*.bmp ; do
      gzip -f ${x}
  done
-diff -Naur fwupd-0.9.6-orig/src/meson.build fwupd-0.9.6/src/meson.build
---- fwupd-0.9.6-orig/src/meson.build	2017-08-03 05:45:02.000000000 -0400
-+++ fwupd-0.9.6/src/meson.build	2017-09-02 19:58:37.329596590 -0400
-@@ -24,6 +24,9 @@
-     polkit,
-     soup,
-     sqlite,
-+    uuid,
-+    libarchive,
-+    libgcab
-   ],
-   link_with : fwupd,
-   c_args : [
-@@ -73,6 +76,9 @@
-     gpgme,
-     gpgerror,
-     valgrind,
-+    uuid,
-+    libarchive,
-+    libgcab
-   ],
-   link_with : fwupd,
-   c_args : [
diff --git a/pkgs/os-specific/linux/fuse/common.nix b/pkgs/os-specific/linux/fuse/common.nix
index b18b6de0d140d..b9ac015f45918 100644
--- a/pkgs/os-specific/linux/fuse/common.nix
+++ b/pkgs/os-specific/linux/fuse/common.nix
@@ -25,12 +25,7 @@ in stdenv.mkDerivation rec {
         url = "https://github.com/libfuse/libfuse/commit/914871b20a901e3e1e981c92bc42b1c93b7ab81b.patch";
         sha256 = "1w4j6f1awjrycycpvmlv0x5v9gprllh4dnbjxl4dyl2jgbkaw6pa";
       })
-    ++ stdenv.lib.optionals isFuse3 [
-      ./fuse3-no-udev.patch # only required for udevrulesdir
-      ./fuse3-install.patch
-      # install_man makes the build non-reproducible by encoding the date
-      ./fuse3-install_man.patch
-    ];
+    ++ stdenv.lib.optional isFuse3 ./fuse3-install.patch;
 
 
   nativeBuildInputs = if isFuse3
@@ -40,6 +35,8 @@ in stdenv.mkDerivation rec {
 
   outputs = [ "out" ] ++ stdenv.lib.optional isFuse3 "common";
 
+  mesonFlags = stdenv.lib.optional isFuse3 "-Dudevrulesdir=etc/udev/rules.d";
+
   preConfigure = ''
     export MOUNT_FUSE_PATH=$out/sbin
     export INIT_D_PATH=$TMPDIR/etc/init.d
diff --git a/pkgs/os-specific/linux/fuse/default.nix b/pkgs/os-specific/linux/fuse/default.nix
index 669d115aab991..7856f6389c7d0 100644
--- a/pkgs/os-specific/linux/fuse/default.nix
+++ b/pkgs/os-specific/linux/fuse/default.nix
@@ -13,8 +13,8 @@ in {
   };
 
   fuse_3 = mkFuse {
-    version = "3.2.0";
-    sha256Hash = "0bfpwkfamg4rcbq1s7v5rblpisqq73z6d5j3dxypgqll07hfg51x";
+    version = "3.2.1";
+    sha256Hash = "19bsvb5lc8k1i0h5ld109kixn6mdshzvg3y7820k9mnw34kh09y0";
     maintainers = [ maintainers.primeos ];
   };
 }
diff --git a/pkgs/os-specific/linux/fuse/fuse3-install_man.patch b/pkgs/os-specific/linux/fuse/fuse3-install_man.patch
deleted file mode 100644
index 491f92e364f6c..0000000000000
--- a/pkgs/os-specific/linux/fuse/fuse3-install_man.patch
+++ /dev/null
@@ -1,8 +0,0 @@
---- a/doc/meson.build	1970-01-01 01:00:01.000000000 +0100
-+++ b/doc/meson.build	2017-09-22 01:53:01.859190506 +0200
-@@ -1,5 +1,4 @@
- # Attention, emacs, please use -*- mode: python -*-
- # (even though this isn't actually Python code)
- 
--install_man('fusermount3.1', 'mount.fuse.8')
- 
diff --git a/pkgs/os-specific/linux/fuse/fuse3-no-udev.patch b/pkgs/os-specific/linux/fuse/fuse3-no-udev.patch
deleted file mode 100644
index c48abfe59c53c..0000000000000
--- a/pkgs/os-specific/linux/fuse/fuse3-no-udev.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-+++ b/util/meson.build	2017-09-23 20:59:31.555392297 +0200
---- a/util/meson.build	2017-09-23 20:59:58.333180437 +0200
-@@ -18,8 +18,7 @@
-            install: true,
-            install_dir: get_option('sbindir'))
- 
--udev = dependency('udev')
--udevrulesdir = join_paths(udev.get_pkgconfig_variable('udevdir'), 'rules.d')
-+udevrulesdir = 'etc/udev/rules.d'
- 
- meson.add_install_script('install_helper.sh', get_option('sysconfdir'),
-                          get_option('bindir'), udevrulesdir)
diff --git a/pkgs/os-specific/linux/iproute/default.nix b/pkgs/os-specific/linux/iproute/default.nix
index b64278ae4ba09..be9be49208a43 100644
--- a/pkgs/os-specific/linux/iproute/default.nix
+++ b/pkgs/os-specific/linux/iproute/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "iproute2-${version}";
-  version = "4.13.0";
+  version = "4.14.1";
 
   src = fetchurl {
     url = "mirror://kernel/linux/utils/net/iproute2/${name}.tar.xz";
-    sha256 = "0l2w84cwr54gaw3cbxijf614l76hx8mgcz57v81rwl68z3nq3yww";
+    sha256 = "0rq0n7yxb0hmk0s6wx5awzjgf7ikjbibd0a5ix20ldfcmxlc0fnl";
   };
 
   preConfigure = ''
diff --git a/pkgs/os-specific/linux/ipset/default.nix b/pkgs/os-specific/linux/ipset/default.nix
index 93a0f8a4c2909..6039ada44e245 100644
--- a/pkgs/os-specific/linux/ipset/default.nix
+++ b/pkgs/os-specific/linux/ipset/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, pkgconfig, libmnl }:
 
 stdenv.mkDerivation rec {
-  name = "ipset-6.27";
+  name = "ipset-6.34";
 
   src = fetchurl {
     url = "http://ipset.netfilter.org/${name}.tar.bz2";
-    sha256 = "0ddj66wr0xh9v6ks430l8r80lj2s9qc44d9c2ik48lwm0fl9fj3j";
+    sha256 = "106nv1ngcvap0mqmb6jm07lc1q3w796rkzc1vrfs4yhbcwdq63np";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/os-specific/linux/jfbview/default.nix b/pkgs/os-specific/linux/jfbview/default.nix
index 310cdbd1eee8a..fab66a329e2e3 100644
--- a/pkgs/os-specific/linux/jfbview/default.nix
+++ b/pkgs/os-specific/linux/jfbview/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchFromGitHub
-, freetype, harfbuzz, jbig2dec, libjpeg, libX11, mujs, mupdf, ncurses, openjpeg
+, freetype, harfbuzz, jbig2dec, libjpeg, libX11, mupdf, ncurses, openjpeg
 , openssl
 
 , imageSupport ? true, imlib2 ? null }:
@@ -27,16 +27,12 @@ stdenv.mkDerivation rec {
   hardeningDisable = [ "format" ];
 
   buildInputs = [
-    freetype harfbuzz jbig2dec libjpeg libX11 mujs mupdf ncurses openjpeg
+    freetype harfbuzz jbig2dec libjpeg libX11 mupdf ncurses openjpeg
     openssl
   ] ++ stdenv.lib.optionals imageSupport [
     imlib2
   ];
 
-  patches = [
-    ./mupdf-1.9.patch
-  ];
-
   configurePhase = ''
     # Hack. Probing (`ldconfig -p`) fails with ‘cannot execute binary file’.
     # Overriding `OPENJP2 =` later works, but makes build output misleading:
diff --git a/pkgs/os-specific/linux/jfbview/mupdf-1.9.patch b/pkgs/os-specific/linux/jfbview/mupdf-1.9.patch
deleted file mode 100644
index 99d7377239bf3..0000000000000
--- a/pkgs/os-specific/linux/jfbview/mupdf-1.9.patch
+++ /dev/null
@@ -1,28 +0,0 @@
---- JFBView-0.5.2-src/Makefile	2016-06-11 23:27:54.969894750 -0700
-+++ JFBView-0.5.2-src/Makefile	2016-06-11 23:24:45.181142832 -0700
-@@ -134,13 +134,22 @@
- 
- .PHONY: detect_libopenjp2
- detect_libopenjp2:
--	$(eval OPENJP2 = $(shell ldconfig -p | grep -q libopenjp2 && echo 'openjp2' || echo 'openjpeg'))
-+	$(eval OPENJP2 = $(shell echo libopenjp2 | grep -q libopenjp2 && echo 'openjp2'  || echo 'openjpeg'))
- 	@echo "OPENJP2 = $(OPENJP2)" >> $(CONFIG_MK)
- 
- # mupdf_version only depends on -lmupdf.
- mupdf_version: mupdf_version.cpp
--	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDLIBS) -lmupdf
--
-+	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDLIBS) -lmupdf \
-+    -lpthread \
-+    -lform \
-+    -lncurses \
-+    -lfreetype \
-+    -lharfbuzz \
-+    -lz \
-+    -ljbig2dec \
-+    -ljpeg \
-+    -lmujs \
-+    -lopenjp2
- endif
- 
- 
diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix
index 0f7ad055af867..64f8163369bbe 100644
--- a/pkgs/os-specific/linux/kernel/common-config.nix
+++ b/pkgs/os-specific/linux/kernel/common-config.nix
@@ -571,6 +571,7 @@ with stdenv.lib;
   ${optionalString (versionOlder version "4.14") ''
     MEDIA_RC_SUPPORT y
   ''}
+  MEDIA_CONTROLLER y
   MEDIA_USB_SUPPORT y
   MEDIA_PCI_SUPPORT y
   MEDIA_ANALOG_TV_SUPPORT y
diff --git a/pkgs/os-specific/linux/kernel/hardened-config.nix b/pkgs/os-specific/linux/kernel/hardened-config.nix
index 3744c28e204f4..a859a3cefbd48 100644
--- a/pkgs/os-specific/linux/kernel/hardened-config.nix
+++ b/pkgs/os-specific/linux/kernel/hardened-config.nix
@@ -82,6 +82,10 @@ HARDENED_USERCOPY y
 # Randomize allocator freelists.
 SLAB_FREELIST_RANDOM y
 
+${optionalString (versionAtLeast version "4.14") ''
+  SLAB_FREELIST_HARDENED y
+''}
+
 # Wipe higher-level memory allocations on free() with page_poison=1
 PAGE_POISONING y
 PAGE_POISONING_NO_SANITY y
@@ -96,6 +100,9 @@ GCC_PLUGINS y # Enable gcc plugin options
 ${optionalString (versionAtLeast version "4.11") ''
   GCC_PLUGIN_STRUCTLEAK y # A port of the PaX structleak plugin
 ''}
+${optionalString (versionAtLeast version "4.14") ''
+  GCC_PLUGIN_STRUCTLEAK_BYREF_ALL y # Also cover structs passed by address
+''}
 
 # Disable various dangerous settings
 ACPI_CUSTOM_METHOD n # Allows writing directly to physical memory
diff --git a/pkgs/os-specific/linux/kernel/linux-4.13.nix b/pkgs/os-specific/linux/kernel/linux-4.13.nix
index d214422583317..72ae02bbecdef 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.13.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.13.nix
@@ -1,11 +1,11 @@
 { stdenv, hostPlatform, fetchurl, perl, buildLinux, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "4.13.12";
+  version = "4.13.16";
   extraMeta.branch = "4.13";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "0x6yz5yb25789ky6hm55abja9374gcaqz06hg7rmmap3y1dhd65z";
+    sha256 = "0cf7prqzl1ajbgl98w0symdyn0k5wl5xaf1l5ldgy6l083yg69dh";
   };
 } // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-4.14.nix b/pkgs/os-specific/linux/kernel/linux-4.14.nix
new file mode 100644
index 0000000000000..127a65b715c2f
--- /dev/null
+++ b/pkgs/os-specific/linux/kernel/linux-4.14.nix
@@ -0,0 +1,18 @@
+{ stdenv, hostPlatform, fetchurl, perl, buildLinux, ... } @ args:
+
+with stdenv.lib;
+
+import ./generic.nix (args // rec {
+  version = "4.14.2";
+
+  # modDirVersion needs to be x.y.z, will automatically add .0 if needed
+  modDirVersion = concatStrings (intersperse "." (take 3 (splitString "." "${version}.0")));
+
+  # branchVersion needs to be x.y
+  extraMeta.branch = concatStrings (intersperse "." (take 2 (splitString "." version)));
+
+  src = fetchurl {
+    url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
+    sha256 = "0k264zxibhldgi9fcax11bjdv89jkdn1nbvvng312j2f19i909p9";
+  };
+} // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-4.4.nix b/pkgs/os-specific/linux/kernel/linux-4.4.nix
index 324d2e8291e8a..11809364d96c3 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.4.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.4.nix
@@ -1,11 +1,11 @@
 { stdenv, hostPlatform, fetchurl, perl, buildLinux, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "4.4.97";
+  version = "4.4.102";
   extraMeta.branch = "4.4";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "03hnm66nv7l1f21z893rghgpgghs1i2pxzhcahpi7d6nsm5mwqgq";
+    sha256 = "1zmaispqs9lw1kyalhln2l53hsg99riisgnmc50qj7cyalmc5qpd";
   };
 } // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-4.9.nix b/pkgs/os-specific/linux/kernel/linux-4.9.nix
index 86108f553b8ab..3e3626cb39d4b 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.9.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.9.nix
@@ -1,11 +1,11 @@
 { stdenv, hostPlatform, fetchurl, perl, buildLinux, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "4.9.61";
+  version = "4.9.65";
   extraMeta.branch = "4.9";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "17ni4skllgd24ddg1ifj1s9b5mqx38filrabgmlw7w4ff9src8z0";
+    sha256 = "15a8a7p6i2dgiglps22cwsy5gsfkc39fy4jzvhjwz8s9fn3p1fi4";
   };
 } // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-beagleboard.nix b/pkgs/os-specific/linux/kernel/linux-beagleboard.nix
index b0d9f04efc845..33885a082d635 100644
--- a/pkgs/os-specific/linux/kernel/linux-beagleboard.nix
+++ b/pkgs/os-specific/linux/kernel/linux-beagleboard.nix
@@ -1,8 +1,8 @@
 { stdenv, hostPlatform, fetchFromGitHub, perl, buildLinux, ... } @ args:
 
 let
-  modDirVersion = "4.9.59";
-  tag = "r73";
+  modDirVersion = "4.9.61";
+  tag = "r76";
 in
 import ./generic.nix (args // rec {
   version = "${modDirVersion}-ti-${tag}";
@@ -12,7 +12,7 @@ import ./generic.nix (args // rec {
     owner = "beagleboard";
     repo = "linux";
     rev = "${version}";
-    sha256 = "1kzbbaqmzgvfls1v9jir2ck9vcdd774mq474vhr5x6dqjnnb5kg9";
+    sha256 = "0hcz4fwjyic42mrn8qsvzm4jq1g5k51awjj3d2das7k8frjalaby";
   };
 
   kernelPatches = args.kernelPatches;
diff --git a/pkgs/os-specific/linux/kernel/linux-hardened-copperhead.nix b/pkgs/os-specific/linux/kernel/linux-hardened-copperhead.nix
index 55b40c9cd7daa..863b6dcae7827 100644
--- a/pkgs/os-specific/linux/kernel/linux-hardened-copperhead.nix
+++ b/pkgs/os-specific/linux/kernel/linux-hardened-copperhead.nix
@@ -3,9 +3,9 @@
 with stdenv.lib;
 
 let
-  version = "4.13.12";
+  version = "4.14.2";
   revision = "a";
-  sha256 = "10zfdv0s5jdpp9nqbxi34wwf1pqh3fjflgcd60f7cbr95ivvkl9r";
+  sha256 = "0bpkff1phc68shw6spkhd6zbxgjkgvdglym8b2hp383h14845qhb";
 
   # modVersion needs to be x.y.z, will automatically add .0 if needed
   modVersion = concatStrings (intersperse "." (take 3 (splitString "." "${version}.0")));
diff --git a/pkgs/os-specific/linux/kernel/linux-mptcp.nix b/pkgs/os-specific/linux/kernel/linux-mptcp.nix
index c7e9859ded79b..92b202100a63d 100644
--- a/pkgs/os-specific/linux/kernel/linux-mptcp.nix
+++ b/pkgs/os-specific/linux/kernel/linux-mptcp.nix
@@ -1,6 +1,6 @@
 { stdenv, hostPlatform, fetchFromGitHub, perl, buildLinux, ... } @ args:
 
-import ./generic.nix (args // rec {
+import ./generic.nix (rec {
   mptcpVersion = "0.93";
   modDirVersion = "4.9.60";
   version = "${modDirVersion}-mptcp_v${mptcpVersion}";
@@ -43,4 +43,4 @@ import ./generic.nix (args // rec {
     TCP_CONG_BALIA m
 
   '' + (args.extraConfig or "");
-} // (args.argsOverride or {}))
+} // args // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-testing.nix b/pkgs/os-specific/linux/kernel/linux-testing.nix
index 54e37e7213039..3fe9ff8e28709 100644
--- a/pkgs/os-specific/linux/kernel/linux-testing.nix
+++ b/pkgs/os-specific/linux/kernel/linux-testing.nix
@@ -1,13 +1,13 @@
-{ stdenv, hostPlatform, fetchurl, perl, buildLinux, ... } @ args:
+{ stdenv, hostPlatform, fetchurl, perl, buildLinux, libelf, utillinux, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "4.14-rc8";
-  modDirVersion = "4.14.0-rc8";
-  extraMeta.branch = "4.14";
+  version = "4.15-rc1";
+  modDirVersion = "4.15.0-rc1";
+  extraMeta.branch = "4.15";
 
   src = fetchurl {
     url = "https://git.kernel.org/torvalds/t/linux-${version}.tar.gz";
-    sha256 = "0ir2ggflm1xjnn1kvv2c99m5zni5kg0ygzlpm588wnhkzd93nqjh";
+    sha256 = "1l7c132qb5qjd80hga03ivssfq65brqyd95sb4rd065dqrixp20n";
   };
 
   # Should the testing kernels ever be built on Hydra?
diff --git a/pkgs/os-specific/linux/kernel/manual-config.nix b/pkgs/os-specific/linux/kernel/manual-config.nix
index 28ad5aeca35f6..b4ee23079d930 100644
--- a/pkgs/os-specific/linux/kernel/manual-config.nix
+++ b/pkgs/os-specific/linux/kernel/manual-config.nix
@@ -1,4 +1,6 @@
 { runCommand, nettools, bc, perl, gmp, libmpc, mpfr, kmod, openssl
+, libelf ? null
+, utillinux ? null
 , writeTextFile, ubootTools
 , hostPlatform
 }:
@@ -110,7 +112,7 @@ let
         make $makeFlags prepare
         actualModDirVersion="$(cat $buildRoot/include/config/kernel.release)"
         if [ "$actualModDirVersion" != "${modDirVersion}" ]; then
-          echo "Error: modDirVersion specified in the Nix expression is wrong, it should be: $actualModDirVersion"
+          echo "Error: modDirVersion ${modDirVersion} specified in the Nix expression is wrong, it should be: $actualModDirVersion"
           exit 1
         fi
 
@@ -158,6 +160,13 @@ let
         cp $buildRoot/{.config,Module.symvers} $dev/lib/modules/${modDirVersion}/build
         make modules_prepare $makeFlags "''${makeFlagsArray[@]}" O=$dev/lib/modules/${modDirVersion}/build
 
+        # Keep some extra files on some arches (powerpc, aarch64)
+        for f in arch/powerpc/lib/crtsavres.o arch/arm64/kernel/ftrace-mod.o; do
+          if [ -f "$buildRoot/$f" ]; then
+            cp $buildRoot/$f $dev/lib/modules/${modDirVersion}/build/$f
+          fi
+        done
+
         # !!! No documentation on how much of the source tree must be kept
         # If/when kernel builds fail due to missing files, you can add
         # them here. Note that we may see packages requiring headers
@@ -165,13 +174,14 @@ let
         # headers on 3.10 though.
 
         chmod u+w -R ../source
-        arch=`cd $dev/lib/modules/${modDirVersion}/build/arch; ls`
+        arch=$(cd $dev/lib/modules/${modDirVersion}/build/arch; ls)
 
-        # Remove unusued arches
-        mv arch/$arch .
-        rm -fR arch
-        mkdir arch
-        mv $arch arch
+        # Remove unused arches
+        for d in $(cd arch/; ls); do
+          if [ "$d" = "$arch" ]; then continue; fi
+          if [ "$arch" = arm64 ] && [ "$d" = arm ]; then continue; fi
+          rm -rf arch/$d
+        done
 
         # Remove all driver-specific code (50M of which is headers)
         rm -fR drivers
@@ -179,6 +189,9 @@ let
         # Keep all headers
         find .  -type f -name '*.h' -print0 | xargs -0 chmod u-w
 
+        # Keep linker scripts (they are required for out-of-tree modules on aarch64)
+        find .  -type f -name '*.lds' -print0 | xargs -0 chmod u-w
+
         # Keep root and arch-specific Makefiles
         chmod u-w Makefile
         chmod u-w arch/$arch/Makefile*
@@ -219,13 +232,18 @@ let
     };
 in
 
+assert stdenv.lib.versionAtLeast version "4.15" -> libelf != null;
+assert stdenv.lib.versionAtLeast version "4.15" -> utillinux != null;
 stdenv.mkDerivation ((drvAttrs config stdenv.platform (kernelPatches ++ nativeKernelPatches) configfile) // {
   name = "linux-${version}";
 
   enableParallelBuilding = true;
 
   nativeBuildInputs = [ perl bc nettools openssl gmp libmpc mpfr ]
-    ++ optional (stdenv.platform.kernelTarget == "uImage") ubootTools;
+      ++ optional (stdenv.platform.kernelTarget == "uImage") ubootTools
+      ++ optional (stdenv.lib.versionAtLeast version "4.15") libelf
+      ++ optional (stdenv.lib.versionAtLeast version "4.15") utillinux
+      ;
 
   hardeningDisable = [ "bindnow" "format" "fortify" "stackprotector" "pic" ];
 
diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix
index c1288108b4f1c..754a2372c6d8b 100644
--- a/pkgs/os-specific/linux/kernel/patches.nix
+++ b/pkgs/os-specific/linux/kernel/patches.nix
@@ -62,4 +62,14 @@ rec {
     name = "tag-hardened";
     patch = ./tag-hardened.patch;
   };
+
+  # https://bugzilla.kernel.org/show_bug.cgi?id=197591#c6
+  iwlwifi_mvm_support_version_7_scan_req_umac_fw_command = rec {
+    name = "iwlwifi_mvm_support_version_7_scan_req_umac_fw_command";
+    patch = fetchpatch {
+      name = name + ".patch";
+      url = https://bugzilla.kernel.org/attachment.cgi?id=260597;
+      sha256 = "09096npxpgvlwdz3pb3m9brvxh7vy0xc9z9p8hh85xyczyzcsjhr";
+    };
+  };
 }
diff --git a/pkgs/os-specific/linux/kernel/perf.nix b/pkgs/os-specific/linux/kernel/perf.nix
index b64242e911db2..4bcf6e037e0f1 100644
--- a/pkgs/os-specific/linux/kernel/perf.nix
+++ b/pkgs/os-specific/linux/kernel/perf.nix
@@ -51,7 +51,7 @@ stdenv.mkDerivation {
     /* I don't want cross-python or cross-perl -
        I don't know if cross-python even works */
     propagatedBuildInputs = [ elfutils.crossDrv newt.crossDrv ];
-    makeFlags = "CROSS_COMPILE=${stdenv.cc.prefix}";
+    makeFlags = "CROSS_COMPILE=${stdenv.cc.targetPrefix}";
     elfutils = elfutils.crossDrv;
     inherit (kernel.crossDrv) src patches;
   };
diff --git a/pkgs/os-specific/linux/klibc/default.nix b/pkgs/os-specific/linux/klibc/default.nix
index 92ac1a77898ca..c503b982aa294 100644
--- a/pkgs/os-specific/linux/klibc/default.nix
+++ b/pkgs/os-specific/linux/klibc/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
   ] # TODO(@Ericson2314): We now can get the ABI from
     # `hostPlatform.parsed.abi`, is this still a good idea?
     ++ stdenv.lib.optional (hostPlatform.platform.kernelArch == "arm") "CONFIG_AEABI=y"
-    ++ stdenv.lib.optional (hostPlatform != buildPlatform) "CROSS_COMPILE=${stdenv.cc.prefix}";
+    ++ stdenv.lib.optional (hostPlatform != buildPlatform) "CROSS_COMPILE=${stdenv.cc.targetPrefix}";
 
   # Install static binaries as well.
   postInstall = ''
diff --git a/pkgs/os-specific/linux/kmscon/default.nix b/pkgs/os-specific/linux/kmscon/default.nix
index 850907d4f8a7a..bc7b254e19e9c 100644
--- a/pkgs/os-specific/linux/kmscon/default.nix
+++ b/pkgs/os-specific/linux/kmscon/default.nix
@@ -33,6 +33,8 @@ stdenv.mkDerivation rec {
     libxslt
   ];
 
+  patches = [ ./kmscon-8-glibc-2.26.patch ];
+
   # FIXME: Remove as soon as kmscon > 8 comes along.
   postPatch = ''
     sed -i -e 's/libsystemd-daemon libsystemd-login/libsystemd/g' configure
@@ -45,6 +47,8 @@ stdenv.mkDerivation rec {
     "--with-renderers=bbulk,gltex,pixman"
   ];
 
+  enableParallelBuilding = true;
+
   meta = {
     description = "KMS/DRM based System Console";
     homepage = http://www.freedesktop.org/wiki/Software/kmscon/;
diff --git a/pkgs/os-specific/linux/kmscon/kmscon-8-glibc-2.26.patch b/pkgs/os-specific/linux/kmscon/kmscon-8-glibc-2.26.patch
new file mode 100644
index 0000000000000..b70a750180e2d
--- /dev/null
+++ b/pkgs/os-specific/linux/kmscon/kmscon-8-glibc-2.26.patch
@@ -0,0 +1,25 @@
+diff --git a/src/pty.c b/src/pty.c
+index 3494104..1443f4a 100644
+--- a/src/pty.c
++++ b/src/pty.c
+@@ -299,7 +299,7 @@ static void setup_child(int master, struct winsize *ws)
+ 	if (ret)
+ 		log_warn("cannot reset blocked signals: %m");
+ 
+-	for (i = 1; i < SIGUNUSED; ++i)
++	for (i = 1; i < SIGSYS; ++i)
+ 		signal(i, SIG_DFL);
+ 
+ 	ret = grantpt(master);
+diff --git a/src/uterm_vt.c b/src/uterm_vt.c
+index af377f5..fbe9e76 100644
+--- a/src/uterm_vt.c
++++ b/src/uterm_vt.c
+@@ -40,6 +40,7 @@
+ #include <sys/ioctl.h>
+ #include <sys/signalfd.h>
+ #include <sys/stat.h>
++#include <sys/sysmacros.h>
+ #include <termios.h>
+ #include <time.h>
+ #include <unistd.h>
diff --git a/pkgs/os-specific/linux/libnscd/default.nix b/pkgs/os-specific/linux/libnscd/default.nix
deleted file mode 100644
index a2dd25206cb14..0000000000000
--- a/pkgs/os-specific/linux/libnscd/default.nix
+++ /dev/null
@@ -1,14 +0,0 @@
-{stdenv, fetchurl}:
-   
-stdenv.mkDerivation {
-  name = "libnscd-2.0.2";
-   
-  src = fetchurl {
-    url = http://ftp.suse.com/pub/people/kukuk/libnscd/libnscd-2.0.2.tar.bz2;
-    sha256 = "0nxhwy42x44jlpdb5xq1prbvfjmds4hplmwv3687z0c4r9rn506l";
-  };
-
-  meta = {
-    platforms = stdenv.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/os-specific/linux/libsmbios/default.nix b/pkgs/os-specific/linux/libsmbios/default.nix
index 98ec778e2c260..5d3e0dc8c975a 100644
--- a/pkgs/os-specific/linux/libsmbios/default.nix
+++ b/pkgs/os-specific/linux/libsmbios/default.nix
@@ -1,36 +1,38 @@
-{ stdenv, fetchurl, pkgconfig, libxml2, perl, autoreconfHook, doxygen }:
+{ stdenv, fetchFromGitHub, pkgconfig, autoreconfHook, libtool, gettext
+, libxml2, perl, doxygen }:
 
-let
-  version = "2.3.2";
-in
-stdenv.mkDerivation {
+
+stdenv.mkDerivation rec {
   name = "libsmbios-${version}";
+  version = "2.3.3";
 
-  src = fetchurl {
-    url = "https://github.com/dell/libsmbios/archive/v${version}.tar.gz";
-    sha256 = "0kvi36jrvhspyyq0pjfdyvzvimdn27fvbdpf429qm3xdmfi78y2j";
+  src = fetchFromGitHub {
+    owner = "dell";
+    repo = "libsmbios";
+    rev = "v${version}";
+    sha256 = "1cl5nb6qk8ki87hwqf9n1dd9nlhkjnlpdxlhzvm82za16gs7apkl";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
-  buildInputs = [ libxml2 perl doxygen ];
+  nativeBuildInputs = [ autoreconfHook doxygen gettext libtool perl pkgconfig ];
+  buildInputs = [ libxml2 ];
+
+  configureFlags = [ "--disable-python" "--disable-graphviz" ];
 
-  # It tries to install some Python stuff even when Python is disabled.
-  installFlags = "pkgpythondir=$(TMPDIR)/python";
+  enableParallelBuilding = true;
 
   postInstall =
     ''
       mkdir -p $out/include
-      cp -va "src/include/"* "$out/include/"
-      cp -va "out/public-include/"* "$out/include/"
+      cp -a src/include/smbios_c $out/include/
+      cp -a out/public-include/smbios_c $out/include/
     '';
 
-  # Hack to avoid TMPDIR in RPATHs.
-  preFixup = ''rm -rf "$(pwd)" '';
+  preFixup = ''rm -rf "$(pwd)" ''; # Hack to avoid TMPDIR in RPATHs
 
   meta = {
-    homepage = http://linux.dell.com/libsmbios/main;
+    homepage = https://github.com/dell/libsmbios;
     description = "A library to obtain BIOS information";
-    license = stdenv.lib.licenses.gpl2Plus; # alternatively, under the Open Software License version 2.1
+    license = with stdenv.lib.licenses; [ osl21 gpl2Plus ];
     platforms = [ "i686-linux" "x86_64-linux" ];
   };
 }
diff --git a/pkgs/os-specific/linux/libwebcam/default.nix b/pkgs/os-specific/linux/libwebcam/default.nix
new file mode 100644
index 0000000000000..aadecfdc8b5e5
--- /dev/null
+++ b/pkgs/os-specific/linux/libwebcam/default.nix
@@ -0,0 +1,55 @@
+{ lib
+, stdenv
+, fetchurl
+, cmake
+, pkgconfig
+, libxml2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "libwebcam";
+  version = "0.2.5";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/${pname}/source/${pname}-src-${version}.tar.gz";
+    sha256 = "0hcxv8di83fk41zjh0v592qm7c0v37a3m3n3lxavd643gff1k99w";
+  };
+
+  patches = [
+    ./uvcdynctrl_symlink_support_and_take_data_dir_from_env.patch
+  ];
+
+  buildInputs = [
+    cmake
+    pkgconfig
+    libxml2
+  ];
+
+  postPatch = ''
+    substituteInPlace ./uvcdynctrl/CMakeLists.txt \
+      --replace "/lib/udev" "$out/lib/udev"
+
+    substituteInPlace ./uvcdynctrl/udev/scripts/uvcdynctrl \
+      --replace 'debug=0' 'debug=''${NIX_UVCDYNCTRL_UDEV_DEBUG:-0}' \
+      --replace 'uvcdynctrlpath=uvcdynctrl' "uvcdynctrlpath=$out/bin/uvcdynctrl"
+
+    substituteInPlace ./uvcdynctrl/udev/rules/80-uvcdynctrl.rules \
+      --replace "/lib/udev" "$out/lib/udev"
+  '';
+
+
+  preConfigure = ''
+    cmakeFlagsArray=(
+      $cmakeFlagsArray
+      "-DCMAKE_INSTALL_PREFIX=$out"
+    )
+  '';
+
+  meta = with lib; {
+    description = "The webcam-tools package";
+    platforms = platforms.linux;
+    licenses = with licenses; [ lgpl3 ];
+    maintainers = with maintainers; [ jraygauthier ];
+  };
+}
\ No newline at end of file
diff --git a/pkgs/os-specific/linux/libwebcam/uvcdynctrl_symlink_support_and_take_data_dir_from_env.patch b/pkgs/os-specific/linux/libwebcam/uvcdynctrl_symlink_support_and_take_data_dir_from_env.patch
new file mode 100644
index 0000000000000..07e5f0bf852b7
--- /dev/null
+++ b/pkgs/os-specific/linux/libwebcam/uvcdynctrl_symlink_support_and_take_data_dir_from_env.patch
@@ -0,0 +1,65 @@
+diff --git a/uvcdynctrl/main.c b/uvcdynctrl/main.c
+index b7befd1..f3a768c 100644
+--- a/uvcdynctrl/main.c
++++ b/uvcdynctrl/main.c
+@@ -674,27 +674,31 @@ get_filename (const char *dir_path, const char *vid)
+ 	printf ( "checking dir: %s \n", dir_path);
+ 	while ((dp = readdir(dir)) != NULL) 
+ 	{
+-		if((dp->d_type == DT_DIR) && (fnmatch("[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]", dp->d_name, 0) == 0))
++		if((dp->d_type == DT_DIR || dp->d_type == DT_LNK ) && (fnmatch("[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]", dp->d_name, 0) == 0))
+ 		{
+ 			if( strcasecmp(vid, dp->d_name) != 0)
+ 			{
+ 				/*doesn't match - clean up and move to the next entry*/
+ 				continue;
+ 			}
+-			
++
+ 			char *tmp = path_cat (dir_path, dp->d_name);
+-			printf("found dir: %s \n", dp->d_name);
++
+ 			DIR * subdir = opendir(tmp);
+-			while ((sdp = readdir(subdir)) != NULL) 
++			if ( subdir != NULL )
+ 			{
+-				if( fnmatch("*.xml", sdp->d_name, 0) == 0 )
++				printf("found dir: %s \n", dp->d_name);
++				while ((sdp = readdir(subdir)) != NULL) 
+ 				{
+-					file_list[nf-1] = path_cat (tmp, sdp->d_name);
+-					printf("found: %s \n", file_list[nf-1]);
+-					nf++;
+-					file_list = realloc(file_list,nf*sizeof(file_list));
+-					file_list[nf-1] = NULL;   
+-				} 
++					if( fnmatch("*.xml", sdp->d_name, 0) == 0 )
++					{
++						file_list[nf-1] = path_cat (tmp, sdp->d_name);
++						printf("found: %s \n", file_list[nf-1]);
++						nf++;
++						file_list = realloc(file_list,nf*sizeof(file_list));
++						file_list[nf-1] = NULL;   
++					} 
++				}
+ 			}
+ 			closedir(subdir);
+ 			free (tmp);
+@@ -869,9 +873,15 @@ main (int argc, char **argv)
+ 			pid_set = 1; /*flag pid.xml check*/
+ 			//printf("vid:%s pid:%s\n", vid, pid);
+ 		}
+-		
++
++		const char* dataDir = getenv( "NIX_UVCDYNCTRL_DATA_DIR" );
++		// When unavailable, fallback on data dir specified at build time.
++		if ( !dataDir ) {
++			dataDir = DATA_DIR;
++		}
++
+ 		/* get xml file list from DATA_DIR/vid/ */ 
+-		char **xml_files = get_filename (DATA_DIR, vid);
++		char **xml_files = get_filename (dataDir, vid);
+  
+ 		/*check for pid.xml*/
+ 		char fname[9];
diff --git a/pkgs/os-specific/linux/lvm2/default.nix b/pkgs/os-specific/linux/lvm2/default.nix
index 6382b90f16832..e6d5c10341b40 100644
--- a/pkgs/os-specific/linux/lvm2/default.nix
+++ b/pkgs/os-specific/linux/lvm2/default.nix
@@ -2,7 +2,7 @@
 , thin-provisioning-tools, enable_dmeventd ? false }:
 
 let
-  version = "2.02.175";
+  version = "2.02.176";
 in
 
 stdenv.mkDerivation {
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
 
   src = fetchurl {
     url = "ftp://sources.redhat.com/pub/lvm2/releases/LVM2.${version}.tgz";
-    sha256 = "0n95cc2b0jb0fh2pd9jyg9ww7lyzpia9n9sryw9f4aq8dpna7dsd";
+    sha256 = "0wx4rvy4frdmb66znh2xms2j2n06sm361ki6l5ks4y1ciii87kny";
   };
 
   configureFlags = [
diff --git a/pkgs/os-specific/linux/mdadm/4.nix b/pkgs/os-specific/linux/mdadm/4.nix
index 5511d72884a5a..f9c2a5e09af60 100644
--- a/pkgs/os-specific/linux/mdadm/4.nix
+++ b/pkgs/os-specific/linux/mdadm/4.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
     "MANDIR=$(out)/share/man" "RUN_DIR=/dev/.mdadm"
     "STRIP="
   ] ++ stdenv.lib.optionals (hostPlatform != buildPlatform) [
-    "CROSS_COMPILE=${stdenv.cc.prefix}"
+    "CROSS_COMPILE=${stdenv.cc.targetPrefix}"
   ];
 
   nativeBuildInputs = [ groff ];
diff --git a/pkgs/os-specific/linux/mdadm/default.nix b/pkgs/os-specific/linux/mdadm/default.nix
index 0929bae991dd2..1e2c1dafb2db6 100644
--- a/pkgs/os-specific/linux/mdadm/default.nix
+++ b/pkgs/os-specific/linux/mdadm/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
     "MANDIR=$(out)/share/man" "RUN_DIR=/dev/.mdadm"
     "STRIP="
   ] ++ stdenv.lib.optionals (hostPlatform != buildPlatform) [
-    "CROSS_COMPILE=${stdenv.cc.prefix}"
+    "CROSS_COMPILE=${stdenv.cc.targetPrefix}"
   ];
 
   nativeBuildInputs = [ groff ];
diff --git a/pkgs/os-specific/linux/microcode/intel.nix b/pkgs/os-specific/linux/microcode/intel.nix
index 19425f810d0a5..97843b2253fce 100644
--- a/pkgs/os-specific/linux/microcode/intel.nix
+++ b/pkgs/os-specific/linux/microcode/intel.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "microcode-intel-${version}";
-  version = "20170707";
+  version = "20171117";
 
   src = fetchurl {
-    url = "https://downloadmirror.intel.com/26925/eng/microcode-${version}.tgz";
-    sha256 = "14zf7fbhg0msa3bm0kl139pclmkfm83s6l86x48sr9sjpxllgm2g";
+    url = "https://downloadmirror.intel.com/27337/eng/microcode-${version}.tgz";
+    sha256 = "1p14ypbg28bdkbza6dx6dpjrdr5p13vmgrh2cw0y1v2qzalivgck";
   };
 
   buildInputs = [ libarchive ];
diff --git a/pkgs/os-specific/linux/mwprocapture/default.nix b/pkgs/os-specific/linux/mwprocapture/default.nix
index 21934dcdfacd5..f61611fbf017d 100644
--- a/pkgs/os-specific/linux/mwprocapture/default.nix
+++ b/pkgs/os-specific/linux/mwprocapture/default.nix
@@ -25,7 +25,8 @@ stdenv.mkDerivation rec {
     sha256 = "1arwnwrq52rs8g9zfxw8saip40vc3201sf7qnbqd2p23h8vzwb8i";
   };
 
-  patches = [] ++ optional (versionAtLeast kernel.version "4.13") ./linux_4_13_fix.patch;
+  patches = [] ++ optional (versionAtLeast kernel.version "4.13") ./linux_4_13_fix.patch
+               ++ optional (versionAtLeast kernel.version "4.14") ./linux_4_14_fix.patch;
 
   preConfigure =
   ''
diff --git a/pkgs/os-specific/linux/mwprocapture/linux_4_14_fix.patch b/pkgs/os-specific/linux/mwprocapture/linux_4_14_fix.patch
new file mode 100644
index 0000000000000..9f92a38bcc459
--- /dev/null
+++ b/pkgs/os-specific/linux/mwprocapture/linux_4_14_fix.patch
@@ -0,0 +1,60 @@
+diff -Naur ProCaptureForLinux_3589/src/sources/ospi/linux-file.c ProCaptureForLinux_3589_new/src/sources/ospi/linux-file.c
+--- ProCaptureForLinux_3589/src/sources/ospi/linux-file.c	2017-08-17 02:46:07.000000000 -0700
++++ ProCaptureForLinux_3589_new/src/sources/ospi/linux-file.c	2017-11-13 20:18:50.842947380 -0800
+@@ -7,8 +7,8 @@
+ 
+ #include "linux-file.h"
+ 
+-#include <asm/uaccess.h>
+ #include <linux/sched.h>
++#include <asm/uaccess.h>
+ 
+ struct file *linux_file_open(const char *path, int flags, int mode)
+ {
+@@ -28,27 +28,27 @@
+     filp_close(file, NULL);
+ }
+ 
+-ssize_t linux_file_read(struct file *file, loff_t offset, unsigned char *data, size_t size)
++ssize_t linux_file_read(struct file *file, loff_t offset, const void *data, size_t size)
+ {
+     mm_segment_t oldfs;
+     ssize_t ret;
+ 
+     oldfs = get_fs();
+     set_fs(get_ds());
+-    ret = vfs_read(file, data, size, &offset);
++    ret = kernel_read(file, data, size, &offset);
+     set_fs(oldfs);
+ 
+     return ret;
+ }
+ 
+-ssize_t linux_file_write(struct file *file, loff_t offset, unsigned char *data, size_t size)
++ssize_t linux_file_write(struct file *file, loff_t offset, const void *data, size_t size)
+ {
+     mm_segment_t oldfs;
+     ssize_t ret;
+ 
+     oldfs = get_fs();
+     set_fs(get_ds());
+-    ret = vfs_write(file, data, size, &offset);
++    ret = kernel_write(file, data, size, &offset);
+     set_fs(oldfs);
+ 
+     return ret;
+diff -Naur ProCaptureForLinux_3589/src/sources/ospi/linux-file.h ProCaptureForLinux_3589_new/src/sources/ospi/linux-file.h
+--- ProCaptureForLinux_3589/src/sources/ospi/linux-file.h	2017-08-17 02:46:07.000000000 -0700
++++ ProCaptureForLinux_3589_new/src/sources/ospi/linux-file.h	2017-11-13 20:24:20.979690346 -0800
+@@ -13,9 +13,9 @@
+ 
+ void linux_file_close(struct file *file);
+ 
+-ssize_t linux_file_read(struct file *file, loff_t offset, unsigned char *data, size_t size);
++ssize_t linux_file_read(struct file *file, loff_t offset, const void *data, size_t size);
+ 
+-ssize_t linux_file_write(struct file *file, loff_t offset, unsigned char *data, size_t size);
++ssize_t linux_file_write(struct file *file, loff_t offset, const void *data, size_t size);
+ 
+ #endif /* __LINUX_FILE_H__ */
+ 
diff --git a/pkgs/os-specific/linux/numactl/default.nix b/pkgs/os-specific/linux/numactl/default.nix
index 389e9514d7031..a5ed242e3230e 100644
--- a/pkgs/os-specific/linux/numactl/default.nix
+++ b/pkgs/os-specific/linux/numactl/default.nix
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
     description = "Library and tools for non-uniform memory access (NUMA) machines";
     homepage = http://oss.sgi.com/projects/libnuma/;
     license = licenses.gpl2;
-    platforms = platforms.linux;
+    platforms = [ "i686-linux" "x86_64-linux" "aarch64-linux" ];
     maintainers = with maintainers; [ wkennington ];
   };
 }
diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix
index ba9b332e6d710..154fcbb6b844c 100644
--- a/pkgs/os-specific/linux/nvidia-x11/default.nix
+++ b/pkgs/os-specific/linux/nvidia-x11/default.nix
@@ -6,11 +6,11 @@ in
 {
   # Policy: use the highest stable version as the default (on our master).
   stable = generic {
-    version = "384.90";
-    sha256_32bit = "0mq0h7g56m9zvr42ipy2664ph922754l0pdp8wpsmzfpkzg6g9lp";
-    sha256_64bit = "1ggylpzw1j217w64rspw4fhvq25wz0la0hhy0b1kxjpwy8h6ipqd";
-    settingsSha256 = "023jfbsxsbkjk78i9i6wd0sybv5hib2d7mfvy635w3anjcrsk5il";
-    persistencedSha256 = "166ya8pnv4frvrsp0x5zkg8li85vipags03wy6dlf8s940al92z2";
+    version = "387.22";
+    sha256_32bit = "16v4ljq07hs1xw6amc7cmddvmmmd3swli3b617xs8f3qcw54ym1r";
+    sha256_64bit = "1i0fmzsv4bkfxaw2wnnhj2z64gdyqd6xvxrsq7zj7gq7crcd6sma";
+    settingsSha256 = "0wszyfj9hcib7dcfin22nsrfsm1mb4rq6ha5fma7sq68p175j1yk";
+    persistencedSha256 = "0wrkmw8gw780vcl0s0d0vd8niaf741ji5sggxxqb1aa1w61rjf0d";
   };
 
   beta = generic {
diff --git a/pkgs/os-specific/linux/nvidia-x11/settings.nix b/pkgs/os-specific/linux/nvidia-x11/settings.nix
index e272ac14de0f3..acdc44c702f3b 100644
--- a/pkgs/os-specific/linux/nvidia-x11/settings.nix
+++ b/pkgs/os-specific/linux/nvidia-x11/settings.nix
@@ -44,7 +44,8 @@ stdenv.mkDerivation rec {
   buildInputs = [ jansson libXv libXrandr libvdpau nvidia_x11 gtk2 dbus ]
              ++ lib.optionals withGtk3 [ gtk3 librsvg wrapGAppsHook ];
 
-  NIX_LDFLAGS = [ "-lvdpau" "-lXrandr" "-lXv" "-lnvidia-ml" ];
+# This next line makes the nvidia-settings binary fail to compile as of version 387.22
+# NIX_LDFLAGS = [ "-lvdpau" "-lXrandr" "-lXv" "-lnvidia-ml" ];
 
   makeFlags = [ "NV_USE_BUNDLED_LIBJANSSON=0" ];
   installFlags = [ "PREFIX=$(out)" ];
diff --git a/pkgs/os-specific/linux/prl-tools/default.nix b/pkgs/os-specific/linux/prl-tools/default.nix
index 9ca48ccaf057f..9fe331e6cb12f 100644
--- a/pkgs/os-specific/linux/prl-tools/default.nix
+++ b/pkgs/os-specific/linux/prl-tools/default.nix
@@ -1,6 +1,7 @@
 { stdenv, lib, requireFile, makeWrapper, substituteAll, p7zip
 , gawk, utillinux, xorg, glib, dbus_glib, zlib
 , kernel ? null, libsOnly ? false
+, undmg, fetchurl
 }:
 
 assert (!libsOnly) -> kernel != null;
@@ -10,57 +11,35 @@ let xorgFullVer = (builtins.parseDrvName xorg.xorgserver.name).version;
     x64 = if stdenv.system == "x86_64-linux" then true
           else if stdenv.system == "i686-linux" then false
           else abort "Parallels Tools for Linux only support {x86-64,i686}-linux targets";
-    # We autostart user services by ourselves, because prlcc uses hardcoded paths.
-    autostart = [ { exec = "prlcc";
-                    description = "Parallels Control Center";
-                  }
-                  { exec = "prldhd";
-                    description = "Parallels Control Center"; # not a mistake
-                  }
-                  { exec = "prl_wmouse_d";
-                    description = "Parallels Walking Mouse Daemon";
-                  }
-                  { exec = "prlcp";
-                    description = "Parallels CopyPaste Tool";
-                  }
-                  { exec = "prlsga";
-                    description = "Parallels Shared Guest Applications Tool";
-                  }
-                  { exec = "prlshprof";
-                    description = "Parallels Shared Profile Tool";
-                  }
-                ];
 in
 stdenv.mkDerivation rec {
-  version = "10.0.2.27712";
+  version = "${prl_major}.2.1-41615";
+  prl_major = "12";
   name = "prl-tools-${version}";
 
-  src = requireFile rec {
-    name = "prl-tools-lin.iso";
-    sha256 = "07960jvyv7gihjlg922znjm6db6l6bd23x9mg6ympwibzf2mylmx";
-    message = ''
-      Please, place Parallels Tools for Linux image into Nix store
-      using either
-        nix-store --add-fixed sha256 ${name}
-      or
-        nix-prefetch-url file://path/to/${name}
-    '';
+  # We download the full distribution to extract prl-tools-lin.iso from
+  # => ${dmg}/Parallels\ Desktop.app/Contents/Resources/Tools/prl-tools-lin.iso
+  src = fetchurl {
+    url =  "https://download.parallels.com/desktop/v${prl_major}/${version}/ParallelsDesktop-${version}.dmg";
+    sha256 = "1jwzwif69qlhmfky9kigjaxpxfj0lyrl1iyrpqy4iwqvajdgbbym";
   };
 
-  hardeningDisable = [ "pic" ];
+  hardeningDisable = [ "pic" "format" ];
 
   # also maybe python2 to generate xorg.conf
-  nativeBuildInputs = [ p7zip ] ++ lib.optionals (!libsOnly) [ makeWrapper ];
+  nativeBuildInputs = [ p7zip undmg ] ++ lib.optionals (!libsOnly) [ makeWrapper ];
 
   inherit libsOnly;
 
   unpackPhase = ''
-    7z x $src
-    export sourceRoot=.
+    undmg < "${src}"
+
+    export sourceRoot=prl-tools-build
+    7z x "Parallels Desktop.app/Contents/Resources/Tools/prl-tools-lin.iso" -o$sourceRoot
     if test -z "$libsOnly"; then
-      ( cd kmods; tar -xaf prl_mod.tar.gz )
+      ( cd $sourceRoot/kmods; tar -xaf prl_mod.tar.gz )
     fi
-    ( cd tools; tar -xaf prltools${if x64 then ".x64" else ""}.tar.gz )
+    ( cd $sourceRoot/tools; tar -xaf prltools${if x64 then ".x64" else ""}.tar.gz )
   '';
 
   kernelVersion = if libsOnly then "" else (builtins.parseDrvName kernel.name).version;
@@ -88,11 +67,6 @@ stdenv.mkDerivation rec {
             stdenv.lib.makeLibraryPath ([ stdenv.cc.cc libXrandr libXext libX11 libXcomposite libXinerama ]
             ++ lib.optionals (!libsOnly) [ libXi glib dbus_glib zlib ]);
 
-  desktops = map (x: substituteAll ({
-               src = ./autostart.desktop;
-               name = x.exec + ".desktop";
-               version = version;
-             } // x)) autostart;
 
   installPhase = ''
     if test -z "$libsOnly"; then
@@ -124,7 +98,7 @@ stdenv.mkDerivation rec {
           patchelf \
             --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
             --set-rpath "$out/lib:$libPath" \
-            $i
+            $i || true
         done
 
         mkdir -p $out/bin
@@ -145,11 +119,6 @@ stdenv.mkDerivation rec {
           sed 's,/bin/bash,${stdenv.shell},g' $i > $out/lib/udev/rules.d/$i
         done
 
-        mkdir -p $out/share/autostart
-        for i in $desktops; do
-          cat $i | sed "s,^Exec=,Exec=$out/bin/," > $out/share/autostart/$(basename $i)
-        done
-
         (
           cd xorg.${xorgVer}
           # Install the X modules.
@@ -189,8 +158,8 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "Parallels Tools for Linux guests";
-    homepage = http://parallels.com;
-    platforms = platforms.linux;
+    homepage = https://parallels.com;
+    platforms = [ "i686-linux" "x86_64-linux" ];
     license = licenses.unfree;
     # I was making this package blindly and requesting testing from the real user,
     # so I can't even test it by myself and won't provide future updates.
diff --git a/pkgs/os-specific/linux/s6-linux-utils/default.nix b/pkgs/os-specific/linux/s6-linux-utils/default.nix
index 52d7446e48cbc..db494ec2493fa 100644
--- a/pkgs/os-specific/linux/s6-linux-utils/default.nix
+++ b/pkgs/os-specific/linux/s6-linux-utils/default.nix
@@ -2,7 +2,7 @@
 
 let
 
-  version = "2.2.0.0";
+  version = "2.4.0.2";
 
 in stdenv.mkDerivation rec {
 
@@ -10,7 +10,7 @@ in stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "http://www.skarnet.org/software/s6-linux-utils/${name}.tar.gz";
-    sha256 = "1y9mva7wk1ca2djq3qjh7hz756zk57yv7ljdnldn7k7jzfmlaxsq";
+    sha256 = "0245rmk7wfyyfsi4g7f0niprwlvqlwkbyjxflb8kkbvhwfdavqip";
   };
 
   dontDisableStatic = true;
diff --git a/pkgs/os-specific/linux/spl/default.nix b/pkgs/os-specific/linux/spl/default.nix
index b29573179f85d..b2d090fa7ea20 100644
--- a/pkgs/os-specific/linux/spl/default.nix
+++ b/pkgs/os-specific/linux/spl/default.nix
@@ -13,6 +13,7 @@ let
   common = { version
     , sha256
     , rev ? "spl-${version}"
+    , broken ? false
     } @ args : stdenv.mkDerivation rec {
       name = "spl-${configFile}-${version}${optionalString buildKernel "-${kernel.version}"}";
 
@@ -52,6 +53,8 @@ let
           kernel.
         '';
 
+        inherit broken;
+
         homepage = http://zfsonlinux.org/;
         platforms = platforms.linux;
         license = licenses.gpl2Plus;
@@ -65,11 +68,13 @@ in
     splStable = common {
       version = "0.7.3";
       sha256 = "0j8mb9ky3pjz9hnz5w6fajpzajl15jq3p0xvxb6lhpqj3rjzsqxb";
+
+      broken = kernel != null && stdenv.lib.versionAtLeast kernel.version "4.14";
     };
 
     splUnstable = common {
-      version = "2017-10-16";
-      rev = "28920ea3346c1c905c5f727ea3e54297e6257568";
-      sha256 = "0m42na009ivb9q9gz15ra94wqx5xdw18waanm56aqzrjxbqqa3ll";
+      version = "2017-11-16";
+      rev = "ed19bccfb651843fa208232b3a2d3d22a4152bc8";
+      sha256 = "08ihjbf5fhcnhq9zavcwswg9djlbalbx1bil4rcv6i3d617wammb";
     };
 }
diff --git a/pkgs/os-specific/linux/systemd/default.nix b/pkgs/os-specific/linux/systemd/default.nix
index 7c8ffef86eec8..aeda85584e79d 100644
--- a/pkgs/os-specific/linux/systemd/default.nix
+++ b/pkgs/os-specific/linux/systemd/default.nix
@@ -15,8 +15,8 @@ stdenv.mkDerivation rec {
   src = fetchFromGitHub {
     owner = "nixos";
     repo = "systemd";
-    rev = "ba777535a890c2a2b7677dfacc63e12c578b9b3f";
-    sha256 = "1vb45fbqkrgczfwkb0y07ldnwhjqk2sh446hzfkdn8hrwl1lifg5";
+    rev = "eef5613fda5";
+    sha256 = "0wgh5y319v56hcs82mhs58ipb100cz4x41vz3kh4bq1n7sx88cdz";
   };
 
   outputs = [ "out" "lib" "man" "dev" ];
diff --git a/pkgs/os-specific/linux/usbip/default.nix b/pkgs/os-specific/linux/usbip/default.nix
new file mode 100644
index 0000000000000..497b5c191669d
--- /dev/null
+++ b/pkgs/os-specific/linux/usbip/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, kernel, udev, autoconf, automake, libtool }:
+
+stdenv.mkDerivation rec {
+  name = "usbip-${kernel.name}";
+
+  src = kernel.src;
+
+  nativeBuildInputs = [ autoconf automake libtool ];
+  buildInputs = [ udev ];
+
+  preConfigure = ''
+    cd tools/usb/usbip
+    ./autogen.sh
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/torvalds/linux/tree/master/tools/usb/usbip;
+    description = "allows to pass USB device from server to client over the network";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/os-specific/linux/virtualbox/default.nix b/pkgs/os-specific/linux/virtualbox/default.nix
index 593c4400b7f48..5bec71a109077 100644
--- a/pkgs/os-specific/linux/virtualbox/default.nix
+++ b/pkgs/os-specific/linux/virtualbox/default.nix
@@ -7,6 +7,14 @@ stdenv.mkDerivation {
     "fortify" "pic" "stackprotector"
   ];
 
+  patches = [
+    ./fix_kerndir.patch
+    ./fix_kbuild.patch
+  ];
+
+  KERN_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
+  INCLUDE_BASE = "${virtualbox.modsrc}";
+
   makeFlags = [
     "-C ${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
     "INSTALL_MOD_PATH=$(out)"
diff --git a/pkgs/os-specific/linux/virtualbox/fix_kbuild.patch b/pkgs/os-specific/linux/virtualbox/fix_kbuild.patch
new file mode 100644
index 0000000000000..242a905c1a05a
--- /dev/null
+++ b/pkgs/os-specific/linux/virtualbox/fix_kbuild.patch
@@ -0,0 +1,85 @@
+diff --git a/vboxdrv/Makefile b/vboxdrv/Makefile
+index e262c61..4af8dac 100644
+--- a/vboxdrv/Makefile
++++ b/vboxdrv/Makefile
+@@ -131,7 +131,7 @@ ifdef VBOX_WITH_NATIVE_DTRACE
+  MOD_OBJS += SUPDrvDTrace.o
+ endif
+
+-MOD_INCL  = $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux)
++MOD_INCL  = $(addprefix -I$(INCLUDE_BASE)/$(MOD_NAME),/ /include /r0drv/linux)
+ ifdef VBOX_WITH_NATIVE_DTRACE
+  MOD_INCL += -I/usr/include/linux -I/usr/include
+ endif
+@@ -157,7 +157,7 @@ ifdef VBOX_WITH_TEXT_MODMEM_HACK
+ endif
+
+ # build defs
+-MOD_CFLAGS = -include $(KBUILD_EXTMOD)/include/VBox/SUPDrvMangling.h \
++MOD_CFLAGS = -include include/VBox/SUPDrvMangling.h \
+	-fno-omit-frame-pointer -fno-pie
+
+ include $(obj)/Makefile.include.footer
+diff --git a/vboxnetadp/Makefile b/vboxnetadp/Makefile
+index e262c61..4af8dac 100644
+--- a/vboxnetadp/Makefile
++++ b/vboxnetadp/Makefile
+@@ -34,7 +34,7 @@ MOD_OBJS += math/gcc/divdi3.o \
+	math/gcc/umoddi3.o
+ endif
+
+-MOD_INCL = $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux)
++MOD_INCL = $(addprefix -I$(INCLUDE_BASE)/$(MOD_NAME),/ /include /r0drv/linux)
+ MOD_DEFS = -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX \
+	    -DRT_WITH_VBOX -DVBOX_WITH_HARDENING \
+	    -Wno-declaration-after-statement
+@@ -59,6 +59,6 @@ ifdef VBOX_USE_INSERT_PAGE
+ endif
+
+ # build defs
+-MOD_CFLAGS = -include $(KBUILD_EXTMOD)/include/VBox/SUPDrvMangling.h -fno-pie
++MOD_CFLAGS = -include include/VBox/SUPDrvMangling.h -fno-pie
+
+ include $(obj)/Makefile.include.footer
+diff --git a/vboxnetflt/Makefile b/vboxnetflt/Makefile
+index e262c61..4af8dac 100644
+--- a/vboxnetflt/Makefile
++++ b/vboxnetflt/Makefile
+@@ -38,7 +38,7 @@ MOD_OBJS += math/gcc/divdi3.o \
+	math/gcc/umoddi3.o
+ endif
+
+-MOD_INCL = $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux)
++MOD_INCL = $(addprefix -I$(INCLUDE_BASE)/$(MOD_NAME),/ /include /r0drv/linux)
+ MOD_DEFS = -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 \
+	-DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -DVBOX_WITH_HARDENING \
+	-Wno-declaration-after-statement
+@@ -63,6 +63,6 @@ ifdef VBOX_USE_INSERT_PAGE
+ endif
+
+ # build defs
+-MOD_CFLAGS = -include $(KBUILD_EXTMOD)/include/VBox/SUPDrvMangling.h -fno-pie
++MOD_CFLAGS = -include include/VBox/SUPDrvMangling.h -fno-pie
+
+ include $(obj)/Makefile.include.footer
+diff --git a/vboxpci/Makefile b/vboxpci/Makefile
+index e262c61..4af8dac 100644
+--- a/vboxpci/Makefile
++++ b/vboxpci/Makefile
+@@ -38,7 +38,7 @@ MOD_OBJS += math/gcc/divdi3.o       \
+	math/gcc/umoddi3.o
+ endif
+
+-MOD_INCL = $(addprefix -I$(KBUILD_EXTMOD),/ /include /r0drv/linux)
++MOD_INCL = $(addprefix -I$(INCLUDE_BASE)/$(MOD_NAME),/ /include /r0drv/linux)
+ MOD_DEFS = -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX \
+	-DRT_WITH_VBOX -DVBOX_WITH_HARDENING
+ ifeq ($(BUILD_TARGET_ARCH),amd64)
+@@ -60,6 +60,6 @@ ifdef VBOX_USE_INSERT_PAGE
+ endif
+
+ # build defs
+-MOD_CFLAGS = -include $(KBUILD_EXTMOD)/include/VBox/SUPDrvMangling.h -fno-pie
++MOD_CFLAGS = -include include/VBox/SUPDrvMangling.h -fno-pie
+
+ include $(obj)/Makefile.include.footer
diff --git a/pkgs/os-specific/linux/virtualbox/fix_kerndir.patch b/pkgs/os-specific/linux/virtualbox/fix_kerndir.patch
new file mode 100644
index 0000000000000..70ddbbb2ebd5b
--- /dev/null
+++ b/pkgs/os-specific/linux/virtualbox/fix_kerndir.patch
@@ -0,0 +1,48 @@
+diff --git a/vboxdrv/Makefile.include.header b/vboxdrv/Makefile.include.header
+index 8df1eb4d25..5a3e5604e7 100644
+--- a/vboxdrv/Makefile.include.header
++++ b/vboxdrv/Makefile.include.header
+@@ -117,7 +117,6 @@ else # neq($(KERNELRELEASE),)
+ endif # neq($(KERNELRELEASE),)
+
+ # Kernel build folder
+-KERN_DIR := /lib/modules/$(KERN_VER)/build
+ ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
+  $(error Error: unable to find the headers of the Linux kernel to build against. \
+           Specify KERN_VER=<version> and run Make again)
+diff --git a/vboxnetadp/Makefile.include.header b/vboxnetadp/Makefile.include.header
+index 8df1eb4d25..5a3e5604e7 100644
+--- a/vboxnetadp/Makefile.include.header
++++ b/vboxnetadp/Makefile.include.header
+@@ -117,7 +117,6 @@ else # neq($(KERNELRELEASE),)
+ endif # neq($(KERNELRELEASE),)
+
+ # Kernel build folder
+-KERN_DIR := /lib/modules/$(KERN_VER)/build
+ ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
+  $(error Error: unable to find the headers of the Linux kernel to build against. \
+           Specify KERN_VER=<version> and run Make again)
+diff --git a/vboxnetflt/Makefile.include.header b/vboxnetflt/Makefile.include.header
+index 8df1eb4d25..5a3e5604e7 100644
+--- a/vboxnetflt/Makefile.include.header
++++ b/vboxnetflt/Makefile.include.header
+@@ -117,7 +117,6 @@ else # neq($(KERNELRELEASE),)
+ endif # neq($(KERNELRELEASE),)
+
+ # Kernel build folder
+-KERN_DIR := /lib/modules/$(KERN_VER)/build
+ ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
+  $(error Error: unable to find the headers of the Linux kernel to build against. \
+           Specify KERN_VER=<version> and run Make again)
+diff --git a/vboxpci/Makefile.include.header b/vboxpci/Makefile.include.header
+index 8df1eb4d25..5a3e5604e7 100644
+--- a/vboxpci/Makefile.include.header
++++ b/vboxpci/Makefile.include.header
+@@ -117,7 +117,6 @@ else # neq($(KERNELRELEASE),)
+ endif # neq($(KERNELRELEASE),)
+
+ # Kernel build folder
+-KERN_DIR := /lib/modules/$(KERN_VER)/build
+ ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
+  $(error Error: unable to find the headers of the Linux kernel to build against. \
+           Specify KERN_VER=<version> and run Make again)
diff --git a/pkgs/os-specific/linux/wireguard/default.nix b/pkgs/os-specific/linux/wireguard/default.nix
index cc1890438f963..e1decf1d13d16 100644
--- a/pkgs/os-specific/linux/wireguard/default.nix
+++ b/pkgs/os-specific/linux/wireguard/default.nix
@@ -6,11 +6,11 @@ assert kernel != null -> stdenv.lib.versionAtLeast kernel.version "3.10";
 let
   name = "wireguard-${version}";
 
-  version = "0.0.20171101";
+  version = "0.0.20171111";
 
   src = fetchurl {
     url    = "https://git.zx2c4.com/WireGuard/snapshot/WireGuard-${version}.tar.xz";
-    sha256 = "0983aivw7wc5qq8didh4bdbdxcmddbpganf0z1xnqmjyls168sq9";
+    sha256 = "0mqix3v4qqwwa7hcd0h5rcwhc7yvm9jcl8b3v1vc4sj0m637fd6r";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/os-specific/linux/zfs/default.nix b/pkgs/os-specific/linux/zfs/default.nix
index ccec513a47047..e932f5163750f 100644
--- a/pkgs/os-specific/linux/zfs/default.nix
+++ b/pkgs/os-specific/linux/zfs/default.nix
@@ -159,10 +159,10 @@ in {
     incompatibleKernelVersion = null;
 
     # this package should point to a version / git revision compatible with the latest kernel release
-    version = "2017-10-16";
+    version = "2017-11-16";
 
-    rev = "7670f721fc82e6cdcdd31f83760a79b6f2f2b998";
-    sha256 = "0ask9d9936s7mhs9q5wzvn6c8fd322i76hs2n7fajfk17b1a1lkj";
+    rev = "d4a72f23863382bdf6d0ae33196f5b5decbc48fd";
+    sha256 = "0q2gkkj11hy8m8cjd70g99bs69ldxvc17ym0x1pgwvs4722hzpha";
     isUnstable = true;
 
     extraPatches = [