From eac89788da77c95529b4cc29bc03a9b4e1f8af86 Mon Sep 17 00:00:00 2001
From: zimbatm <zimbatm@zimbatm.com>
Date: Fri, 11 Mar 2016 23:03:14 +0000
Subject: [PATCH] apacheHttpd: add support for HTTP/2

In NixOS you can enable HTTP/2 like this:

    services.httpd.extraModules = [ "http2" ];
    services.httpd.extraConfig = ''
      Protocols h2 http/1.1
    '';
---
 pkgs/servers/http/apache-httpd/2.4.nix | 4 ++++
 pkgs/top-level/all-packages.nix        | 3 ++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/pkgs/servers/http/apache-httpd/2.4.nix b/pkgs/servers/http/apache-httpd/2.4.nix
index ddb1ec443a06..a2e039bd399f 100644
--- a/pkgs/servers/http/apache-httpd/2.4.nix
+++ b/pkgs/servers/http/apache-httpd/2.4.nix
@@ -1,6 +1,7 @@
 { stdenv, fetchurl, perl, zlib, apr, aprutil, pcre, libiconv
 , proxySupport ? true
 , sslSupport ? true, openssl
+, http2Support ? true, libnghttp2
 , ldapSupport ? true, openldap
 , libxml2Support ? true, libxml2
 , luaSupport ? false, lua5
@@ -12,6 +13,7 @@ in
 
 assert sslSupport -> aprutil.sslSupport && openssl != null;
 assert ldapSupport -> aprutil.ldapSupport && openldap != null;
+assert http2Support -> libnghttp2 != null;
 
 stdenv.mkDerivation rec {
   version = "2.4.18";
@@ -25,6 +27,7 @@ stdenv.mkDerivation rec {
   buildInputs = [perl] ++
     optional ldapSupport openldap ++    # there is no --with-ldap flag
     optional libxml2Support libxml2 ++
+    optional http2Support libnghttp2 ++
     optional stdenv.isDarwin libiconv;
 
   # Required for ‘pthread_cancel’.
@@ -44,6 +47,7 @@ stdenv.mkDerivation rec {
     --enable-cgi
     ${optionalString proxySupport "--enable-proxy"}
     ${optionalString sslSupport "--enable-ssl --with-ssl=${openssl}"}
+    ${optionalString http2Support "--enable-http2 --with-nghttp2=${libnghttp2}"}
     ${optionalString luaSupport "--enable-lua --with-lua=${lua5}"}
     ${optionalString libxml2Support "--with-libxml2=${libxml2}/include/libxml2"}
   '';
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index b2bb982625c3..c95d9d458680 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -9461,7 +9461,8 @@ let
   };
 
   apacheHttpd_2_4 = lowPrio (callPackage ../servers/http/apache-httpd/2.4.nix {
-    sslSupport = true;
+    # 1.0.2+ for ALPN support
+    openssl = openssl_1_0_2;
   });
 
   apacheHttpdPackagesFor = apacheHttpd: self: let callPackage = newScope self; in {