170 lines
2.8 KiB
Nix

{
lib,
fetchFromGitHub,
cmake,
ninja,
clangStdenv,
pkg-config,
alsa-lib,
avahi,
avahi-compat,
bluez,
boost,
fmt,
ffmpeg,
fftw,
flac,
git,
gnutls,
lame,
libcoap,
libjack2,
libopus,
libsamplerate,
libsndfile,
libvorbis,
lilv,
lv2,
mpg123,
pipewire,
portaudio,
qt6,
rapidfuzz-cpp,
re2,
rubberband,
snappy,
SDL2,
spdlog,
suil,
udev,
}:
# TODO: figure out LLVM jit
# assert lib.versionAtLeast llvm.version "15";
clangStdenv.mkDerivation (finalAttrs: {
pname = "ossia-score";
version = "3.5.3";
src = fetchFromGitHub {
owner = "ossia";
repo = "score";
tag = "v${finalAttrs.version}";
hash = "sha256-khVWoHsxezQjU6O+OX7t1zuzLJpIVTim1rMswD7TaQU=";
fetchSubmodules = true;
};
nativeBuildInputs = [
cmake
ninja
git
pkg-config
qt6.qttools
qt6.wrapQtAppsHook
];
buildInputs = [
alsa-lib
boost
avahi
avahi-compat
bluez
ffmpeg
fftw
flac
fmt
gnutls
lame
libcoap
libjack2
libopus
libsamplerate
libsndfile
libvorbis
lilv
lv2
mpg123
pipewire
portaudio
qt6.qtbase
qt6.qtdeclarative
qt6.qtserialport
qt6.qtscxml
qt6.qtshadertools
qt6.qtsvg
qt6.qtwayland
qt6.qtwebsockets
rapidfuzz-cpp
re2
rubberband
snappy
SDL2
spdlog
suil
udev
];
cmakeFlags = [
"-Wno-dev"
"-DSCORE_DEPLOYMENT_BUILD=1"
"-DSCORE_STATIC_PLUGINS=1"
"-DSCORE_FHS_BUILD=1"
"-DCMAKE_UNITY_BUILD=1"
"-DCMAKE_SKIP_RPATH=ON"
"-DOSSIA_USE_SYSTEM_LIBRARIES=1"
"-DSCORE_USE_SYSTEM_LIBRARIES=1"
"-DLilv_INCLUDE_DIR=${lilv.dev}/include/lilv-0"
"-DSuil_INCLUDE_DIR=${suil}/include/suil-0"
];
# Needed for libraries that get dlopen'd
env.NIX_LDFLAGS = toString [
"-lasound"
"-llilv-0"
"-lsuil-0"
"-lsndfile"
"-lpipewire-0.3"
"-lfftw3"
"-lfftw3_threads"
"-ludev"
];
runtimeDependencies = [
alsa-lib
avahi
avahi-compat
bluez
fftw
lilv
suil
pipewire
udev
];
installPhase = ''
runHook preInstall
cmake -DCMAKE_INSTALL_DO_STRIP=1 -DCOMPONENT=OssiaScore -P cmake_install.cmake
runHook postInstall
'';
meta = with lib; {
homepage = "https://ossia.io/score/about.html";
description = "Sequencer for audio-visual artists";
longDescription = ''
ossia score is a sequencer for audio-visual artists, designed to enable
the creation of interactive shows, museum installations, intermedia
digital artworks, interactive music and more in an intuitive user interface.
'';
platforms = platforms.linux;
license = licenses.gpl3Only;
maintainers = with maintainers; [
jcelerier
minijackson
];
};
})