1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-09 00:00:00 +01:00
VILLASnode/packaging/nix/villas.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

161 lines
3.9 KiB
Nix
Raw Permalink Normal View History

# SPDX-FileCopyrightText: 2023 OPAL-RT Germany GmbH
# SPDX-License-Identifier: Apache-2.0
{
# General configuration
src,
version,
withGpl ? true,
withAllExtras ? false,
withAllFormats ? false,
withAllHooks ? false,
withAllNodes ? false,
# Extra features
withExtraConfig ? withAllExtras,
withExtraGraphviz ? withAllExtras,
# Format-types
withFormatProtobuf ? withAllFormats,
# Hook-types
withHookLua ? withAllHooks,
# Node-types
withNodeAmqp ? withAllNodes,
withNodeComedi ? withAllNodes,
withNodeEthercat ? withAllNodes,
withNodeIec60870 ? withAllNodes,
withNodeIec61850 ? withAllNodes,
withNodeInfiniband ? withAllNodes,
withNodeKafka ? withAllNodes,
withNodeModbus ? withAllNodes,
withNodeMqtt ? withAllNodes,
withNodeNanomsg ? withAllNodes,
withNodeRedis ? withAllNodes,
withNodeRtp ? withAllNodes,
withNodeSocket ? withAllNodes,
withNodeTemper ? withAllNodes,
withNodeUldaq ? withAllNodes,
withNodeWebrtc ? withAllNodes,
withNodeZeromq ? withAllNodes,
# Minimal dependencies
cmake,
coreutils,
graphviz,
jq,
lib,
makeWrapper,
pkg-config,
stdenv,
# Optional dependencies
comedilib,
curl,
czmq,
ethercat,
gnugrep,
jansson,
lib60870,
libconfig,
libdatachannel,
libiec61850,
libmodbus,
libnl,
libre,
libsodium,
libuldaq,
libusb,
libuuid,
libwebsockets,
lua,
mosquitto,
nanomsg,
openssl,
pkgsBuildBuild,
protobufc,
protobufcBuildBuild ? pkgsBuildBuild.protobufc,
rabbitmq-c,
rdkafka,
rdma-core,
redis-plus-plus,
spdlog,
}:
stdenv.mkDerivation {
inherit src version;
pname = "villas";
outputs = [
"out"
"dev"
];
separateDebugInfo = true;
cmakeFlags =
[ ]
++ lib.optionals (!withGpl) [ "-DWITHOUT_GPL=ON" ]
++ lib.optionals withFormatProtobuf [ "-DCMAKE_FIND_ROOT_PATH=${protobufcBuildBuild}/bin" ];
postPatch = ''
patchShebangs --host ./tools
'';
postInstall = ''
if [ -d $out/include/villas/ ] && [ -d $dev/include/villas/ ]; then
mv $out/include/villas/* $dev/include/villas/
rm -d $out/include/villas
fi
wrapProgram $out/bin/villas \
--set PATH ${
lib.makeBinPath [
(placeholder "out")
gnugrep
coreutils
]
}
wrapProgram $out/bin/villas-api \
--set PATH ${
lib.makeBinPath [
coreutils
curl
jq
]
}
'';
nativeBuildInputs = [
cmake
makeWrapper
pkg-config
];
depsBuildBuild = lib.optionals withFormatProtobuf [ protobufcBuildBuild ];
buildInputs =
[
jansson
libwebsockets
libuuid
openssl
curl
spdlog
]
++ lib.optionals withExtraConfig [ libconfig ]
++ lib.optionals withExtraGraphviz [ graphviz ]
++ lib.optionals withFormatProtobuf [ protobufc ]
++ lib.optionals withHookLua [ lua ]
++ lib.optionals withNodeAmqp [ rabbitmq-c ]
++ lib.optionals withNodeComedi [ comedilib ]
++ lib.optionals withNodeEthercat [ ethercat ]
++ lib.optionals withNodeIec60870 [ lib60870 ]
++ lib.optionals withNodeIec61850 [ libiec61850 ]
++ lib.optionals withNodeInfiniband [ rdma-core ]
++ lib.optionals withNodeKafka [ rdkafka ]
++ lib.optionals withNodeModbus [ libmodbus ]
++ lib.optionals withNodeMqtt [ mosquitto ]
++ lib.optionals withNodeNanomsg [ nanomsg ]
++ lib.optionals withNodeRedis [ redis-plus-plus ]
++ lib.optionals withNodeRtp [ libre ]
++ lib.optionals withNodeSocket [ libnl ]
++ lib.optionals withNodeTemper [ libusb ]
++ lib.optionals withNodeUldaq [ libuldaq ]
++ lib.optionals withNodeWebrtc [ libdatachannel ]
++ lib.optionals withNodeZeromq [
czmq
libsodium
];
meta = with lib; {
mainProgram = "villas";
description = "a tool connecting real-time power grid simulation equipment";
homepage = "https://villas.fein-aachen.org/";
license = licenses.asl20;
};
}