nixpkgs-suyu/pkgs/servers/invidious/lsquic.nix
Silvan Mosberger c5286421bc
invidious: init at unstable-2021-10-15
This also adds a derivation for lsquic, but places it inside invidious’
directory. That is because lsquic.cr (the library used by invidious)
requires a specific lsquic version that is probably not useful for other
derivations.

Co-authored-by: Simon Bruder <simon@sbruder.de>
2021-10-30 16:33:22 +02:00

58 lines
1.8 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ lib, boringssl, stdenv, fetchgit, fetchFromGitHub, cmake, zlib, perl, libevent }:
let
# lsquic requires a specific boringssl version (noted in its README)
boringssl' = boringssl.overrideAttrs (old: rec {
version = "251b5169fd44345f455438312ec4e18ae07fd58c";
src = fetchgit {
url = "https://boringssl.googlesource.com/boringssl";
rev = version;
sha256 = "sha256-EU6T9yQCdOLx98Io8o01rEsgxDFF/Xoy42LgPopD2/A=";
};
});
in
stdenv.mkDerivation rec {
pname = "lsquic";
version = "2.18.1";
src = fetchFromGitHub {
owner = "litespeedtech";
repo = pname;
rev = "v${version}";
sha256 = "sha256-hG8cUvhbCNeMOsKkaJlgGpzUrIx47E/WhmPIdI5F3qM=";
fetchSubmodules = true;
};
nativeBuildInputs = [ cmake perl ];
buildInputs = [ boringssl' libevent zlib ];
cmakeFlags = [
"-DBORINGSSL_DIR=${boringssl'}"
"-DBORINGSSL_LIB_crypto=${boringssl'}/lib/libcrypto.a"
"-DBORINGSSL_LIB_ssl=${boringssl'}/lib/libssl.a"
"-DZLIB_LIB=${zlib}/lib/libz.so"
];
# adapted from lsquic.crs Dockerfile
# (https://github.com/iv-org/lsquic.cr/blob/master/docker/Dockerfile)
installPhase = ''
runHook preInstall
mkdir combinedlib
cd combinedlib
ar -x ${boringssl'}/lib/libssl.a
ar -x ${boringssl'}/lib/libcrypto.a
ar -x ../src/liblsquic/liblsquic.a
ar rc liblsquic.a *.o
ranlib liblsquic.a
install -D liblsquic.a $out/lib/liblsquic.a
runHook postInstall
'';
meta = with lib; {
description = "A library for QUIC and HTTP/3 (version for Invidious)";
homepage = "https://github.com/litespeedtech/lsquic";
maintainers = with maintainers; [ infinisil sbruder ];
license = with licenses; [ openssl isc mit bsd3 ]; # statically links against boringssl, so has to include its licenses
};
}