nixpkgs/pkgs/by-name/br/brainflow/package.nix
2024-07-18 05:37:22 -04:00

87 lines
2.6 KiB
Nix

{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
bluez,
cmake,
dbus,
libftdi1,
nix-update-script,
pkg-config,
useLibFTDI ? true,
useOpenMP ? true,
buildBluetooth ? true,
buildBluetoothLowEnergy ? true,
buildONNX ? true,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "brainflow";
version = "5.12.1";
src = fetchFromGitHub {
owner = "brainflow-dev";
repo = "brainflow";
rev = "refs/tags/${finalAttrs.version}";
hash = "sha256-haQO03nkvLoXtFVe+C+yi+MwM0CFh6rLcLvU8fQ4k/w=";
};
patches = [
# All of these are PRs that were merged into the upstream repository and will be included in the next release
# These should be removed once the next version is released
(fetchpatch {
# Fixes a major issue that prevented the build from working at all (why was this not backported???)
url = "https://github.com/brainflow-dev/brainflow/commit/883b0cd08acb99d7b6e241e92fba2e9a363d17b1.patch";
hash = "sha256-QQd+BI3I65gfaNS/SKLjCoqbCwPCiTh+nh0tJAZM6hQ=";
})
(fetchpatch {
# Bumps the version of a python dependency that had a backwards-incompatible change
url = "https://github.com/brainflow-dev/brainflow/commit/ea23a6f0483ce4d6fdd7a82bace865356ee78d7f.patch";
hash = "sha256-dvMpxxRrnJQ9ADGagB1JhuoB9SNwn755wbHzW/3ECeo=";
})
(fetchpatch {
# Fixes an incorrect use of an environment variable during the build
url = "https://github.com/brainflow-dev/brainflow/commit/053b8c1253b686cbec49ab4adb47c9ee02d3f99a.patch";
hash = "sha256-Pfhe1ZvMagfVAGZqeWn1uHXgwlTtkOm+gyWuvC5/Sro=";
})
];
cmakeFlags = [
(lib.cmakeBool "USE_LIBFTDI" useLibFTDI)
(lib.cmakeBool "USE_OPENMP" useOpenMP)
(lib.cmakeBool "BUILD_OYMOTION_SDK" false) # Needs a "GFORCE_SDK"
(lib.cmakeBool "BUILD_BLUETOOTH" buildBluetooth)
(lib.cmakeBool "BUILD_BLE" buildBluetoothLowEnergy)
(lib.cmakeBool "BUILD_ONNX" buildONNX)
];
buildInputs =
[ dbus ]
++ lib.optional (buildBluetooth || buildBluetoothLowEnergy) bluez
++ lib.optional useLibFTDI libftdi1;
nativeBuildInputs = [
cmake
pkg-config
];
postPatch = ''
find . -type f -name 'build.cmake' -exec \
sed -i 's/DESTINATION inc/DESTINATION include/g' {} \;
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "A library to obtain, parse and analyze data (EEG, EMG, ECG) from biosensors";
homepage = "https://brainflow.org/";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
pandapip1
ziguana
];
platforms = lib.platforms.all;
};
})