Files
nixpkgs/pkgs/by-name/ha/haproxy/package.nix
Dark Steveneq 646b892680
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
push sheeet
2025-10-09 14:15:47 +02:00

138 lines
3.1 KiB
Nix

{
useLua ? true,
usePcre ? true,
withPrometheusExporter ? true,
sslLibrary ? "quictls",
stdenv,
lib,
fetchurl,
fetchpatch,
nixosTests,
zlib,
libxcrypt,
aws-lc,
libressl,
openssl,
quictls,
wolfssl,
lua5_4,
pcre2,
}:
assert lib.assertOneOf "sslLibrary" sslLibrary [
"aws-lc"
"libressl"
"openssl"
"quictls"
"wolfssl"
];
let
sslPkgs = {
inherit
aws-lc
libressl
openssl
quictls
;
wolfssl = wolfssl.override {
variant = "haproxy";
extraConfigureFlags = [ "--enable-quic" ];
};
};
sslPkg = sslPkgs.${sslLibrary};
in
stdenv.mkDerivation (finalAttrs: {
pname = "haproxy";
version = "3.2.6";
src = fetchurl {
url = "https://www.haproxy.org/download/${lib.versions.majorMinor finalAttrs.version}/src/haproxy-${finalAttrs.version}.tar.gz";
hash = "sha256-rWMLawtz4dEYrM5Fj+wb8efQ5ClTDyZo7FgvT4u3jmU=";
};
buildInputs = [
sslPkg
zlib
libxcrypt
]
++ lib.optional useLua lua5_4
++ lib.optional usePcre pcre2;
# TODO: make it work on bsd as well
makeFlags = [
"PREFIX=${placeholder "out"}"
(
"TARGET="
+ (
if stdenv.hostPlatform.isSunOS then
"solaris"
else if stdenv.hostPlatform.isLinux then
"linux-glibc"
else if stdenv.hostPlatform.isDarwin then
"osx"
else
"generic"
)
)
];
buildFlags = [
"USE_ZLIB=yes"
"USE_OPENSSL=yes"
"SSL_INC=${lib.getDev sslPkg}/include"
"SSL_LIB=${lib.getDev sslPkg}/lib"
"USE_QUIC=yes"
]
++ lib.optionals (sslLibrary == "aws-lc") [
"USE_OPENSSL_AWSLC=true"
]
++ lib.optionals (sslLibrary == "openssl") [
"USE_QUIC_OPENSSL_COMPAT=yes"
]
++ lib.optionals (sslLibrary == "wolfssl") [
"USE_OPENSSL_WOLFSSL=yes"
]
++ lib.optionals usePcre [
"USE_PCRE2=yes"
"USE_PCRE2_JIT=yes"
]
++ lib.optionals useLua [
"USE_LUA=yes"
"LUA_LIB_NAME=lua"
"LUA_LIB=${lua5_4}/lib"
"LUA_INC=${lua5_4}/include"
]
++ lib.optionals stdenv.hostPlatform.isLinux [
"USE_GETADDRINFO=1"
]
++ lib.optionals withPrometheusExporter [
"USE_PROMEX=yes"
]
++ [ "CC=${stdenv.cc.targetPrefix}cc" ];
enableParallelBuilding = true;
passthru.tests.haproxy = nixosTests.haproxy;
meta = {
changelog = "https://www.haproxy.org/download/${lib.versions.majorMinor finalAttrs.version}/src/CHANGELOG";
description = "Reliable, high performance TCP/HTTP load balancer";
homepage = "https://haproxy.org";
license = with lib.licenses; [
gpl2Plus
lgpl21Only
];
longDescription = ''
HAProxy is a free, very fast and reliable solution offering high
availability, load balancing, and proxying for TCP and HTTP-based
applications. It is particularly suited for web sites crawling under very
high loads while needing persistence or Layer7 processing. Supporting
tens of thousands of connections is clearly realistic with todays
hardware.
'';
maintainers = with lib.maintainers; [ vifino ];
platforms = with lib.platforms; linux ++ darwin;
mainProgram = "haproxy";
};
})