core-lightning/nix/pkgs/default.nix
2024-10-21 16:56:02 +02:00

97 lines
2.4 KiB
Nix

{
self,
lib,
pkgs,
config,
postgresSupport ? false,
}:
with pkgs;
let
version = builtins.readFile ../../.version;
py3 = python3.withPackages (p: [
p.grpcio-tools
p.mako
]);
in
stdenv.mkDerivation {
name = "cln";
src = ../../.;
inherit version;
makeFlags = [
"VERSION=${version}"
"MTIME=${self.lastModifiedDate}"
"NO_PYTHON=1"
];
# when building on darwin we need cctools to provide the correct libtool
# as libwally-core detects the host as darwin and tries to add the -static
# option to libtool, also we have to add the modified gsed package.
nativeBuildInputs =
[
autoconf
autogen
automake
gettext
gitMinimal
postgresql
libtool
lowdown
pkgconf
py3
unzip
which
]
++ lib.optionals postgresSupport [ postgresql ]
++ lib.optionals stdenv.isDarwin [
cctools
darwin.autoSignDarwinBinariesHook
];
buildInputs = [
gmp
jq
libsodium
sqlite
zlib
];
# this causes some python trouble on a darwin host so we skip this step.
# also we have to tell libwally-core to use sed instead of gsed.
postPatch =
if !stdenv.isDarwin then
''
patchShebangs \
tools/generate-wire.py \
tools/update-mocks.sh \
tools/mockup.sh \
tools/fromschema.py \
devtools/sql-rewrite.py
''
else
''
substituteInPlace external/libwally-core/tools/autogen.sh --replace gsed sed && \
substituteInPlace external/libwally-core/configure.ac --replace gsed sed
'';
configureFlags = [ "--disable-valgrind" ];
enableParallelBuilding = true;
# workaround for build issue, happens only x86_64-darwin, not aarch64-darwin
# ccan/ccan/fdpass/fdpass.c:16:8: error: variable length array folded to constant array as an extension [-Werror,-Wgnu-folding-constant]
# char buf[CMSG_SPACE(sizeof(fd))];
env.NIX_CFLAGS_COMPILE = lib.optionalString (
stdenv.isDarwin && stdenv.isx86_64
) "-Wno-error=gnu-folding-constant";
postInstall = ''
cp ${config.packages.rust}/bin/cln-grpc $out/libexec/c-lightning/plugins
'';
meta = with lib; {
description = "Core Lightning (CLN): A specification compliant Lightning Network implementation in C";
homepage = "https://github.com/ElementsProject/lightning";
license = licenses.mit;
platforms = platforms.linux ++ platforms.darwin;
};
}