diff --git a/nix/headache.nix b/nix/headache.nix
new file mode 100644
index 0000000000000000000000000000000000000000..258016810ddcf07992f3c430e46afd05c8b05135
--- /dev/null
+++ b/nix/headache.nix
@@ -0,0 +1,32 @@
+{ lib
+, camomile
+, fetchFromGitHub
+, buildDunePackage
+, cmdliner
+}:
+
+buildDunePackage rec {
+  version = "v1.05";
+  pname = "headache";
+
+  src = fetchFromGitHub {
+    owner = "Frama-C";
+    repo = pname;
+    rev = version;
+    sha256 = "036lrcxh23j2rrj91wlgq9piyyv1vh82wjy63z1l1ggkkhfs7d8r";
+  };
+
+  useDune2 = true;
+
+  buildInputs = [
+    cmdliner
+    camomile
+  ];
+
+  meta = with lib; {
+    homepage = https://github.com/Frama-C/headache/;
+    description = "Automatic generation of files headers";
+    license = licenses.gpl2;
+    maintainers = [ ];
+  };
+}
diff --git a/nix/pkgs.nix b/nix/pkgs.nix
index a36dae2d38ba4a13c5e468cbf5f9248b222761a2..d6eb7cf39031c35659971db5abe45d242947cc7a 100644
--- a/nix/pkgs.nix
+++ b/nix/pkgs.nix
@@ -4,6 +4,7 @@ let
     # External Packages
     alt-ergo = oself.callPackage ./alt-ergo.nix {};
     camlzip = oself.callPackage ./camlzip.nix {};
+    headache = oself.callPackage ./headache.nix {};
     ocp-indent = oself.callPackage ./ocp-indent.nix {};
     psmt2-frontend = oself.callPackage ./psmt2-frontend.nix {};
     why3 = oself.callPackage ./why3.nix {};