nixpkgs/pkgs/by-name/h2/h2o/package.nix
2025-04-30 17:17:09 -05:00

94 lines
1.5 KiB
Nix

{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
cmake,
makeWrapper,
ninja,
perl,
brotli,
openssl,
libcap,
libuv,
wslay,
zlib,
withMruby ? true,
bison,
ruby,
withUring ? stdenv.hostPlatform.isLinux,
liburing,
nixosTests,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "h2o";
version = "2.3.0.20250430";
src = fetchFromGitHub {
owner = "h2o";
repo = "h2o";
rev = "f1918a5b9f75f4da9db801b442886cb13b3c7bcd";
sha256 = "sha256-sfOkyEhlLGmXjYqRoI/8pD6/NBY7q6K9y2vS7qwJmrw=";
};
outputs = [
"out"
"man"
"dev"
"lib"
];
nativeBuildInputs =
[
pkg-config
cmake
makeWrapper
ninja
]
++ lib.optionals withMruby [
bison
ruby
]
++ lib.optional withUring liburing;
buildInputs = [
brotli
openssl
libcap
libuv
perl
zlib
wslay
];
cmakeFlags = [
"-DWITH_MRUBY=${if withMruby then "ON" else "OFF"}"
];
postInstall = ''
EXES="$(find "$out/share/h2o" -type f -executable)"
for exe in $EXES; do
wrapProgram "$exe" \
--set "H2O_PERL" "${lib.getExe perl}" \
--prefix "PATH" : "${lib.getBin openssl}/bin"
done
'';
passthru = {
tests = { inherit (nixosTests) h2o; };
};
meta = with lib; {
description = "Optimized HTTP/1.x, HTTP/2, HTTP/3 server";
homepage = "https://h2o.examp1e.net";
license = licenses.mit;
maintainers = with maintainers; [
toastal
thoughtpolice
];
mainProgram = "h2o";
platforms = platforms.linux;
};
})