2025-07-24 13:55:40 +02:00

111 lines
2.3 KiB
Nix

{
lib,
stdenv,
fetchFromGitHub,
cmake,
pkg-config,
fmt,
liblo,
alsa-lib,
freetype,
libX11,
libXrandr,
libXinerama,
libXext,
libXcursor,
# Enabling JACK requires a JACK server at runtime, no fallback mechanism
withJack ? false,
libjack2,
type ? "ADL",
}:
assert lib.assertOneOf "type" type [
"ADL"
"OPN"
];
let
chip =
{
ADL = "OPL3";
OPN = "OPN2";
}
.${type};
mainProgram = "${type}plug";
in
stdenv.mkDerivation {
pname = "${lib.strings.toLower type}plug";
version = "unstable-2021-12-17";
src = fetchFromGitHub {
owner = "jpcima";
repo = "ADLplug";
rev = "a488abedf1783c61cb4f0caa689f1b01bf9aa17d";
fetchSubmodules = true;
sha256 = "1a5zw0rglqgc5wq1n0s5bxx7y59dsg6qy02236fakl34bvbk60yz";
};
cmakeFlags = [
(lib.cmakeFeature "ADLplug_CHIP" chip)
(lib.cmakeBool "ADLplug_USE_SYSTEM_FMT" true)
(lib.cmakeBool "ADLplug_Jack" withJack)
];
NIX_LDFLAGS = toString (
lib.optionals stdenv.hostPlatform.isDarwin [
# Framework that JUCE needs which don't get linked properly
"-framework CoreAudioKit"
"-framework QuartzCore"
"-framework AudioToolbox"
]
++ lib.optionals stdenv.hostPlatform.isLinux [
# JUCE dlopen's these at runtime
"-lX11"
"-lXext"
"-lXcursor"
"-lXinerama"
"-lXrandr"
]
);
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
fmt
liblo
]
++ lib.optionals stdenv.hostPlatform.isLinux [
alsa-lib
freetype
libX11
libXrandr
libXinerama
libXext
libXcursor
]
++ lib.optionals withJack [ libjack2 ];
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir -p $out/{Applications,Library/Audio/Plug-Ins/{VST,Components}}
mv $out/bin/${mainProgram}.app $out/Applications/
ln -s $out/{Applications/${mainProgram}.app/Contents/MacOS,bin}/${mainProgram}
mv vst2/${mainProgram}.vst $out/Library/Audio/Plug-Ins/VST/
mv au/${mainProgram}.component $out/Library/Audio/Plug-Ins/Components/
'';
meta = {
inherit mainProgram;
description = "${chip} FM Chip Synthesizer";
homepage = "https://github.com/jpcima/ADLplug";
license = lib.licenses.boost;
platforms = lib.platforms.all;
maintainers = with lib.maintainers; [ OPNA2608 ];
};
}