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/bcc/default.nix46
-rw-r--r--pkgs/os-specific/linux/bcc/fix-deadlock-detector-import.patch4
-rw-r--r--pkgs/os-specific/linux/bpftrace/bcc-source.patch32
-rw-r--r--pkgs/os-specific/linux/bpftrace/default.nix76
-rw-r--r--pkgs/os-specific/linux/bpftrace/disable-gtests.patch73
-rw-r--r--pkgs/os-specific/linux/bpftrace/fix-kernel-include-dir.patch22
-rw-r--r--pkgs/os-specific/linux/deepin-anything/default.nix22
-rw-r--r--pkgs/os-specific/linux/extrace/default.nix28
-rw-r--r--pkgs/os-specific/linux/kernel/export_kernel_fpu_functions.patch60
-rw-r--r--pkgs/os-specific/linux/kernel/hardened-config.nix3
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.14.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.19.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.9.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-5.0.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-5.1.nix18
-rw-r--r--pkgs/os-specific/linux/kernel/patches.nix5
-rw-r--r--pkgs/os-specific/linux/kernel/perf.nix3
-rw-r--r--pkgs/os-specific/linux/kexectools/default.nix5
-rw-r--r--pkgs/os-specific/linux/mbpfan/default.nix4
-rw-r--r--pkgs/os-specific/linux/miraclecast/default.nix6
-rw-r--r--pkgs/os-specific/linux/mstpd/default.nix22
-rw-r--r--pkgs/os-specific/linux/nvidia-x11/default.nix21
-rw-r--r--pkgs/os-specific/linux/nvidia-x11/generic.nix5
-rw-r--r--pkgs/os-specific/linux/nvidia-x11/persistenced.nix10
-rw-r--r--pkgs/os-specific/linux/nvidia-x11/settings.nix12
-rw-r--r--pkgs/os-specific/linux/sysstat/default.nix4
26 files changed, 296 insertions, 201 deletions
diff --git a/pkgs/os-specific/linux/bcc/default.nix b/pkgs/os-specific/linux/bcc/default.nix
index 885de8163be..013c847112b 100644
--- a/pkgs/os-specific/linux/bcc/default.nix
+++ b/pkgs/os-specific/linux/bcc/default.nix
@@ -4,20 +4,33 @@
 }:
 
 python.pkgs.buildPythonApplication rec {
-  version = "0.8.0";
+  version = "0.9.0";
   name = "bcc-${version}";
 
-  src = fetchFromGitHub {
-    owner  = "iovisor";
-    repo   = "bcc";
-    rev    = "v${version}";
-    sha256 = "15vvybllmh9hdj801v3psd671c0qq2a1xdv73kabb9r4fzgaknxk";
-  };
+  srcs = [
+    (fetchFromGitHub {
+      owner  = "iovisor";
+      repo   = "bcc";
+      rev    = "v${version}";
+      sha256 = "0gi12bsjaw1d77rx11wkdg4szcydwy55z6mkx558nfvdym0qj7yw";
+      name   = "bcc";
+    })
 
+    # note: keep this in sync with the version that was used at the time of the
+    # tagged release!
+    (fetchFromGitHub {
+      owner  = "libbpf";
+      repo   = "libbpf";
+      rev    = "5beb8a2ebffd1045e3edb9b522d6ff5bb477c541";
+      sha256 = "19n6baqj0mbaphzxkpn09m5a7cbij7fxap8ckk488nxqdz7nbsal";
+      name   = "libbpf";
+    })
+  ];
+  sourceRoot = "bcc";
   format = "other";
 
-  buildInputs = [
-    llvmPackages.llvm llvmPackages.clang-unwrapped kernel
+  buildInputs = with llvmPackages; [
+    llvm clang-unwrapped kernel
     elfutils luajit netperf iperf
     systemtap.stapBuild flex
   ];
@@ -28,6 +41,7 @@ python.pkgs.buildPythonApplication rec {
     ./fix-deadlock-detector-import.patch
   ];
 
+  propagatedBuildInputs = [ python.pkgs.netaddr ];
   nativeBuildInputs = [ makeWrapper cmake flex bison ]
     # libelf is incompatible with elfutils-libelf
     ++ stdenv.lib.filter (x: x != libelf) kernel.moduleBuildDependencies;
@@ -44,9 +58,11 @@ python.pkgs.buildPythonApplication rec {
     patch -p1 < libbcc-path.patch
   '';
 
-  propagatedBuildInputs = [
-    python.pkgs.netaddr
-  ];
+  preConfigure = ''
+    chmod -R u+w ../libbpf/
+    rmdir src/cc/libbpf
+    (cd src/cc && ln -svf ../../../libbpf/ libbpf)
+  '';
 
   postInstall = ''
     mkdir -p $out/bin $out/share
@@ -71,8 +87,8 @@ python.pkgs.buildPythonApplication rec {
 
   meta = with stdenv.lib; {
     description = "Dynamic Tracing Tools for Linux";
-    homepage = https://iovisor.github.io/bcc/;
-    license = licenses.asl20;
-    maintainers = with maintainers; [ ragge mic92 ];
+    homepage    = https://iovisor.github.io/bcc/;
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ ragge mic92 thoughtpolice ];
   };
 }
diff --git a/pkgs/os-specific/linux/bcc/fix-deadlock-detector-import.patch b/pkgs/os-specific/linux/bcc/fix-deadlock-detector-import.patch
index 87ce618a0dd..1c422635f4f 100644
--- a/pkgs/os-specific/linux/bcc/fix-deadlock-detector-import.patch
+++ b/pkgs/os-specific/linux/bcc/fix-deadlock-detector-import.patch
@@ -1,5 +1,5 @@
---- source.org/tools/deadlock_detector.py	1980-01-02 00:00:00.000000000 +0000
-+++ source/tools/deadlock_detector.py	2018-05-29 13:57:11.807126673 +0100
+--- source.org/tools/deadlock.py	1980-01-02 00:00:00.000000000 +0000
++++ source/tools/deadlock.py	2018-05-29 13:57:11.807126673 +0100
 @@ -44,9 +44,8 @@
  #
  # 01-Feb-2017   Kenny Yu   Created this.
diff --git a/pkgs/os-specific/linux/bpftrace/bcc-source.patch b/pkgs/os-specific/linux/bpftrace/bcc-source.patch
deleted file mode 100644
index a4c9947f0c3..00000000000
--- a/pkgs/os-specific/linux/bpftrace/bcc-source.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From fc0a5bd2ddb5827c5288ee284c1f2d834d79e432 Mon Sep 17 00:00:00 2001
-From: Rodney Lorrimar <dev@rodney.id.au>
-Date: Tue, 16 Oct 2018 09:55:59 +1000
-Subject: [PATCH 1/3] Don't use ExternalProject for bcc sources
-
----
- CMakeLists.txt | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index eae850a..b20fb33 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -31,6 +31,15 @@ if (OFFLINE_BUILDS)
-     UPDATE_DISCONNECTED 1
-     BUILD_COMMAND ${CMAKE_COMMAND} --build . --target bcc-static
-     )
-+elseif (NIX_BUILDS)
-+  include(ExternalProject)
-+  ExternalProject_Add(bcc
-+    DOWNLOAD_COMMAND rmdir bcc && ln -sf $ENV{bccSrc} bcc
-+    STEP_TARGETS build update
-+    EXCLUDE_FROM_ALL 1
-+    UPDATE_DISCONNECTED 1
-+    BUILD_COMMAND ${CMAKE_COMMAND} --build . --target bcc-static
-+    )
- else()
-   include(ExternalProject)
-   ExternalProject_Add(bcc
--- 
-2.17.1
-
diff --git a/pkgs/os-specific/linux/bpftrace/default.nix b/pkgs/os-specific/linux/bpftrace/default.nix
index 12773a95716..87355fbcc2e 100644
--- a/pkgs/os-specific/linux/bpftrace/default.nix
+++ b/pkgs/os-specific/linux/bpftrace/default.nix
@@ -1,57 +1,61 @@
 { stdenv, fetchFromGitHub
 , cmake, pkgconfig, flex, bison
-, llvmPackages, kernel, linuxHeaders, elfutils, libelf, bcc
+, llvmPackages, kernel, elfutils, libelf, bcc
 }:
 
 stdenv.mkDerivation rec {
-  name = "bpftrace-unstable-${version}";
-  version = "2018-10-27";
+  name = "bpftrace-${version}";
+  version = "0.9";
 
   src = fetchFromGitHub {
-    owner = "iovisor";
-    repo = "bpftrace";
-    rev = "c07b54f61fd7b7b49e0a254e746d6f442c5d780d";
-    sha256 = "1mpcjfyay9akmpqxag2ndwpz1qsdx8ii07jh9fky4w40wi9cipyg";
+    owner  = "iovisor";
+    repo   = "bpftrace";
+    rev    = "refs/tags/v${version}";
+    sha256 = "1kp6as3i67dnw5v3vc1cj5hmrq6c8pjpg9g38g1qcnc9i6drl1r8";
   };
 
-  # bpftrace requires an unreleased version of bcc, added to the cmake
-  # build as an ExternalProject.
-  # https://github.com/iovisor/bpftrace/issues/184
-  bccSrc = fetchFromGitHub {
-    owner = "iovisor";
-    repo = "bcc";
-    rev = "afd00154865f3b2da6781cf92cecebaca4853950";
-    sha256 = "0ad78smrnipr1f377i5rv6ksns7v2vq54g5badbj5ldqs4x0hygd";
-  };
+  enableParallelBuilding = true;
 
-  buildInputs = [
-    llvmPackages.llvm llvmPackages.clang-unwrapped kernel
-    elfutils libelf bccSrc
-  ];
+  buildInputs = with llvmPackages;
+    [ llvm clang-unwrapped
+      kernel elfutils libelf bcc
+    ];
 
   nativeBuildInputs = [ cmake pkgconfig flex bison ]
     # libelf is incompatible with elfutils-libelf
     ++ stdenv.lib.filter (x: x != libelf) kernel.moduleBuildDependencies;
 
-  patches = [
-    ./bcc-source.patch
-    # https://github.com/iovisor/bpftrace/issues/184
-    ./disable-gtests.patch
-  ];
-
-  configurePhase = ''
-    mkdir build
-    cd build
-    cmake ../                                   \
-      -DKERNEL_HEADERS_DIR=${linuxHeaders}      \
-      -DNIX_BUILDS:BOOL=ON                      \
-      -DCMAKE_INSTALL_PREFIX=$out
+  # patch the source, *then* substitute on @NIX_KERNEL_SRC@ in the result. we could
+  # also in theory make this an environment variable around bpftrace, but this works
+  # nicely without wrappers.
+  patchPhase = ''
+    patch -p1 < ${./fix-kernel-include-dir.patch}
+    substituteInPlace ./src/clang_parser.cpp \
+      --subst-var-by NIX_KERNEL_SRC '${kernel.dev}/lib/modules/${kernel.modDirVersion}'
+  '';
+
+  # tests aren't built, due to gtest shenanigans. see:
+  #
+  #     https://github.com/iovisor/bpftrace/issues/161#issuecomment-453606728
+  #     https://github.com/iovisor/bpftrace/pull/363
+  #
+  cmakeFlags =
+    [ "-DBUILD_TESTING=FALSE"
+      "-DLIBBCC_INCLUDE_DIRS=${bcc}/include/bcc"
+    ];
+
+  # nuke the example/reference output .txt files, for the included tools,
+  # stuffed inside $out. we don't need them at all.
+  postInstall = ''
+    rm -rf $out/share/bpftrace/tools/doc
   '';
 
+  outputs = [ "out" "man" ];
+
   meta = with stdenv.lib; {
     description = "High-level tracing language for Linux eBPF";
-    homepage = https://github.com/iovisor/bpftrace;
-    license = licenses.asl20;
-    maintainers = with maintainers; [ rvl ];
+    homepage    = https://github.com/iovisor/bpftrace;
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ rvl thoughtpolice ];
   };
 }
diff --git a/pkgs/os-specific/linux/bpftrace/disable-gtests.patch b/pkgs/os-specific/linux/bpftrace/disable-gtests.patch
deleted file mode 100644
index 941d85a4112..00000000000
--- a/pkgs/os-specific/linux/bpftrace/disable-gtests.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 221eea24674fffb3b657b2bd0c923071b69d48a7 Mon Sep 17 00:00:00 2001
-From: Rodney Lorrimar <dev@rodney.id.au>
-Date: Tue, 16 Oct 2018 09:56:47 +1000
-Subject: [PATCH 2/3] Disable tests
-
-Would prefer to use gtest library in the normal way rather through
-ExternalProject.
----
- CMakeLists.txt       |  4 ++--
- tests/CMakeLists.txt | 18 +++++++++++-------
- 2 files changed, 13 insertions(+), 9 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index b20fb33..7025d17 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -20,7 +20,7 @@ add_compile_options("-Wno-format-security")
- #add_compile_options("-Wstrict-overflow=5")
- #add_compile_options("-Wdisabled-optimization")
- 
--enable_testing()
-+# enable_testing()
- 
- if (OFFLINE_BUILDS)
-   include(ExternalProject)
-@@ -79,7 +79,7 @@ include_directories(${CLANG_INCLUDE_DIRS})
- add_subdirectory(src/arch)
- add_subdirectory(src/ast)
- add_subdirectory(src)
--add_subdirectory(tests)
-+# add_subdirectory(tests)
- add_subdirectory(resources)
- add_subdirectory(tools)
- add_subdirectory(man)
-diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
-index c283efa..6b5bff0 100644
---- a/tests/CMakeLists.txt
-+++ b/tests/CMakeLists.txt
-@@ -45,6 +45,8 @@ if (OFFLINE_BUILDS)
-     EXCLUDE_FROM_ALL 1
-     UPDATE_DISCONNECTED 1
-     )
-+elseif (NIX_BUILDS)
-+
- else()
-   include(ExternalProject)
-   ExternalProject_Add(gtest-git
-@@ -54,13 +56,15 @@ else()
-     EXCLUDE_FROM_ALL 1
-     )
- endif()
--add_dependencies(bpftrace_test gtest-git-build)
--ExternalProject_Get_Property(gtest-git source_dir binary_dir)
--target_include_directories(bpftrace_test PUBLIC ${source_dir}/googletest/include)
--target_include_directories(bpftrace_test PUBLIC ${source_dir}/googlemock/include)
--target_link_libraries(bpftrace_test ${binary_dir}/googlemock/gtest/libgtest.a)
--target_link_libraries(bpftrace_test ${binary_dir}/googlemock/gtest/libgtest_main.a)
--target_link_libraries(bpftrace_test ${binary_dir}/googlemock/libgmock.a)
-+
-+find_library(LIBGTEST "gtest")
-+if(LIBGTEST)
-+    set(LIBRARY_DEPENDENCIES
-+        ${LIBRARY_DEPENDENCIES}
-+       ${LIBGTEST}
-+    )
-+endif()
-+
- target_link_libraries(bpftrace_test ${CMAKE_THREAD_LIBS_INIT})
- 
- add_test(NAME bpftrace_test COMMAND bpftrace_test)
--- 
-2.17.1
-
diff --git a/pkgs/os-specific/linux/bpftrace/fix-kernel-include-dir.patch b/pkgs/os-specific/linux/bpftrace/fix-kernel-include-dir.patch
new file mode 100644
index 00000000000..0c6ffc471ad
--- /dev/null
+++ b/pkgs/os-specific/linux/bpftrace/fix-kernel-include-dir.patch
@@ -0,0 +1,22 @@
+commit b6172952c0150d84912fa6f09bab782dd0549f1e
+Author: Austin Seipp <aseipp@pobox.com>
+Date:   Fri May 3 00:47:12 2019 -0500
+
+    src: special case nix build directories for clang
+    
+    Signed-off-by: Austin Seipp <aseipp@pobox.com>
+
+diff --git a/src/clang_parser.cpp b/src/clang_parser.cpp
+index b1db8ff..0cfb01f 100644
+--- a/src/clang_parser.cpp
++++ b/src/clang_parser.cpp
+@@ -140,6 +140,9 @@ static bool is_dir(const std::string& path)
+ // Both ksrc and kobj are guaranteed to be != "", if at least some trace of kernel sources was found.
+ static std::tuple<std::string, std::string> get_kernel_dirs(const struct utsname& utsname)
+ {
++  // NB (aseipp): special case the kernel directory for nix
++  return { "@NIX_KERNEL_SRC@/source", "@NIX_KERNEL_SRC@/build" };
++
+ #ifdef KERNEL_HEADERS_DIR
+   return {KERNEL_HEADERS_DIR, KERNEL_HEADERS_DIR};
+ #endif
diff --git a/pkgs/os-specific/linux/deepin-anything/default.nix b/pkgs/os-specific/linux/deepin-anything/default.nix
new file mode 100644
index 00000000000..4139cc153cd
--- /dev/null
+++ b/pkgs/os-specific/linux/deepin-anything/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, deepin, kernel }:
+
+stdenv.mkDerivation {
+  pname = "deepin-anything-module";
+  version = "${deepin.deepin-anything.version}-${kernel.version}";
+  src = deepin.deepin-anything.modsrc;
+
+  nativeBuildInputs = kernel.moduleBuildDependencies;
+
+  buildPhase = ''
+    make -C src/deepin-anything-0.0 kdir=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build
+  '';
+
+  installPhase = ''
+     install -m 644 -D -t $out/lib/modules/${kernel.modDirVersion}/extra src/deepin-anything-0.0/*.ko
+  '';
+
+  meta = deepin.deepin-anything.meta // {
+    description = deepin.deepin-anything.meta.description + " (kernel modules)";
+    badPlatforms = [ "aarch64-linux" ];  # the kernel module is not building
+  };
+}
diff --git a/pkgs/os-specific/linux/extrace/default.nix b/pkgs/os-specific/linux/extrace/default.nix
new file mode 100644
index 00000000000..28a92d31eaa
--- /dev/null
+++ b/pkgs/os-specific/linux/extrace/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "extrace-${version}";
+  version = "0.7";
+
+  src = fetchFromGitHub {
+    owner = "leahneukirchen";
+    repo = "extrace";
+    rev = "v${version}";
+    sha256 = "0acspj3djspfvgr3ng5b61qws6v2md6b0lc5qkby10mqnfpkvq85";
+  };
+
+  makeFlags = "PREFIX=$(out)";
+
+  postInstall = ''
+    install -dm755 "$out/share/licenses/extrace/"
+    install -m644 LICENSE "$out/share/licenses/extrace/LICENSE"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/leahneukirchen/extrace;
+    description = "Trace exec() calls system-wide";
+    license = with licenses; [ gpl2 bsd2 ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.leahneukirchen ];
+  };
+}
diff --git a/pkgs/os-specific/linux/kernel/export_kernel_fpu_functions.patch b/pkgs/os-specific/linux/kernel/export_kernel_fpu_functions.patch
new file mode 100644
index 00000000000..205497aee2d
--- /dev/null
+++ b/pkgs/os-specific/linux/kernel/export_kernel_fpu_functions.patch
@@ -0,0 +1,60 @@
+From 245e0f743d814c9ff2d1c748175e321301eb16cf Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= <joerg@thalheim.io>
+Date: Thu, 2 May 2019 05:28:08 +0100
+Subject: [PATCH] x86/fpu: Export __kernel_fpu_{begin,end}()
+
+This partially undo commit:
+
+12209993  x86/fpu: Don't export __kernel_fpu_{begin,end}()
+
+We need this symbol in zfs for AES-NI/AVX support.
+---
+ arch/x86/include/asm/fpu/api.h | 2 ++
+ arch/x86/kernel/fpu/core.c     | 6 ++++--
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/arch/x86/include/asm/fpu/api.h b/arch/x86/include/asm/fpu/api.h
+index b56d504af6545..7d53388d266ea 100644
+--- a/arch/x86/include/asm/fpu/api.h
++++ b/arch/x86/include/asm/fpu/api.h
+@@ -18,6 +18,8 @@
+  * If you intend to use the FPU in softirq you need to check first with
+  * irq_fpu_usable() if it is possible.
+  */
++extern void __kernel_fpu_begin(void);
++extern void __kernel_fpu_end(void);
+ extern void kernel_fpu_begin(void);
+ extern void kernel_fpu_end(void);
+ extern bool irq_fpu_usable(void);
+diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c
+index 2e5003fef51a9..2ea85b32421a0 100644
+--- a/arch/x86/kernel/fpu/core.c
++++ b/arch/x86/kernel/fpu/core.c
+@@ -93,7 +93,7 @@ bool irq_fpu_usable(void)
+ }
+ EXPORT_SYMBOL(irq_fpu_usable);
+ 
+-static void __kernel_fpu_begin(void)
++void __kernel_fpu_begin(void)
+ {
+ 	struct fpu *fpu = &current->thread.fpu;
+ 
+@@ -111,8 +111,9 @@ static void __kernel_fpu_begin(void)
+ 		__cpu_invalidate_fpregs_state();
+ 	}
+ }
++EXPORT_SYMBOL(__kernel_fpu_begin);
+ 
+-static void __kernel_fpu_end(void)
++void __kernel_fpu_end(void)
+ {
+ 	struct fpu *fpu = &current->thread.fpu;
+ 
+@@ -121,6 +122,7 @@ static void __kernel_fpu_end(void)
+ 
+ 	kernel_fpu_enable();
+ }
++EXPORT_SYMBOL(__kernel_fpu_end);
+ 
+ void kernel_fpu_begin(void)
+ {
diff --git a/pkgs/os-specific/linux/kernel/hardened-config.nix b/pkgs/os-specific/linux/kernel/hardened-config.nix
index f1f18c64130..79ee27c52b5 100644
--- a/pkgs/os-specific/linux/kernel/hardened-config.nix
+++ b/pkgs/os-specific/linux/kernel/hardened-config.nix
@@ -91,6 +91,9 @@ optionalAttrs (stdenv.hostPlatform.platform.kernelArch == "x86_64") {
   PAGE_POISONING_NO_SANITY = yes;
   PAGE_POISONING_ZERO      = yes;
 
+  # Enable the SafeSetId LSM
+  SECURITY_SAFESETID = whenAtLeast "5.1" yes;
+
   # Reboot devices immediately if kernel experiences an Oops.
   PANIC_ON_OOPS = yes;
   PANIC_TIMEOUT = freeform "-1";
diff --git a/pkgs/os-specific/linux/kernel/linux-4.14.nix b/pkgs/os-specific/linux/kernel/linux-4.14.nix
index b78540c44df..94b8fb209bc 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.14.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.14.nix
@@ -3,7 +3,7 @@
 with stdenv.lib;
 
 buildLinux (args // rec {
-  version = "4.14.114";
+  version = "4.14.116";
 
   # modDirVersion needs to be x.y.z, will automatically add .0 if needed
   modDirVersion = if (modDirVersionArg == null) then concatStrings (intersperse "." (take 3 (splitString "." "${version}.0"))) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "05cyq4id1l3z8hhfs7ril9qc92pfx9h9pgvwl18q1lf8mg7ispmp";
+    sha256 = "1gcdisdbgrh4mh9d38jy7pv0xi58mra1zddbdp3lxary2sazlnm0";
   };
 } // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-4.19.nix b/pkgs/os-specific/linux/kernel/linux-4.19.nix
index cf952184ccc..a5113087220 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.19.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.19.nix
@@ -3,7 +3,7 @@
 with stdenv.lib;
 
 buildLinux (args // rec {
-  version = "4.19.37";
+  version = "4.19.40";
 
   # modDirVersion needs to be x.y.z, will automatically add .0 if needed
   modDirVersion = if (modDirVersionArg == null) then concatStrings (intersperse "." (take 3 (splitString "." "${version}.0"))) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "0rcwzzbm4853rhsj5mkya0asi6bhsg3mhh9r9ihps31cqc7b7c7c";
+    sha256 = "1c1z0z5ac4zy8fp2lxbwapzwby4p9w8bx3wnlysbzmqmi96wvn3g";
   };
 } // (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 87b9036dc9a..29ff6811aa4 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, buildPackages, fetchurl, perl, buildLinux, ... } @ args:
 
 buildLinux (args // rec {
-  version = "4.9.171";
+  version = "4.9.173";
   extraMeta.branch = "4.9";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "00bznn1x8rq0wgjpl8sbp0cp4mzpbzjdnf2rvm8rinklpy9dj723";
+    sha256 = "0s0iypddxqkabjmd72frfk6dca8amk46vmiyy2nh8zbx9y89smxw";
   };
 } // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-5.0.nix b/pkgs/os-specific/linux/kernel/linux-5.0.nix
index 2af5541a57c..11172b9576f 100644
--- a/pkgs/os-specific/linux/kernel/linux-5.0.nix
+++ b/pkgs/os-specific/linux/kernel/linux-5.0.nix
@@ -3,7 +3,7 @@
 with stdenv.lib;
 
 buildLinux (args // rec {
-  version = "5.0.10";
+  version = "5.0.13";
 
   # modDirVersion needs to be x.y.z, will automatically add .0 if needed
   modDirVersion = if (modDirVersionArg == null) then concatStrings (intersperse "." (take 3 (splitString "." "${version}.0"))) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
-    sha256 = "0xjycbjlzpgskqnwcjml60vkbg7r8fsijdj6ypmhpry7q8ii677a";
+    sha256 = "0y9lsmmalixrh1z72rxdaqb007j6b4wqfshl2bvza95a3yzm5zdw";
   };
 } // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-5.1.nix b/pkgs/os-specific/linux/kernel/linux-5.1.nix
new file mode 100644
index 00000000000..648be21f4cd
--- /dev/null
+++ b/pkgs/os-specific/linux/kernel/linux-5.1.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildPackages, fetchurl, perl, buildLinux, modDirVersionArg ? null, ... } @ args:
+
+with stdenv.lib;
+
+buildLinux (args // rec {
+  version = "5.1";
+
+  # modDirVersion needs to be x.y.z, will automatically add .0 if needed
+  modDirVersion = if (modDirVersionArg == null) then concatStrings (intersperse "." (take 3 (splitString "." "${version}.0"))) else modDirVersionArg;
+
+  # branchVersion needs to be x.y
+  extraMeta.branch = concatStrings (intersperse "." (take 2 (splitString "." version)));
+
+  src = fetchurl {
+    url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
+    sha256 = "0hghjkxgf1p8mfm04a9ckjvyrnp71jp3pbbp0qsx35rzwzk7nsnh";
+  };
+} // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix
index 4c338b37dec..e941cd4ea41 100644
--- a/pkgs/os-specific/linux/kernel/patches.nix
+++ b/pkgs/os-specific/linux/kernel/patches.nix
@@ -57,4 +57,9 @@ rec {
       sha256 = "1l8xq02rd7vakxg52xm9g4zng0ald866rpgm8kjlh88mwwyjkrwv";
     };
   };
+
+  export_kernel_fpu_functions = rec {
+    name = "export_kernel_fpu_functions";
+    patch = ./export_kernel_fpu_functions.patch;
+  };
 }
diff --git a/pkgs/os-specific/linux/kernel/perf.nix b/pkgs/os-specific/linux/kernel/perf.nix
index 840d4cc9cf7..1e5c987d508 100644
--- a/pkgs/os-specific/linux/kernel/perf.nix
+++ b/pkgs/os-specific/linux/kernel/perf.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, kernel, elfutils, python, perl, newt, slang, asciidoc, xmlto, makeWrapper
 , docbook_xsl, docbook_xml_dtd_45, libxslt, flex, bison, pkgconfig, libunwind, binutils
-, libiberty, audit, libbfd, openssl, systemtap, numactl
+, libiberty, audit, libbfd, libopcodes, openssl, systemtap, numactl
 , zlib, withGtk ? false, gtk2 ? null
 }:
 
@@ -40,6 +40,7 @@ stdenv.mkDerivation {
   ];
   buildInputs = [
     elfutils newt slang libunwind libbfd zlib openssl systemtap.stapBuild numactl
+    libopcodes
   ] ++ stdenv.lib.optional withGtk gtk2;
 
   # Note: we don't add elfutils to buildInputs, since it provides a
diff --git a/pkgs/os-specific/linux/kexectools/default.nix b/pkgs/os-specific/linux/kexectools/default.nix
index bb96e5dea57..8adb862a265 100644
--- a/pkgs/os-specific/linux/kexectools/default.nix
+++ b/pkgs/os-specific/linux/kexectools/default.nix
@@ -22,7 +22,10 @@ stdenv.mkDerivation rec {
     homepage = http://horms.net/projects/kexec/kexec-tools;
     description = "Tools related to the kexec Linux feature";
     platforms = platforms.linux;
+    badPlatforms = [
+      "riscv64-linux" "riscv32-linux"
+      "sparc-linux" "sparc64-linux"
+    ];
     license = licenses.gpl2;
-    badPlatforms = platforms.riscv;
   };
 }
diff --git a/pkgs/os-specific/linux/mbpfan/default.nix b/pkgs/os-specific/linux/mbpfan/default.nix
index 7351712b887..9528b9be7f7 100644
--- a/pkgs/os-specific/linux/mbpfan/default.nix
+++ b/pkgs/os-specific/linux/mbpfan/default.nix
@@ -2,12 +2,12 @@
 
 stdenv.mkDerivation rec {
   name = "mbpfan-${version}";
-  version = "2.1.0";
+  version = "2.1.1";
   src = fetchFromGitHub {
     owner = "dgraziotin";
     repo = "mbpfan";
     rev = "v${version}";
-    sha256 = "1gysq778rkl6dvvj9a1swxcl15wvz0bng5bn4nwq118cl8p8pask";
+    sha256 = "0aijyxrqh01x0s80yr4cgxgd001iiqqph65pxvby7f0wz8lnxnqj";
   };
   installPhase = ''
     mkdir -p $out/bin $out/etc
diff --git a/pkgs/os-specific/linux/miraclecast/default.nix b/pkgs/os-specific/linux/miraclecast/default.nix
index c7990466ca7..b65486cb2fe 100644
--- a/pkgs/os-specific/linux/miraclecast/default.nix
+++ b/pkgs/os-specific/linux/miraclecast/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   name = "miraclecast-${version}";
-  version = "1.0-20170427";
+  version = "1.0-20190403";
 
   src = fetchFromGitHub {
     owner  = "albfan";
     repo   = "miraclecast";
-    rev    = "a395c3c7afc39a958ae8ab805dea0f5d22118f0c";
-    sha256 = "03kbjajv2x0i2g68c5aij0icf9waxnqkc9pp32z60nc8zxy9jk1y";
+    rev    = "960a785e10523cc525885380dd03aa2c5ba11bc7";
+    sha256 = "05afqi33rv7k6pbkkw4mynj6p97vkzhhh13y5nh0yxkyhcgf45pm";
   };
 
   nativeBuildInputs = [ meson ninja pkgconfig ];
diff --git a/pkgs/os-specific/linux/mstpd/default.nix b/pkgs/os-specific/linux/mstpd/default.nix
index ea5790b495b..492a9321a21 100644
--- a/pkgs/os-specific/linux/mstpd/default.nix
+++ b/pkgs/os-specific/linux/mstpd/default.nix
@@ -1,22 +1,28 @@
 { stdenv, fetchFromGitHub, autoreconfHook }:
 
-stdenv.mkDerivation {
-  name = "mstpd-0.0.5.20171113";
+stdenv.mkDerivation rec {
+  pname = "mstpd";
+  version = "0.0.7";
 
   src = fetchFromGitHub {
-    owner = "mstpd";
-    repo = "mstpd";
-    rev = "2522c6eed201bce8dd81e1583f28748e9c552d0d";
-    sha256 = "0ckk386inwcx3776hf15w78hpw4db2rgv4zgf0i3zcylr83hhsr2";
+    owner = pname;
+    repo = pname;
+    rev = version;
+    sha256 = "01majib6d1rixngf8c8vcrj1akf8nsqpxhdfdxxi2xwg23vx8f1a";
   };
 
   nativeBuildInputs = [ autoreconfHook ];
 
-  installFlags = [ "DESTDIR=$(out)" ];
+  configureFlags = [
+    "--prefix=$(out)"
+    "--sysconfdir=$(out)/etc"
+    "--sbindir=$(out)/sbin"
+    "--libexecdir=$(out)/lib"
+  ];
 
   meta = with stdenv.lib; {
     description = "Multiple Spanning Tree Protocol daemon";
-    homepage = https://sourceforge.net/projects/mstpd/;
+    homepage = "https://github.com/mstpd/mstpd";
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/os-specific/linux/nvidia-x11/default.nix b/pkgs/os-specific/linux/nvidia-x11/default.nix
index 13b645c8089..9a4954dc348 100644
--- a/pkgs/os-specific/linux/nvidia-x11/default.nix
+++ b/pkgs/os-specific/linux/nvidia-x11/default.nix
@@ -19,13 +19,18 @@ rec {
   stable = if stdenv.hostPlatform.system == "x86_64-linux" then stable_418 else legacy_390;
 
   # No active beta right now
-  beta = stable;
+  beta = generic {
+    version = "430.09";
+    sha256_64bit = "0k59ahljya286ararncf3mc7sfgsw82vnrszczqicpysn3qfar95";
+    settingsSha256 = "082v0xmz83sf4wdvcb2zawddy5vh3pbwjz0fda1rayc7fdadni05";
+    persistencedSha256 = "028vs23mnb345sxjxqqmln9pwq8n6cc6dhfzq4hj21ghc6l6fg54";
+  };
 
   stable_418 = generic {
     version = "418.56";
     sha256_64bit = "1cg7927g5ml1rwgpydlrjzr55gza5dfkqkch29bbarpzd7dh0mf4";
-    settingsSha256 = "1dai4dh6g3arkgicbjwhfr948i1xc13a7s0xcgalan0pn5zd56z6";
-    persistencedSha256 = "1r13jjpqg9ri5mw633k01dq2ivblc8nrbsnh7709v1xibaydwnhn";
+    settingsSha256 = "150c64wbijwyq032ircl1b78q0gwdvfq35gxaqw00d3ac2hjwpsg";
+    persistencedSha256 = "07wh6v8c2si0zwy9j60yzrdn1b1pm0vr9kfvql3jkyjqfn4np44z";
   };
 
   # Last one supporting x86
@@ -33,8 +38,8 @@ rec {
     version = "390.116";
     sha256_32bit = "0aavzi99ps7r6nrchf4h9gw3fkvm2z6wppkqkz5fwcy7x03ky4qk";
     sha256_64bit = "106qc62a7m9imchqfq8rfn8fwyrjxg383354q7z2wr8112fyhyg1";
-    settingsSha256 = "0inmzjhnlal5ih2iyv2x4y3jx7c4lz9xln8sy9j20yj9azp51qz0";
-    persistencedSha256 = "04ycijijlcbib2afcxjsyyzza1i3adh17sddrz3sah7rj38mrlgx";
+    settingsSha256 = "0n4pj8dzkr7ccwrn5p46mn59cnijdhg8zmn3idjzrk56pq0hbgjr";
+    persistencedSha256 = "0bnjr0smhlwlqpyg9m6lca3b7brl2mw8aypc6p7525dn9d9kv6kb";
 
     patches = lib.optional (kernel.meta.branch == "4.19") ./drm_mode_connector.patch;
   };
@@ -43,8 +48,8 @@ rec {
     version = "340.107";
     sha256_32bit = "0mh83affz6bim26ws7kkwwcfj2s6vkdy4d45hifsbshr82qd52wd";
     sha256_64bit = "0pv9yv3x0kg9hfkmc50xb54ahxkbnyy2vyy4hj2h0s6m9sb5kqz3";
-    settingsSha256 = "1rgaa24acdyqa1rqrx56293vxpskr792njqqpigqmps04llsx703";
-    persistencedSha256 = "0nwv6kh4gxgy80x1zs6gcg5hy3amg25xhsfa2v4mwqa36sblxz6l";
+    settingsSha256 = "1zf0fy9jj6ipm5vk153swpixqm75iricmx7x49pmr97kzyczaxa7";
+    persistencedSha256 = "0v225jkiqk9rma6whxs1a4fyr4haa75bvi52ss3vsyn62zzl24na";
     useGLVND = false;
 
     patches = [ ./vm_operations_struct-fault.patch ];
@@ -54,7 +59,7 @@ rec {
     version = "304.137";
     sha256_32bit = "1y34c2gvmmacxk2c72d4hsysszncgfndc4s1nzldy2q9qagkg66a";
     sha256_64bit = "1qp3jv6279k83k3z96p6vg3dd35y9bhmlyyyrkii7sib7bdmc7zb";
-    settingsSha256 = "0i5znfq6jkabgi8xpcy12pdpww6a67i8mq60z1kjq36mmnb25pmi";
+    settingsSha256 = "129f0j0hxzjd7g67qwxn463rxp295fsq8lycwm6272qykmab46cj";
     persistencedSha256 = null;
     useGLVND = false;
     useProfiles = false;
diff --git a/pkgs/os-specific/linux/nvidia-x11/generic.nix b/pkgs/os-specific/linux/nvidia-x11/generic.nix
index 4bbb9d92930..c167edff6e4 100644
--- a/pkgs/os-specific/linux/nvidia-x11/generic.nix
+++ b/pkgs/os-specific/linux/nvidia-x11/generic.nix
@@ -41,7 +41,10 @@ let
     src =
       if stdenv.hostPlatform.system == "x86_64-linux" then
         fetchurl {
-          url = "https://download.nvidia.com/XFree86/Linux-x86_64/${version}/NVIDIA-Linux-x86_64-${version}${pkgSuffix}.run";
+          urls = [
+            "https://download.nvidia.com/XFree86/Linux-x86_64/${version}/NVIDIA-Linux-x86_64-${version}${pkgSuffix}.run"
+            "https://us.download.nvidia.com/XFree86/Linux-x86_64/${version}/NVIDIA-Linux-x86_64-${version}${pkgSuffix}.run"
+          ];
           sha256 = sha256_64bit;
         }
       else if stdenv.hostPlatform.system == "i686-linux" then
diff --git a/pkgs/os-specific/linux/nvidia-x11/persistenced.nix b/pkgs/os-specific/linux/nvidia-x11/persistenced.nix
index 38f808cee3f..cfe79d4c0b7 100644
--- a/pkgs/os-specific/linux/nvidia-x11/persistenced.nix
+++ b/pkgs/os-specific/linux/nvidia-x11/persistenced.nix
@@ -1,13 +1,15 @@
 nvidia_x11: sha256:
 
-{ stdenv, fetchurl, m4 }:
+{ stdenv, fetchFromGitHub, m4 }:
 
 stdenv.mkDerivation rec {
-  name = "nvidia-persistenced-${nvidia_x11.version}";
+  pname = "nvidia-persistenced";
   inherit (nvidia_x11) version;
 
-  src = fetchurl {
-    url = "https://download.nvidia.com/XFree86/nvidia-persistenced/${name}.tar.bz2";
+  src = fetchFromGitHub {
+    owner = "NVIDIA";
+    repo = "nvidia-persistenced";
+    rev = nvidia_x11.version;
     inherit sha256;
   };
 
diff --git a/pkgs/os-specific/linux/nvidia-x11/settings.nix b/pkgs/os-specific/linux/nvidia-x11/settings.nix
index 7106550c39e..0dd2ffb1ec2 100644
--- a/pkgs/os-specific/linux/nvidia-x11/settings.nix
+++ b/pkgs/os-specific/linux/nvidia-x11/settings.nix
@@ -1,18 +1,20 @@
 nvidia_x11: sha256:
 
-{ stdenv, lib, fetchurl, pkgconfig, m4, jansson, gtk2, dbus, gtk3, libXv, libXrandr, libXext, libXxf86vm, libvdpau
+{ stdenv, lib, fetchFromGitHub, pkgconfig, m4, jansson, gtk2, dbus, gtk3, libXv, libXrandr, libXext, libXxf86vm, libvdpau
 , librsvg, wrapGAppsHook
 , withGtk2 ? false, withGtk3 ? true
 }:
 
 let
-  src = fetchurl {
-    url = "https://download.nvidia.com/XFree86/nvidia-settings/nvidia-settings-${nvidia_x11.version}.tar.bz2";
+  src = fetchFromGitHub {
+    owner = "NVIDIA";
+    repo = "nvidia-settings";
+    rev = nvidia_x11.version;
     inherit sha256;
   };
 
   libXNVCtrl = stdenv.mkDerivation {
-    name = "libXNVCtrl-${nvidia_x11.version}";
+    pname = "libXNVCtrl";
     inherit (nvidia_x11) version;
     inherit src;
 
@@ -35,7 +37,7 @@ let
 in
 
 stdenv.mkDerivation rec {
-  name = "nvidia-settings-${nvidia_x11.version}";
+  pname = "nvidia-settings";
   inherit (nvidia_x11) version;
   inherit src;
 
diff --git a/pkgs/os-specific/linux/sysstat/default.nix b/pkgs/os-specific/linux/sysstat/default.nix
index 96bffc63a27..67dda1e5bd2 100644
--- a/pkgs/os-specific/linux/sysstat/default.nix
+++ b/pkgs/os-specific/linux/sysstat/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, gettext, bzip2 }:
 
 stdenv.mkDerivation rec {
-  name = "sysstat-12.1.3";
+  name = "sysstat-12.1.4";
 
   src = fetchurl {
     url = "http://perso.orange.fr/sebastien.godard/${name}.tar.xz";
-    sha256 = "1am1a6mwi91921rrq8ivgczdsl4gdz91zxkx7vnrzfjm4zw8njam";
+    sha256 = "0vd1v3kdgsfi82mskh18pyv4bb1rjzzai13vga1ms3nkjvv8lqkg";
   };
 
   buildInputs = [ gettext ];