diff --git a/pkgs/development/ocaml-modules/eliom/camlp4.patch b/pkgs/development/ocaml-modules/eliom/camlp4.patch
index 561d5305bef..06d5ba1b7ed 100644
--- a/pkgs/development/ocaml-modules/eliom/camlp4.patch
+++ b/pkgs/development/ocaml-modules/eliom/camlp4.patch
@@ -1,24 +1,12 @@
 --- a/src/_tags	2014-10-01 16:19:35.000000000 +0100
 +++ b/src/_tags	2014-11-09 16:55:34.470663377 +0000
-@@ -39,7 +39,7 @@
+@@ -40,7 +40,7 @@
  <lib/server/monitor/*.ml{,i}>:I(src/lib/server)
  
- <syntax/pa_*.ml{,i}>: syntax(camlp4o),package(camlp4.quotations.o,camlp4.extend)
+ <syntax/pa_*.*>: syntax(camlp4o),package(camlp4.quotations.o,camlp4.extend,bytes)
 -<syntax/pa_*.ml{,i}>: I(+camlp4/Camlp4Parsers)
 +<syntax/pa_*.ml{,i}>: use_camlp4_full
  
+ <ppx/**/*>: package(ppx_tools, compiler-libs.common, ppx_tools.metaquot)
  
- <ocamlbuild/ocamlbuild_eliom.ml{,i}>: package(ocamlbuild,js_of_ocaml.ocamlbuild)
-
---- a/src/lib/eliom_registration.server.ml	2014-10-01 16:19:35.000000000 +0100
-+++ b/src/lib/eliom_registration.server.ml	2014-11-09 17:26:16.093198699 +0000
-@@ -2440,7 +2440,7 @@
-       (Ocaml.register_post_coservice'
-          ?scope ?options ?charset ?code ?content_type ?headers ?secure_session ?name
-          ?csrf_safe ?csrf_scope ?csrf_secure ?max_use ?timeout ?https ?error_handler
--         ~post_params:Eliom_parameter.(ocaml "argument" argument_type)
-+         ~post_params:(Eliom_parameter.ocaml "argument" argument_type)
-          (fun () argument -> f argument))
-       (Eliom_wrap.create_unwrapper
-          (Eliom_wrap.id_of_int Eliom_common_base.server_function_unwrap_id_int))
 
diff --git a/pkgs/development/ocaml-modules/eliom/default.nix b/pkgs/development/ocaml-modules/eliom/default.nix
index 80b5b9eae0e..1147c305417 100644
--- a/pkgs/development/ocaml-modules/eliom/default.nix
+++ b/pkgs/development/ocaml-modules/eliom/default.nix
@@ -1,25 +1,25 @@
 { stdenv, fetchurl, ocaml, findlib, which, ocsigen_server, ocsigen_deriving,
   js_of_ocaml, ocaml_react, ocaml_lwt, calendar, cryptokit, tyxml,
   ipaddr, ocamlnet, ocaml_ssl, ocaml_pcre, ocaml_optcomp,
-  reactivedata, opam}:
+  reactivedata, opam, ppx_tools, camlp4}:
 
 assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4";
 
 stdenv.mkDerivation rec
 {
   pname = "eliom";
-  version = "4.2.0";
+  version = "5.0.0";
   name = "${pname}-${version}";
 
   src = fetchurl {
-    url = https://github.com/ocsigen/eliom/archive/4.2.tar.gz;
-    sha256 = "0gbqzgn6xgpq6irz2sfr92qj3hjcwl45wy0inc4ps5r15nvq1l9h";
+    url = "https://github.com/ocsigen/eliom/archive/${version}.tar.gz";
+    sha256 = "1g9wq2qpn0sgzyb6iq0h9afq5p68il4h8pc7jppqsislk87m09k7";
   };
 
   patches = [ ./camlp4.patch ];
 
   buildInputs = [ocaml which ocsigen_server findlib ocsigen_deriving
-                 js_of_ocaml ocaml_optcomp opam];
+                 js_of_ocaml ocaml_optcomp opam ppx_tools camlp4 ];
 
   propagatedBuildInputs = [ ocaml_lwt reactivedata tyxml ipaddr
                             calendar cryptokit ocamlnet ocaml_react ocaml_ssl