diff --git a/pkgs/os-specific/gnu/mach/default.nix b/pkgs/os-specific/gnu/mach/default.nix
new file mode 100644
index 00000000000..9bb08ef36fb
--- /dev/null
+++ b/pkgs/os-specific/gnu/mach/default.nix
@@ -0,0 +1,49 @@
+{ fetchgit, stdenv, mig ? null, autoconf, automake, texinfo
+, headersOnly ? true }:
+
+assert (!headersOnly) -> (mig != null);
+
+let rev = "7987a711e8f13c0543e87a0211981f4b40ef6d94";
+in
+stdenv.mkDerivation (rec {
+  name = "gnumach-1.4-${rev}";
+
+  src = fetchgit {
+    url = "git://git.sv.gnu.org/hurd/gnumach.git";
+    sha256 = "7b383a23b7fbe1ec812951cc0f553c85da3279f4f723dd6a65e45976f9d5ca2d";
+    inherit rev;
+  };
+
+  configureFlags = "--build=i586-pc-gnu";
+
+  buildInputs = [ 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 = "GPLv2+";
+
+    homepage = http://www.gnu.org/software/hurd/microkernel/mach/gnumach.html;
+
+    maintainers = [ stdenv.lib.maintainers.ludo ];
+  };
+}
+
+//
+
+(if headersOnly
+ then { buildPhase = ":"; installPhase = "make install-data"; }
+ else {}))
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 00342cb5dd1..cf62ec263ea 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6483,6 +6483,12 @@ let
     inherit fetchurl stdenv;
   };
 
+  machHeaders = import ../os-specific/gnu/mach {
+    inherit fetchgit stdenv autoconf texinfo;
+    automake = automake111x;
+    headersOnly = true;
+  };
+
   mdadm = import ../os-specific/linux/mdadm {
     inherit fetchurl stdenv groff;
   };