summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/systems/doubles.nix2
-rw-r--r--lib/systems/for-meta.nix2
-rw-r--r--lib/systems/inspect.nix3
-rw-r--r--lib/systems/parse.nix3
-rw-r--r--lib/tests/systems.nix2
-rw-r--r--pkgs/development/compilers/gcc/4.8/default.nix50
-rw-r--r--pkgs/development/compilers/gcc/4.9/default.nix51
-rw-r--r--pkgs/development/compilers/gcc/5/default.nix52
-rw-r--r--pkgs/development/compilers/gcc/6/default.nix51
-rw-r--r--pkgs/development/compilers/gcc/7/default.nix52
-rw-r--r--pkgs/development/compilers/gcc/8/default.nix52
-rw-r--r--pkgs/development/compilers/gcc/snapshot/default.nix52
-rw-r--r--pkgs/development/tools/misc/gdb/default.nix9
-rw-r--r--pkgs/os-specific/gnu/default.nix113
-rw-r--r--pkgs/os-specific/gnu/hurd/default.nix91
-rw-r--r--pkgs/os-specific/gnu/libpthread/default.nix81
-rw-r--r--pkgs/os-specific/gnu/mach/default.nix57
-rw-r--r--pkgs/os-specific/gnu/mig/default.nix50
-rw-r--r--pkgs/os-specific/gnu/mig/noyywrap.patch12
-rw-r--r--pkgs/os-specific/gnu/smbfs/default.nix44
-rw-r--r--pkgs/os-specific/gnu/smbfs/samba-without-byte-range-locks.patch14
-rw-r--r--pkgs/os-specific/gnu/unionfs/default.nix43
-rw-r--r--pkgs/stdenv/generic/default.nix2
-rw-r--r--pkgs/tools/filesystems/nixpart/0.4/parted.nix5
-rw-r--r--pkgs/tools/misc/parted/default.nix5
-rw-r--r--pkgs/top-level/all-packages.nix42
26 files changed, 34 insertions, 906 deletions
diff --git a/lib/systems/doubles.nix b/lib/systems/doubles.nix
index adc454406b8..a00165db171 100644
--- a/lib/systems/doubles.nix
+++ b/lib/systems/doubles.nix
@@ -36,7 +36,7 @@ in rec {
   cygwin  = filterDoubles predicates.isCygwin;
   darwin  = filterDoubles predicates.isDarwin;
   freebsd = filterDoubles predicates.isFreeBSD;
-  # Should be better, but MinGW is unclear, and HURD is bit-rotted.
+  # Should be better, but MinGW is unclear.
   gnu     = filterDoubles (matchAttrs { kernel = parse.kernels.linux; abi = parse.abis.gnu; });
   illumos = filterDoubles predicates.isSunOS;
   linux   = filterDoubles predicates.isLinux;
diff --git a/lib/systems/for-meta.nix b/lib/systems/for-meta.nix
index 96e8b6f86eb..51fb6ae760d 100644
--- a/lib/systems/for-meta.nix
+++ b/lib/systems/for-meta.nix
@@ -20,7 +20,7 @@ in rec {
   cygwin  = [ patterns.isCygwin ];
   darwin  = [ patterns.isDarwin ];
   freebsd = [ patterns.isFreeBSD ];
-  # Should be better, but MinGW is unclear, and HURD is bit-rotted.
+  # Should be better, but MinGW is unclear.
   gnu     = [
     { kernel = parse.kernels.linux; abi = abis.gnu; }
     { kernel = parse.kernels.linux; abi = abis.gnueabi; }
diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix
index ac34ed45695..65f560328af 100644
--- a/lib/systems/inspect.nix
+++ b/lib/systems/inspect.nix
@@ -27,14 +27,13 @@ rec {
 
     isBSD          = { kernel = { families = { inherit (kernelFamilies) bsd; }; }; };
     isDarwin       = { kernel = { families = { inherit (kernelFamilies) darwin; }; }; };
-    isUnix         = [ isBSD isDarwin isLinux isSunOS isHurd isCygwin ];
+    isUnix         = [ isBSD isDarwin isLinux isSunOS isCygwin ];
 
     isMacOS        = { kernel = kernels.macos; };
     isiOS          = { kernel = kernels.ios; };
     isLinux        = { kernel = kernels.linux; };
     isSunOS        = { kernel = kernels.solaris; };
     isFreeBSD      = { kernel = kernels.freebsd; };
-    isHurd         = { kernel = kernels.hurd; };
     isNetBSD       = { kernel = kernels.netbsd; };
     isOpenBSD      = { kernel = kernels.openbsd; };
     isWindows      = { kernel = kernels.windows; };
diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix
index 7ee3479c333..bb26c93f3d7 100644
--- a/lib/systems/parse.nix
+++ b/lib/systems/parse.nix
@@ -172,7 +172,6 @@ rec {
     macos   = { execFormat = macho;   families = { inherit darwin; }; name = "darwin"; };
     ios     = { execFormat = macho;   families = { inherit darwin; }; };
     freebsd = { execFormat = elf;     families = { inherit bsd; }; };
-    hurd    = { execFormat = elf;     families = { }; };
     linux   = { execFormat = elf;     families = { }; };
     netbsd  = { execFormat = elf;     families = { inherit bsd; }; };
     none    = { execFormat = unknown; families = { }; };
@@ -259,8 +258,6 @@ rec {
     "2" = # We only do 2-part hacks for things Nix already supports
       if elemAt l 1 == "cygwin"
         then { cpu = elemAt l 0;                      kernel = "windows";  abi = "cygnus";   }
-      else if elemAt l 1 == "gnu"
-        then { cpu = elemAt l 0;                      kernel = "hurd";     abi = "gnu";      }
       else   { cpu = elemAt l 0;                      kernel = elemAt l 1;                   };
     "3" = # Awkwards hacks, beware!
       if elemAt l 1 == "apple"
diff --git a/lib/tests/systems.nix b/lib/tests/systems.nix
index ffdd8ae929c..91604280e4e 100644
--- a/lib/tests/systems.nix
+++ b/lib/tests/systems.nix
@@ -22,7 +22,7 @@ in with lib.systems.doubles; lib.runTests {
   cygwin = assertTrue (mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ]);
   darwin = assertTrue (mseteq darwin [ "x86_64-darwin" ]);
   freebsd = assertTrue (mseteq freebsd [ "i686-freebsd" "x86_64-freebsd" ]);
-  gnu = assertTrue (mseteq gnu (linux /* ++ hurd ++ kfreebsd ++ ... */));
+  gnu = assertTrue (mseteq gnu (linux /* ++ kfreebsd ++ ... */));
   illumos = assertTrue (mseteq illumos [ "x86_64-solaris" ]);
   linux = assertTrue (mseteq linux [ "i686-linux" "x86_64-linux" "armv5tel-linux" "armv6l-linux" "armv7l-linux" "aarch64-linux" "mipsel-linux" ]);
   netbsd = assertTrue (mseteq netbsd [ "i686-netbsd" "x86_64-netbsd" ]);
diff --git a/pkgs/development/compilers/gcc/4.8/default.nix b/pkgs/development/compilers/gcc/4.8/default.nix
index 101a6feeeae..3e9ddacac1b 100644
--- a/pkgs/development/compilers/gcc/4.8/default.nix
+++ b/pkgs/development/compilers/gcc/4.8/default.nix
@@ -24,7 +24,6 @@
 , name ? "gcc"
 , libcCross ? null
 , crossStageStatic ? false
-, libpthread ? null, libpthreadCross ? null  # required for GNU/Hurd
 , # Strip kills static libs of other archs (hence no cross)
   stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
 , gnused ? null
@@ -181,39 +180,7 @@ stdenv.mkDerivation ({
   libc_dev = stdenv.cc.libc_dev;
 
   postPatch =
-    if targetPlatform.isHurd
-    then
-      # On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
-      # in glibc, so add the right `-I' flags to the default spec string.
-      assert libcCross != null -> libpthreadCross != null;
-      let
-        libc = if libcCross != null then libcCross else stdenv.glibc;
-        gnu_h = "gcc/config/gnu.h";
-        extraCPPDeps =
-             libc.propagatedBuildInputs
-          ++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
-          ++ stdenv.lib.optional (libpthread != null) libpthread;
-        extraCPPSpec =
-          concatStrings (intersperse " "
-                          (map (x: "-I${x.dev or x}/include") extraCPPDeps));
-        extraLibSpec =
-          if libpthreadCross != null
-          then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
-          else "-L${libpthread}/lib";
-      in
-        '' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
-           sed -i "${gnu_h}" \
-               -es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
-
-           echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
-           sed -i "${gnu_h}" \
-               -es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
-
-           echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
-           sed -i "${gnu_h}" \
-               -es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
-        ''
-    else if targetPlatform != hostPlatform || stdenv.cc.libc != null then
+    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
       # On NixOS, use the right path to the dynamic linker instead of
       # `/lib/ld*.so'.
       let
@@ -379,21 +346,13 @@ stdenv.mkDerivation ({
     ++ optional langJava boehmgc
     ++ optionals javaAwtGtk xlibs
     ++ optionals javaAwtGtk [ gmp mpfr ]
-    ++ optional (libpthread != null) libpthread
-    ++ optional (libpthreadCross != null) libpthreadCross
-
-    # On GNU/Hurd glibc refers to Mach & Hurd
-    # headers.
-    ++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
-                 libcCross.propagatedBuildInputs
   ));
 
   LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
     ++ optional (zlib != null) zlib
     ++ optional langJava boehmgc
     ++ optionals javaAwtGtk xlibs
-    ++ optionals javaAwtGtk [ gmp mpfr ]
-    ++ optional (libpthread != null) libpthread)
+    ++ optionals javaAwtGtk [ gmp mpfr ])
   );
 
   EXTRA_TARGET_FLAGS = optionals
@@ -413,10 +372,7 @@ stdenv.mkDerivation ({
       ] else [
         "-Wl,-rpath,${libcCross.out}/lib"
         "-Wl,-rpath-link,${libcCross.out}/lib"
-    ]) ++ optionals (libpthreadCross != null) [
-      "-L${libpthreadCross}/lib"
-      "-Wl,${libpthreadCross.TARGET_LDFLAGS}"
-    ]);
+    ]));
 
   passthru = {
     inherit langC langCC langObjC langObjCpp langFortran langGo version;
diff --git a/pkgs/development/compilers/gcc/4.9/default.nix b/pkgs/development/compilers/gcc/4.9/default.nix
index 1df87cc3d42..9b4444b905d 100644
--- a/pkgs/development/compilers/gcc/4.9/default.nix
+++ b/pkgs/development/compilers/gcc/4.9/default.nix
@@ -24,7 +24,6 @@
 , name ? "gcc"
 , libcCross ? null
 , crossStageStatic ? false
-, libpthread ? null, libpthreadCross ? null  # required for GNU/Hurd
 , # Strip kills static libs of other archs (hence no cross)
   stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
 , gnused ? null
@@ -190,39 +189,7 @@ stdenv.mkDerivation ({
   libc_dev = stdenv.cc.libc_dev;
 
   postPatch =
-    if targetPlatform.isHurd
-    then
-      # On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
-      # in glibc, so add the right `-I' flags to the default spec string.
-      assert libcCross != null -> libpthreadCross != null;
-      let
-        libc = if libcCross != null then libcCross else stdenv.glibc;
-        gnu_h = "gcc/config/gnu.h";
-        extraCPPDeps =
-             libc.propagatedBuildInputs
-          ++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
-          ++ stdenv.lib.optional (libpthread != null) libpthread;
-        extraCPPSpec =
-          concatStrings (intersperse " "
-                          (map (x: "-I${x.dev or x}/include") extraCPPDeps));
-        extraLibSpec =
-          if libpthreadCross != null
-          then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
-          else "-L${libpthread}/lib";
-      in
-        '' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
-           sed -i "${gnu_h}" \
-               -es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
-
-           echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
-           sed -i "${gnu_h}" \
-               -es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
-
-           echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
-           sed -i "${gnu_h}" \
-               -es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
-        ''
-    else if targetPlatform != hostPlatform || stdenv.cc.libc != null then
+    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
       # On NixOS, use the right path to the dynamic linker instead of
       # `/lib/ld*.so'.
       let
@@ -401,22 +368,13 @@ stdenv.mkDerivation ({
     ++ optional langJava boehmgc
     ++ optionals javaAwtGtk xlibs
     ++ optionals javaAwtGtk [ gmp mpfr ]
-    ++ optional (libpthread != null) libpthread
-    ++ optional (libpthreadCross != null) libpthreadCross
-
-    # On GNU/Hurd glibc refers to Mach & Hurd
-    # headers.
-    ++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
-                 libcCross.propagatedBuildInputs
   ));
 
   LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
     ++ optional (zlib != null) zlib
     ++ optional langJava boehmgc
     ++ optionals javaAwtGtk xlibs
-    ++ optionals javaAwtGtk [ gmp mpfr ]
-    ++ optional (libpthread != null) libpthread)
-  );
+    ++ optionals javaAwtGtk [ gmp mpfr ]));
 
   EXTRA_TARGET_FLAGS = optionals
     (targetPlatform != hostPlatform && libcCross != null)
@@ -435,10 +393,7 @@ stdenv.mkDerivation ({
       ] else [
         "-Wl,-rpath,${libcCross.out}/lib"
         "-Wl,-rpath-link,${libcCross.out}/lib"
-    ]) ++ optionals (libpthreadCross != null) [
-      "-L${libpthreadCross}/lib"
-      "-Wl,${libpthreadCross.TARGET_LDFLAGS}"
-    ]);
+    ]));
 
   passthru =
     { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };
diff --git a/pkgs/development/compilers/gcc/5/default.nix b/pkgs/development/compilers/gcc/5/default.nix
index 1215c971f23..3fdec1ec310 100644
--- a/pkgs/development/compilers/gcc/5/default.nix
+++ b/pkgs/development/compilers/gcc/5/default.nix
@@ -24,7 +24,6 @@
 , name ? "gcc"
 , libcCross ? null
 , crossStageStatic ? false
-, libpthread ? null, libpthreadCross ? null  # required for GNU/Hurd
 , # Strip kills static libs of other archs (hence no cross)
   stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
 , gnused ? null
@@ -188,39 +187,7 @@ stdenv.mkDerivation ({
   '';
 
   postPatch =
-    if targetPlatform.isHurd
-    then
-      # On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
-      # in glibc, so add the right `-I' flags to the default spec string.
-      assert libcCross != null -> libpthreadCross != null;
-      let
-        libc = if libcCross != null then libcCross else stdenv.glibc;
-        gnu_h = "gcc/config/gnu.h";
-        extraCPPDeps =
-             libc.propagatedBuildInputs
-          ++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
-          ++ stdenv.lib.optional (libpthread != null) libpthread;
-        extraCPPSpec =
-          concatStrings (intersperse " "
-                          (map (x: "-I${x.dev or x}/include") extraCPPDeps));
-        extraLibSpec =
-          if libpthreadCross != null
-          then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
-          else "-L${libpthread}/lib";
-      in
-        '' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
-           sed -i "${gnu_h}" \
-               -es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
-
-           echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
-           sed -i "${gnu_h}" \
-               -es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
-
-           echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
-           sed -i "${gnu_h}" \
-               -es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
-        ''
-    else if targetPlatform != hostPlatform || stdenv.cc.libc != null then
+    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
       # On NixOS, use the right path to the dynamic linker instead of
       # `/lib/ld*.so'.
       let
@@ -302,7 +269,7 @@ stdenv.mkDerivation ({
     ] ++
     optional (libelf != null) "--with-libelf=${libelf}" ++
     optional (!(crossMingw && crossStageStatic))
-      "--with-native-system-header-dir=${getDev stdenv.cc.libc}/include" ++ 
+      "--with-native-system-header-dir=${getDev stdenv.cc.libc}/include" ++
 
     # Basic configuration
     [
@@ -400,13 +367,6 @@ stdenv.mkDerivation ({
     ++ optional langJava boehmgc
     ++ optionals javaAwtGtk xlibs
     ++ optionals javaAwtGtk [ gmp mpfr ]
-    ++ optional (libpthread != null) libpthread
-    ++ optional (libpthreadCross != null) libpthreadCross
-
-    # On GNU/Hurd glibc refers to Mach & Hurd
-    # headers.
-    ++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
-                 libcCross.propagatedBuildInputs
   ));
 
   LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
@@ -414,8 +374,7 @@ stdenv.mkDerivation ({
     ++ optional langJava boehmgc
     ++ optionals javaAwtGtk xlibs
     ++ optionals javaAwtGtk [ gmp mpfr ]
-    ++ optional (libpthread != null) libpthread)
-  );
+  ));
 
   EXTRA_TARGET_FLAGS = optionals
     (targetPlatform != hostPlatform && libcCross != null)
@@ -434,10 +393,7 @@ stdenv.mkDerivation ({
       ] else [
         "-Wl,-rpath,${libcCross.out}/lib"
         "-Wl,-rpath-link,${libcCross.out}/lib"
-    ]) ++ optionals (libpthreadCross != null) [
-      "-L${libpthreadCross}/lib"
-      "-Wl,${libpthreadCross.TARGET_LDFLAGS}"
-    ]);
+    ]));
 
   passthru =
     { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };
diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix
index 0fb39075895..099e26375f4 100644
--- a/pkgs/development/compilers/gcc/6/default.nix
+++ b/pkgs/development/compilers/gcc/6/default.nix
@@ -24,7 +24,6 @@
 , name ? "gcc"
 , libcCross ? null
 , crossStageStatic ? false
-, libpthread ? null, libpthreadCross ? null  # required for GNU/Hurd
 , # Strip kills static libs of other archs (hence no cross)
   stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
 , gnused ? null
@@ -192,39 +191,7 @@ stdenv.mkDerivation ({
   '';
 
   postPatch =
-    if targetPlatform.isHurd
-    then
-      # On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
-      # in glibc, so add the right `-I' flags to the default spec string.
-      assert libcCross != null -> libpthreadCross != null;
-      let
-        libc = if libcCross != null then libcCross else stdenv.glibc;
-        gnu_h = "gcc/config/gnu.h";
-        extraCPPDeps =
-             libc.propagatedBuildInputs
-          ++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
-          ++ stdenv.lib.optional (libpthread != null) libpthread;
-        extraCPPSpec =
-          concatStrings (intersperse " "
-                          (map (x: "-I${x.dev or x}/include") extraCPPDeps));
-        extraLibSpec =
-          if libpthreadCross != null
-          then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
-          else "-L${libpthread}/lib";
-      in
-        '' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
-           sed -i "${gnu_h}" \
-               -es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
-
-           echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
-           sed -i "${gnu_h}" \
-               -es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
-
-           echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
-           sed -i "${gnu_h}" \
-               -es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
-        ''
-    else if targetPlatform != hostPlatform || stdenv.cc.libc != null then
+    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
       # On NixOS, use the right path to the dynamic linker instead of
       # `/lib/ld*.so'.
       let
@@ -408,22 +375,13 @@ stdenv.mkDerivation ({
     ++ optional langJava boehmgc
     ++ optionals javaAwtGtk xlibs
     ++ optionals javaAwtGtk [ gmp mpfr ]
-    ++ optional (libpthread != null) libpthread
-    ++ optional (libpthreadCross != null) libpthreadCross
-
-    # On GNU/Hurd glibc refers to Mach & Hurd
-    # headers.
-    ++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
-                 libcCross.propagatedBuildInputs
   ));
 
   LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
     ++ optional (zlib != null) zlib
     ++ optional langJava boehmgc
     ++ optionals javaAwtGtk xlibs
-    ++ optionals javaAwtGtk [ gmp mpfr ]
-    ++ optional (libpthread != null) libpthread)
-  );
+    ++ optionals javaAwtGtk [ gmp mpfr ]));
 
   EXTRA_TARGET_FLAGS = optionals
     (targetPlatform != hostPlatform && libcCross != null)
@@ -442,10 +400,7 @@ stdenv.mkDerivation ({
       ] else [
         "-Wl,-rpath,${libcCross.out}/lib"
         "-Wl,-rpath-link,${libcCross.out}/lib"
-    ]) ++ optionals (libpthreadCross != null) [
-      "-L${libpthreadCross}/lib"
-      "-Wl,${libpthreadCross.TARGET_LDFLAGS}"
-    ]);
+    ]));
 
   passthru =
     { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };
diff --git a/pkgs/development/compilers/gcc/7/default.nix b/pkgs/development/compilers/gcc/7/default.nix
index c5541da0790..60e429cc4da 100644
--- a/pkgs/development/compilers/gcc/7/default.nix
+++ b/pkgs/development/compilers/gcc/7/default.nix
@@ -17,7 +17,6 @@
 , name ? "gcc"
 , libcCross ? null
 , crossStageStatic ? false
-, libpthread ? null, libpthreadCross ? null  # required for GNU/Hurd
 , # Strip kills static libs of other archs (hence no cross)
   stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
 , gnused ? null
@@ -165,39 +164,7 @@ stdenv.mkDerivation ({
       patchShebangs $configureScript
     done
   '' + (
-    if targetPlatform.isHurd
-    then
-      # On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
-      # in glibc, so add the right `-I' flags to the default spec string.
-      assert libcCross != null -> libpthreadCross != null;
-      let
-        libc = if libcCross != null then libcCross else stdenv.glibc;
-        gnu_h = "gcc/config/gnu.h";
-        extraCPPDeps =
-             libc.propagatedBuildInputs
-          ++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
-          ++ stdenv.lib.optional (libpthread != null) libpthread;
-        extraCPPSpec =
-          concatStrings (intersperse " "
-                          (map (x: "-I${x.dev or x}/include") extraCPPDeps));
-        extraLibSpec =
-          if libpthreadCross != null
-          then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
-          else "-L${libpthread}/lib";
-      in
-        '' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
-           sed -i "${gnu_h}" \
-               -es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
-
-           echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
-           sed -i "${gnu_h}" \
-               -es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
-
-           echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
-           sed -i "${gnu_h}" \
-               -es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
-        ''
-    else if targetPlatform != hostPlatform || stdenv.cc.libc != null then
+    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
       # On NixOS, use the right path to the dynamic linker instead of
       # `/lib/ld*.so'.
       let
@@ -357,19 +324,9 @@ stdenv.mkDerivation ({
 
   CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
     ++ optional (zlib != null) zlib
-    ++ optional (libpthread != null) libpthread
-    ++ optional (libpthreadCross != null) libpthreadCross
-
-    # On GNU/Hurd glibc refers to Mach & Hurd
-    # headers.
-    ++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
-                 libcCross.propagatedBuildInputs
   ));
 
-  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
-    ++ optional (zlib != null) zlib
-    ++ optional (libpthread != null) libpthread)
-  );
+  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
 
   EXTRA_TARGET_FLAGS = optionals
     (targetPlatform != hostPlatform && libcCross != null)
@@ -388,10 +345,7 @@ stdenv.mkDerivation ({
       ] else [
         "-Wl,-rpath,${libcCross.out}/lib"
         "-Wl,-rpath-link,${libcCross.out}/lib"
-    ]) ++ optionals (libpthreadCross != null) [
-      "-L${libpthreadCross}/lib"
-      "-Wl,${libpthreadCross.TARGET_LDFLAGS}"
-    ]);
+    ]));
 
   passthru =
     { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };
diff --git a/pkgs/development/compilers/gcc/8/default.nix b/pkgs/development/compilers/gcc/8/default.nix
index 5d7be163783..a05c1c71812 100644
--- a/pkgs/development/compilers/gcc/8/default.nix
+++ b/pkgs/development/compilers/gcc/8/default.nix
@@ -17,7 +17,6 @@
 , name ? "gcc"
 , libcCross ? null
 , crossStageStatic ? false
-, libpthread ? null, libpthreadCross ? null  # required for GNU/Hurd
 , # Strip kills static libs of other archs (hence no cross)
   stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
 , gnused ? null
@@ -160,39 +159,7 @@ stdenv.mkDerivation ({
       patchShebangs $configureScript
     done
   '' + (
-    if targetPlatform.isHurd
-    then
-      # On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
-      # in glibc, so add the right `-I' flags to the default spec string.
-      assert libcCross != null -> libpthreadCross != null;
-      let
-        libc = if libcCross != null then libcCross else stdenv.glibc;
-        gnu_h = "gcc/config/gnu.h";
-        extraCPPDeps =
-             libc.propagatedBuildInputs
-          ++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
-          ++ stdenv.lib.optional (libpthread != null) libpthread;
-        extraCPPSpec =
-          concatStrings (intersperse " "
-                          (map (x: "-I${x.dev or x}/include") extraCPPDeps));
-        extraLibSpec =
-          if libpthreadCross != null
-          then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
-          else "-L${libpthread}/lib";
-      in
-        '' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
-           sed -i "${gnu_h}" \
-               -es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
-
-           echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
-           sed -i "${gnu_h}" \
-               -es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
-
-           echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
-           sed -i "${gnu_h}" \
-               -es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
-        ''
-    else if targetPlatform != hostPlatform || stdenv.cc.libc != null then
+    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
       # On NixOS, use the right path to the dynamic linker instead of
       # `/lib/ld*.so'.
       let
@@ -346,19 +313,9 @@ stdenv.mkDerivation ({
 
   CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
     ++ optional (zlib != null) zlib
-    ++ optional (libpthread != null) libpthread
-    ++ optional (libpthreadCross != null) libpthreadCross
-
-    # On GNU/Hurd glibc refers to Mach & Hurd
-    # headers.
-    ++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
-                 libcCross.propagatedBuildInputs
   ));
 
-  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
-    ++ optional (zlib != null) zlib
-    ++ optional (libpthread != null) libpthread)
-  );
+  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
 
   EXTRA_TARGET_FLAGS = optionals
     (targetPlatform != hostPlatform && libcCross != null)
@@ -377,10 +334,7 @@ stdenv.mkDerivation ({
       ] else [
         "-Wl,-rpath,${libcCross.out}/lib"
         "-Wl,-rpath-link,${libcCross.out}/lib"
-    ]) ++ optionals (libpthreadCross != null) [
-      "-L${libpthreadCross}/lib"
-      "-Wl,${libpthreadCross.TARGET_LDFLAGS}"
-    ]);
+    ]));
 
   passthru =
     { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };
diff --git a/pkgs/development/compilers/gcc/snapshot/default.nix b/pkgs/development/compilers/gcc/snapshot/default.nix
index 124fdbcdf9d..275b380e90f 100644
--- a/pkgs/development/compilers/gcc/snapshot/default.nix
+++ b/pkgs/development/compilers/gcc/snapshot/default.nix
@@ -17,7 +17,6 @@
 , name ? "gcc"
 , libcCross ? null
 , crossStageStatic ? false
-, libpthread ? null, libpthreadCross ? null  # required for GNU/Hurd
 , # Strip kills static libs of other archs (hence no cross)
   stripped ? hostPlatform == buildPlatform && targetPlatform == hostPlatform
 , gnused ? null
@@ -134,39 +133,7 @@ stdenv.mkDerivation ({
   hardeningDisable = [ "format" ];
 
   postPatch =
-    if targetPlatform.isHurd
-    then
-      # On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
-      # in glibc, so add the right `-I' flags to the default spec string.
-      assert libcCross != null -> libpthreadCross != null;
-      let
-        libc = if libcCross != null then libcCross else stdenv.glibc;
-        gnu_h = "gcc/config/gnu.h";
-        extraCPPDeps =
-             libc.propagatedBuildInputs
-          ++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
-          ++ stdenv.lib.optional (libpthread != null) libpthread;
-        extraCPPSpec =
-          concatStrings (intersperse " "
-                          (map (x: "-I${x.dev or x}/include") extraCPPDeps));
-        extraLibSpec =
-          if libpthreadCross != null
-          then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
-          else "-L${libpthread}/lib";
-      in
-        '' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
-           sed -i "${gnu_h}" \
-               -es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
-
-           echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
-           sed -i "${gnu_h}" \
-               -es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
-
-           echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc.dev}/include'..."
-           sed -i "${gnu_h}" \
-               -es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc.dev}/include"|g'
-        ''
-    else if targetPlatform != hostPlatform || stdenv.cc.libc != null then
+    if targetPlatform != hostPlatform || stdenv.cc.libc != null then
       # On NixOS, use the right path to the dynamic linker instead of
       # `/lib/ld*.so'.
       let
@@ -314,19 +281,9 @@ stdenv.mkDerivation ({
 
   CPATH = optionals (targetPlatform == hostPlatform) (makeSearchPathOutput "dev" "include" ([]
     ++ optional (zlib != null) zlib
-    ++ optional (libpthread != null) libpthread
-    ++ optional (libpthreadCross != null) libpthreadCross
-
-    # On GNU/Hurd glibc refers to Mach & Hurd
-    # headers.
-    ++ optionals (libcCross != null && libcCross ? propagatedBuildInputs)
-                 libcCross.propagatedBuildInputs
   ));
 
-  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath ([]
-    ++ optional (zlib != null) zlib
-    ++ optional (libpthread != null) libpthread)
-  );
+  LIBRARY_PATH = optionals (targetPlatform == hostPlatform) (makeLibraryPath (optional (zlib != null) zlib));
 
   EXTRA_TARGET_FLAGS = optionals
     (targetPlatform != hostPlatform && libcCross != null)
@@ -345,10 +302,7 @@ stdenv.mkDerivation ({
       ] else [
         "-Wl,-rpath,${libcCross.out}/lib"
         "-Wl,-rpath-link,${libcCross.out}/lib"
-    ]) ++ optionals (libpthreadCross != null) [
-      "-L${libpthreadCross}/lib"
-      "-Wl,${libpthreadCross.TARGET_LDFLAGS}"
-    ]);
+    ]));
 
   passthru =
     { inherit langC langCC langObjC langObjCpp langFortran langGo version; isGNU = true; };
diff --git a/pkgs/development/tools/misc/gdb/default.nix b/pkgs/development/tools/misc/gdb/default.nix
index ae59f85a211..1c2efbeea76 100644
--- a/pkgs/development/tools/misc/gdb/default.nix
+++ b/pkgs/development/tools/misc/gdb/default.nix
@@ -11,9 +11,6 @@
 , pythonSupport ? hostPlatform == buildPlatform && !hostPlatform.isCygwin, python ? null
 , guile ? null
 
-# Additional dependencies for GNU/Hurd.
-, mig ? null, hurd ? null
-
 }:
 
 let
@@ -21,7 +18,6 @@ let
   version = "8.1.1";
 in
 
-assert targetPlatform.isHurd -> mig != null && hurd != null;
 assert pythonSupport -> python != null;
 
 stdenv.mkDerivation rec {
@@ -38,13 +34,10 @@ stdenv.mkDerivation rec {
   patches = [ ./debug-info-from-env.patch ]
     ++ stdenv.lib.optional stdenv.isDarwin ./darwin-target-match.patch;
 
-  nativeBuildInputs = [ pkgconfig texinfo perl setupDebugInfoDirs ]
-    # TODO(@Ericson2314) not sure if should be host or target
-    ++ stdenv.lib.optional targetPlatform.isHurd mig;
+  nativeBuildInputs = [ pkgconfig texinfo perl setupDebugInfoDirs ];
 
   buildInputs = [ ncurses readline gmp mpfr expat zlib guile ]
     ++ stdenv.lib.optional pythonSupport python
-    ++ stdenv.lib.optional targetPlatform.isHurd hurd
     ++ stdenv.lib.optional doCheck dejagnu;
 
   propagatedNativeBuildInputs = [ setupDebugInfoDirs ];
diff --git a/pkgs/os-specific/gnu/default.nix b/pkgs/os-specific/gnu/default.nix
deleted file mode 100644
index d5760003525..00000000000
--- a/pkgs/os-specific/gnu/default.nix
+++ /dev/null
@@ -1,113 +0,0 @@
-# Packages that make up the GNU/Hurd operating system (aka. GNU).
-
-args@{ fetchgit, stdenv, autoconf, automake, automake111x, libtool
-, texinfo, glibcCross, hurdPartedCross, libuuid, samba
-, gccCrossStageStatic, gcc
-, pkgsi686Linux, newScope, config
-, targetPlatform, buildPlatform
-, overrides ? {}
-, buildPackages, pkgs
-}:
-
-with args;
-
-let
-  callPackage = newScope gnu;
-
-  forcedNativePackages =
-    if stdenv.hostPlatform == stdenv.buildPlatform
-    then pkgs
-    else buildPackages;
-
-  gnu = {
-    hurdCross = forcedNativePackages.callPackage ./hurd {
-      inherit fetchgit stdenv autoconf libtool texinfo
-        glibcCross hurdPartedCross;
-      inherit (gnu) machHeaders mig;
-      libuuid = libuuid.crossDrv;
-      automake = automake111x;
-      headersOnly = false;
-      cross = assert targetPlatform != buildPlatform; targetPlatform;
-      gccCross = gcc;
-    };
-
-    hurdCrossIntermediate = forcedNativePackages.callPackage ./hurd {
-      inherit fetchgit stdenv autoconf libtool texinfo glibcCross;
-      inherit (gnu) machHeaders mig;
-      hurdPartedCross = null;
-      libuuid = null;
-      automake = automake111x;
-      headersOnly = false;
-      cross = assert targetPlatform != buildPlatform; targetPlatform;
-
-      # The "final" GCC needs glibc and the Hurd libraries (libpthread in
-      # particular) so we first need an intermediate Hurd built with the
-      # intermediate GCC.
-      gccCross = gccCrossStageStatic;
-
-      # This intermediate Hurd is only needed to build libpthread, which needs
-      # libihash, and to build Parted, which needs libstore and
-      # libshouldbeinlibc.
-      buildTarget = "libihash libstore libshouldbeinlibc";
-      installTarget = "libihash-install libstore-install libshouldbeinlibc-install";
-    };
-
-    hurdHeaders = callPackage ./hurd {
-      automake = automake111x;
-      headersOnly = true;
-      gccCross = null;
-      glibcCross = null;
-      libuuid = null;
-      hurdPartedCross = null;
-    };
-
-    libpthreadHeaders = callPackage ./libpthread {
-      headersOnly = true;
-      hurd = null;
-    };
-
-    libpthreadCross = forcedNativePackages.callPackage ./libpthread {
-      inherit fetchgit stdenv autoconf automake libtool glibcCross;
-      inherit (gnu) machHeaders hurdHeaders;
-      hurd = gnu.hurdCrossIntermediate;
-      gccCross = gccCrossStageStatic;
-      cross = assert targetPlatform != buildPlatform; targetPlatform;
-    };
-
-    # In theory GNU Mach doesn't have to be cross-compiled.  However, since it
-    # has to be built for i586 (it doesn't work on x86_64), one needs a cross
-    # compiler for that host.
-    mach = callPackage ./mach {
-      automake = automake111x;
-    };
-
-    machHeaders = callPackage ./mach {
-      automake = automake111x;
-      headersOnly = true;
-      mig = null;
-    };
-
-    mig = callPackage ./mig {
-      # Build natively, but force use of a 32-bit environment because we're
-      # targeting `i586-pc-gnu'.
-      stdenv = pkgsi686Linux.stdenv;
-    };
-
-    # XXX: Use this one for its `.crossDrv'.  Using the one above from
-    # `x86_64-linux' leads to building a different cross-toolchain because of
-    # the `forceSystem'.
-    mig_raw = callPackage ./mig {};
-
-    smbfs = callPackage ./smbfs {
-      hurd = gnu.hurdCross;
-    };
-
-    unionfs = callPackage ./unionfs {
-      hurd = gnu.hurdCross;
-    };
-  }
-
-  # Allow callers to override elements of this attribute set.
-  // overrides;
-
-in gnu # we trust!
diff --git a/pkgs/os-specific/gnu/hurd/default.nix b/pkgs/os-specific/gnu/hurd/default.nix
deleted file mode 100644
index a0c4be0ff45..00000000000
--- a/pkgs/os-specific/gnu/hurd/default.nix
+++ /dev/null
@@ -1,91 +0,0 @@
-{ fetchgit, stdenv, autoconf, automake, libtool, texinfo
-, machHeaders, mig, headersOnly ? true
-, cross ? null, gccCross ? null, glibcCross ? null
-, hurdPartedCross ? null, libuuid ? null
-, buildTarget ? "all", installTarget ? "install" }:
-
-assert (cross != null) -> (gccCross != null);
-assert (hurdPartedCross != null) -> (libuuid != null);
-
-let
-  # Unfortunately we can't use `master@{DATE}', see
-  # <http://www.bramschoenmakers.nl/en/node/645>.
-  date   = "20111115";
-  rev    = "969fbb646ffd89a482302e303eaded79781c3331";
-  suffix = if headersOnly
-           then "-headers"
-           else (if buildTarget != "all"
-                 then "-minimal"
-                 else "");
-in
-stdenv.mkDerivation ({
-  name = "hurd${suffix}-${date}";
-
-  src = fetchgit {
-    url = "git://git.sv.gnu.org/hurd/hurd.git";
-    sha256 = "b7f57ec2c6dcaf35ec03fb7979eb5506180ce4c6e2edf60a587f12ac5b11f004";
-    inherit rev;
-  };
-
-  buildInputs = [ autoconf automake libtool texinfo mig ]
-    ++ stdenv.lib.optional (hurdPartedCross != null) hurdPartedCross
-    ++ stdenv.lib.optional (libuuid != null) libuuid
-    ++ stdenv.lib.optional (gccCross != null) gccCross
-    ++ stdenv.lib.optional (glibcCross != null) glibcCross;
-
-  propagatedBuildInputs = [ machHeaders ];
-
-  configureFlags = stdenv.lib.optionals headersOnly [ "--build=i586-pc-gnu" ]
-    ++ (if hurdPartedCross != null
-        then [ "--with-parted" ]
-        else [ "--without-parted" ]);
-
-  # Use `preConfigure' only for `autoreconf', so that users know they can
-  # simply clear it when the autoconf phase is unneeded.
-  preConfigure = "autoreconf -vfi";
-
-  postConfigure =
-    '' echo "removing \`-o root' from makefiles..."
-       for mf in {utils,daemons}/Makefile
-       do
-         sed -i "$mf" -e's/-o root//g'
-       done
-    '';
-
-  # Not needed after https://github.com/NixOS/nixpkgs/pull/43833
-  dontPatchShebangs = stdenv.hostPlatform != stdenv.buildPlatform;
-
-  meta = {
-    description = "The GNU Hurd, GNU project's replacement for the Unix kernel";
-
-    longDescription =
-      '' The GNU Hurd is the GNU project's replacement for the Unix kernel.
-         It is a collection of servers that run on the Mach microkernel to
-         implement file systems, network protocols, file access control, and
-         other features that are implemented by the Unix kernel or similar
-         kernels (such as Linux).
-      '';
-
-    license = stdenv.lib.licenses.gpl2Plus;
-
-    homepage = http://www.gnu.org/software/hurd/;
-
-    maintainers = [ stdenv.lib.maintainers.ludo ];
-  };
-}
-
-//
-
-stdenv.lib.optionalAttrs (!headersOnly && buildTarget != null) {
-  # Use the default `buildPhase' and `installPhase' so that the usual hooks
-  # can still be used.
-  buildFlags = buildTarget;
-  installTargets = assert installTarget != null; installTarget;
-}
-
-//
-
-stdenv.lib.optionalAttrs headersOnly {
-  dontBuild = true;
-  installPhase = "make install-headers";
-})
diff --git a/pkgs/os-specific/gnu/libpthread/default.nix b/pkgs/os-specific/gnu/libpthread/default.nix
deleted file mode 100644
index a2e1081a1e8..00000000000
--- a/pkgs/os-specific/gnu/libpthread/default.nix
+++ /dev/null
@@ -1,81 +0,0 @@
-{ fetchgit, stdenv, autoconf, automake, libtool
-, machHeaders, hurdHeaders, hurd, headersOnly ? false
-, cross ? null, gccCross ? null, glibcCross ? null }:
-
-assert (cross != null) -> (gccCross != null) && (glibcCross != null);
-assert (!headersOnly) -> (hurd != null);
-
-let
-  date = "20111020";
-
-  # Use the `tschwinge/Peter_Herbolzheimer' branch as prescribed in
-  # <http://www.gnu.org/software/hurd/hurd/building/cross-compiling.html>.
-  rev = "a7b82c3302bf9c47176648eb802a61ae2d9a16f5";
-in
-stdenv.mkDerivation ({
-  name = "libpthread-hurd-${if headersOnly then "headers-" else ""}${date}";
-
-  src = fetchgit {
-    url = "git://git.sv.gnu.org/hurd/libpthread.git";
-    sha256 = "e8300762914d927c0da4168341a5982a1057613e1af363ee68942087b2570b3d";
-    inherit rev;
-  };
-
-  nativeBuildInputs = [ autoconf automake libtool ];
-  buildInputs = [ machHeaders hurdHeaders ]
-   ++ stdenv.lib.optional (!headersOnly) hurd
-   ++ stdenv.lib.optional (gccCross != null) gccCross;
-
-  preConfigure = "autoreconf -vfi";
-
-  meta = {
-    description = "GNU Hurd's libpthread";
-
-    license = stdenv.lib.licenses.lgpl2Plus;
-
-    maintainers = [ stdenv.lib.maintainers.ludo ];
-  };
-}
-
-//
-
-(if headersOnly
- then {
-   configureFlags =
-     [ "--build=i586-pc-gnu"
-       "ac_cv_lib_ihash_hurd_ihash_create=yes"
-     ];
-
-   dontBuild = true;
-   installPhase = "make install-data-local-headers";
- }
- else { })
-
-//
-
-(if cross != null
- then {
-   # Tell gcc where to find `crt1.o' et al.  This is specified in two
-   # different ways: one for gcc as run from `configure', and one for linking
-   # libpthread.so (by default `libtool --mode=link' swallows `-B', hence
-   # this workaround; see
-   # <http://lists.gnu.org/archive/html/bug-libtool/2010-05/msg00012.html>.)
-   LDFLAGS = "-B${glibcCross}/lib";
-   makeFlags = [ "LDFLAGS=-Wc,-B${glibcCross}/lib" ];
-
-   # Help the linker find glibc.
-   CPATH = "${glibcCross}/include";
-   LIBRARY_PATH = "${glibcCross}/lib";
-
-   passthru = {
-     # Extra target LDFLAGS to allow the cross-linker to find the
-     # dependencies of the cross libpthread.so, namely libihash.so.
-     # Note: these are raw `ld' flags, so `-Wl,' must be prepended when using
-     # `gcc'.
-     #
-     # This is actually only useful while building the final cross-gcc, since
-     # afterwards gcc-cross-wrapper should add the relevant flags.
-     TARGET_LDFLAGS = "-rpath-link=${hurd}/lib";
-   };
- }
- else { }))
diff --git a/pkgs/os-specific/gnu/mach/default.nix b/pkgs/os-specific/gnu/mach/default.nix
deleted file mode 100644
index 852b400ccb1..00000000000
--- a/pkgs/os-specific/gnu/mach/default.nix
+++ /dev/null
@@ -1,57 +0,0 @@
-{ fetchgit, stdenv, mig ? null, autoconf, automake, texinfo
-, headersOnly ? false }:
-
-assert (!headersOnly) -> (mig != null);
-
-let
-  date = "20120303";
-  rev = "2a603e88f86bee88e013c2451eacf076fbcaed81";
-in
-stdenv.mkDerivation ({
-  name = "gnumach${if headersOnly then "-headers" else ""}-${date}";
-
-  src = fetchgit {
-    url = "git://git.sv.gnu.org/hurd/gnumach.git";
-    sha256 = "1q8zk8xzbiwpnvvmfgkylj4gwkvkn5n2ydy9j054qv5plnaczj1c";
-    inherit rev;
-  };
-
-  configureFlags =
-       stdenv.lib.optional headersOnly "--build=i586-pc-gnu"  # cheat
-
-    # Always enable dependency tracking.  See
-    # <http://lists.gnu.org/archive/html/bug-hurd/2010-05/msg00137.html>.
-    ++ [ "--enable-dependency-tracking" ];
-
-  nativeBuildInputs = [ autoconf automake texinfo ]
-    ++ stdenv.lib.optional (mig != null) mig;
-
-  preConfigure = "autoreconf -vfi";
-
-  meta = {
-    description = "GNU Mach, the microkernel used by the GNU Hurd";
-
-    longDescription =
-      '' GNU Mach is the microkernel that the GNU Hurd system is based on.
-
-         It is maintained by the Hurd developers for the GNU project and
-         remains compatible with Mach 3.0.
-
-         The majority of GNU Mach's device drivers are from Linux 2.0.  They
-         were added using glue code, i.e., a Linux emulation layer in Mach.
-      '';
-
-    license = stdenv.lib.licenses.gpl2Plus;
-
-    homepage = http://www.gnu.org/software/hurd/microkernel/mach/gnumach.html;
-
-    maintainers = [ stdenv.lib.maintainers.ludo ];
-    platforms = [ "i586-gnu" ];
-  };
-}
-
-//
-
-(if headersOnly
- then { dontBuild = true; installPhase = "make install-data"; }
- else {}))
diff --git a/pkgs/os-specific/gnu/mig/default.nix b/pkgs/os-specific/gnu/mig/default.nix
deleted file mode 100644
index d138011d595..00000000000
--- a/pkgs/os-specific/gnu/mig/default.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ fetchgit, stdenv, autoconf, automake, flex, bison, machHeaders, bash }:
-
-let
-  date = "20100512";
-  rev = "4fee6a5652f609cb68cdbd9049d4da7a194f15f8";
-in
-stdenv.mkDerivation {
-  name = "mig-${date}";
-
-  src = fetchgit {
-    url = "git://git.sv.gnu.org/hurd/mig.git";
-    sha256 = "d6958d9b60925d4600aac133c9505bc873a16b203c69260bd0fb228922ee9273";
-    inherit rev;
-  };
-
-  patches = [ ./noyywrap.patch ];
-
-  nativeBuildInputs = [ autoconf automake flex bison machHeaders ];
-
-  preConfigure = "autoreconf -vfi";
-
-  doCheck = true;
-
-  # Fix the shebang to point to the cross-built shell. Won't be needed
-  # after #43833.
-  postInstall = ''
-    sed -i "$out/bin/mig" -e 's|^#!/.*|#!${bash}/bin/sh|g'
-  '';
-
-  meta = {
-    description = "GNU MIG, the Mach interface generator";
-
-    longDescription =
-      '' GNU MIG is the GNU distribution of the Mach 3.0 interface generator
-         MIG, as maintained by the GNU Hurd developers for the GNU project.
-
-         You need this tool to compile the GNU Mach and GNU Hurd
-         distributions, and to compile the GNU C library for the Hurd.  Also,
-         you will need it for other software in the GNU system that uses
-         Mach-based inter-process communication.
-      '';
-
-    license = stdenv.lib.licenses.gpl2Plus;
-
-    homepage = http://www.gnu.org/software/hurd/microkernel/mach/mig/gnu_mig.html;
-
-    # platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;  # really GNU/Hurd
-    maintainers = [ stdenv.lib.maintainers.ludo ];
-  };
-}
diff --git a/pkgs/os-specific/gnu/mig/noyywrap.patch b/pkgs/os-specific/gnu/mig/noyywrap.patch
deleted file mode 100644
index 40ca6171f64..00000000000
--- a/pkgs/os-specific/gnu/mig/noyywrap.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Fix undefined reference to `yywrap'.
-
-diff --git a/lexxer.l b/lexxer.l
-index 9725d0b..15264bc 100644
---- a/lexxer.l
-+++ b/lexxer.l
-@@ -1,4 +1,5 @@
- %option nounput
-+%option noyywrap
- 
- %k 10000
- %n 5000
diff --git a/pkgs/os-specific/gnu/smbfs/default.nix b/pkgs/os-specific/gnu/smbfs/default.nix
deleted file mode 100644
index 6f3d719d816..00000000000
--- a/pkgs/os-specific/gnu/smbfs/default.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ fetchcvs, stdenv, hurd, machHeaders, samba }:
-
-let
-  date = "2012-03-15";
-  samba_patched = stdenv.lib.overrideDerivation samba (attrs: {
-    patches = attrs.patches ++ [ ./samba-without-byte-range-locks.patch ];
-  });
-in
-stdenv.mkDerivation rec {
-  name = "smbfs-${date}";
-
-  src = fetchcvs {
-    cvsRoot = ":pserver:anonymous@cvs.savannah.nongnu.org:/sources/hurdextras";
-    module = "smbfs";
-    sha256 = "5941d1a5da4488cbf0efe9aa0b41fe4ff5ba57b84ed24f7ff7c0feda4501d3e3";
-    inherit date;
-  };
-
-  patchPhase =
-    '' sed -i "Makefile" \
-           -e 's|gcc|i586-pc-gnu-gcc|g ;
-               s|^LDFLAGS=\(.*\)$|LDFLAGS=\1 -pthread|g'
-    '';
-
-  buildInputs = [ hurd machHeaders samba_patched ];
-
-  installPhase =
-    '' mkdir -p "$out/hurd"
-       cp -v smbfs "$out/hurd"
-
-       mkdir -p "$out/share/doc/${name}"
-       cp -v README "$out/share/doc/${name}"
-    '';
-
-  meta = {
-    description = "SMB/CIFS file system translator for GNU/Hurd";
-
-    homepage = http://www.nongnu.org/hurdextras/;
-
-    license = stdenv.lib.licenses.gpl3Plus;
-
-    maintainers = [ stdenv.lib.maintainers.ludo ];
-  };
-}
diff --git a/pkgs/os-specific/gnu/smbfs/samba-without-byte-range-locks.patch b/pkgs/os-specific/gnu/smbfs/samba-without-byte-range-locks.patch
deleted file mode 100644
index 893a29c7539..00000000000
--- a/pkgs/os-specific/gnu/smbfs/samba-without-byte-range-locks.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Since GNU/Hurd doesn't support byte-range file locks, shamelessly
-disable them to allow the SMB client library to work (it uses TDB
-to access /etc/samba/private/secrets.tdb, for instance.)
-
---- samba/lib/tdb/common/lock.c	2010-02-08 16:12:57.000000000 +0100
-+++ samba/lib/tdb/common/lock.c	2012-03-01 23:39:02.000000000 +0100
-@@ -48,7 +48,7 @@ int tdb_brlock(struct tdb_context *tdb,
- 	struct flock fl;
- 	int ret;
- 
--	if (tdb->flags & TDB_NOLOCK) {
-+	if (1) {
- 		return 0;
- 	}
diff --git a/pkgs/os-specific/gnu/unionfs/default.nix b/pkgs/os-specific/gnu/unionfs/default.nix
deleted file mode 100644
index 5e2f428130c..00000000000
--- a/pkgs/os-specific/gnu/unionfs/default.nix
+++ /dev/null
@@ -1,43 +0,0 @@
-{ fetchgit, stdenv, hurd, machHeaders, mig }:
-
-let
-  date = "20120313";
-  rev  = "64dfa4e12d93c13b676d1cd7d86f4f4004ebfafa";
-in
-stdenv.mkDerivation rec {
-  name = "unionfs-${date}";
-
-  src = fetchgit {
-    url = "git://git.sv.gnu.org/hurd/unionfs.git";
-    sha256 = "1c3d71112cb25f8f82719a16df936e43abcb1adb77af96c1bb100a8ad0889d65";
-    inherit rev;
-  };
-
-  patchPhase =
-    '' sed -i "Makefile" \
-           -e 's|gcc|i586-pc-gnu-gcc|g ;
-               s|-std=gnu99|-std=gnu99 -fgnu89-inline|g'
-    '';
-
-  makeFlags = [ "CC=i586-pc-gnu-gcc" ];
-  buildInputs = [ hurd machHeaders ];
-  nativeBuildInputs = [ mig ];
-
-  installPhase =
-    '' mkdir -p "$out/hurd"
-       cp -v unionfs "$out/hurd"
-
-       mkdir -p "$out/share/doc/${name}"
-       cp -v [A-Z]* "$out/share/doc/${name}"
-    '';
-
-  meta = {
-    description = "Union file system translator for GNU/Hurd";
-
-    homepage = http://www.gnu.org/software/hurd/hurd/translator/unionfs.html;
-
-    license = stdenv.lib.licenses.gpl2Plus;
-
-    maintainers = [ stdenv.lib.maintainers.ludo ];
-  };
-}
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix
index b3934c88ed2..c661b2e1e4c 100644
--- a/pkgs/stdenv/generic/default.nix
+++ b/pkgs/stdenv/generic/default.nix
@@ -121,7 +121,7 @@ let
 
       # Utility flags to test the type of platform.
       inherit (hostPlatform)
-        isDarwin isLinux isSunOS isHurd isCygwin isFreeBSD isOpenBSD
+        isDarwin isLinux isSunOS isCygwin isFreeBSD isOpenBSD
         isi686 isx86_64 is64bit isAarch32 isAarch64 isMips isBigEndian;
       isArm = builtins.trace "stdenv.isArm is deprecated after 18.03" hostPlatform.isArm;
 
diff --git a/pkgs/tools/filesystems/nixpart/0.4/parted.nix b/pkgs/tools/filesystems/nixpart/0.4/parted.nix
index f356727e64b..f7071e45232 100644
--- a/pkgs/tools/filesystems/nixpart/0.4/parted.nix
+++ b/pkgs/tools/filesystems/nixpart/0.4/parted.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, lvm2, libuuid, gettext, readline
-, utillinux, check, enableStatic ? false, hurd ? null }:
+, utillinux, check, enableStatic ? false }:
 
 stdenv.mkDerivation rec {
   name = "parted-3.1";
@@ -12,8 +12,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ libuuid ]
     ++ stdenv.lib.optional (readline != null) readline
     ++ stdenv.lib.optional (gettext != null) gettext
-    ++ stdenv.lib.optional (lvm2 != null) lvm2
-    ++ stdenv.lib.optional (hurd != null) hurd;
+    ++ stdenv.lib.optional (lvm2 != null) lvm2;
 
   configureFlags =
        (if (readline != null)
diff --git a/pkgs/tools/misc/parted/default.nix b/pkgs/tools/misc/parted/default.nix
index 643a3bafc66..709246269f8 100644
--- a/pkgs/tools/misc/parted/default.nix
+++ b/pkgs/tools/misc/parted/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, fetchpatch, lvm2, libuuid, gettext, readline, perl, python2
-, utillinux, check, enableStatic ? false, hurd ? null }:
+, utillinux, check, enableStatic ? false }:
 
 stdenv.mkDerivation rec {
   name = "parted-3.2";
@@ -30,8 +30,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ libuuid ]
     ++ stdenv.lib.optional (readline != null) readline
     ++ stdenv.lib.optional (gettext != null) gettext
-    ++ stdenv.lib.optional (lvm2 != null) lvm2
-    ++ stdenv.lib.optional (hurd != null) hurd;
+    ++ stdenv.lib.optional (lvm2 != null) lvm2;
 
   configureFlags =
        (if (readline != null)
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index e176844738f..f4d75ff426f 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -4502,7 +4502,7 @@ with pkgs;
 
   patchutils = callPackage ../tools/text/patchutils { };
 
-  parted = callPackage ../tools/misc/parted { hurd = null; };
+  parted = callPackage ../tools/misc/parted { };
 
   pell = callPackage ../applications/misc/pell { };
 
@@ -4529,24 +4529,6 @@ with pkgs;
 
   pngout = callPackage ../tools/graphics/pngout { };
 
-  hurdPartedCross =
-    if targetPlatform != buildPlatform && targetPlatform.config == "i586-pc-gnu"
-    then (makeOverridable
-            ({ hurd }:
-              (parted.override {
-                # Needs the Hurd's libstore.
-                inherit hurd;
-
-                # The Hurd wants a libparted.a.
-                enableStatic = true;
-
-                gettext = null;
-                readline = null;
-                devicemapper = null;
-              }).crossDrv)
-           { hurd = gnu.hurdCrossIntermediate; })
-    else null;
-
   ipsecTools = callPackage ../os-specific/linux/ipsec-tools { flex = flex_2_5_35; };
 
   patch = gnupatch;
@@ -8762,8 +8744,6 @@ with pkgs;
 
   gdb = callPackage ../development/tools/misc/gdb {
     guile = null;
-    hurd = gnu.hurdCross;
-    inherit (gnu) mig;
   };
 
   jhiccup = callPackage ../development/tools/java/jhiccup { };
@@ -13737,22 +13717,7 @@ with pkgs;
 
   libossp_uuid = callPackage ../development/libraries/libossp-uuid { };
 
-  libuuid =
-    if targetPlatform != buildPlatform && targetPlatform.config == "i586-pc-gnu"
-    then (utillinuxMinimal // {
-      crossDrv = lib.overrideDerivation utillinuxMinimal.crossDrv (args: {
-        # `libblkid' fails to build on GNU/Hurd.
-        configureFlags = args.configureFlags
-          + " --disable-libblkid --disable-mount --disable-libmount"
-          + " --disable-fsck --enable-static --disable-partx";
-        doCheck = false;
-        CPPFLAGS =                    # ugly hack for ugly software!
-          lib.concatStringsSep " "
-            (map (v: "-D${v}=4096")
-                 [ "PATH_MAX" "MAXPATHLEN" "MAXHOSTNAMELEN" ]);
-      });
-    })
-    else if stdenv.isLinux
+  libuuid = if stdenv.isLinux
     then utillinuxMinimal
     else null;
 
@@ -13824,9 +13789,6 @@ with pkgs;
 
   nmon = callPackage ../os-specific/linux/nmon { };
 
-  # GNU/Hurd core packages.
-  gnu = recurseIntoAttrs (callPackage ../os-specific/gnu { });
-
   hwdata = callPackage ../os-specific/linux/hwdata { };
 
   i7z = callPackage ../os-specific/linux/i7z { };