nixpkgs/pkgs/applications/audio/adlplug/default.nix
2021-06-12 16:02:17 +02:00

106 lines
2.3 KiB
Nix

{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, cmake
, pkg-config
, fmt
, liblo
, alsa-lib
, freetype
, libX11
, libXrandr
, libXinerama
, libXext
, libXcursor
, libobjc
, Cocoa
, CoreServices
, WebKit
, DiscRecording
# Enabling JACK requires a JACK server at runtime, no fallback mechanism
, withJack ? false, jack
, type ? "ADL"
}:
assert lib.assertOneOf "type" type [ "ADL" "OPN" ];
let
chip = {
ADL = "OPL3";
OPN = "OPN2";
}.${type};
mainProgram = "${type}plug";
in
stdenv.mkDerivation rec {
pname = "${lib.strings.toLower type}plug";
version = "1.0.2";
src = fetchFromGitHub {
owner = "jpcima";
repo = "ADLplug";
rev = "v${version}";
fetchSubmodules = true;
sha256 = "0mqx4bzri8s880v7jwd24nb93m5i3aklqld0b3h0hjnz0lh2qz0f";
};
patches = [
(fetchpatch {
url = "https://raw.githubusercontent.com/jpcima/ADLplug/83636c55bec1b86cabf634b9a6d56d07f00ecc61/resources/patch/juce-gcc9.patch";
sha256 = "15hkdb76n9lgjsrpczj27ld9b4804bzrgw89g95cj4sc8wwkplyy";
extraPrefix = "thirdparty/JUCE/";
stripLen = 1;
})
];
cmakeFlags = [
"-DADLplug_CHIP=${chip}"
"-DADLplug_USE_SYSTEM_FMT=ON"
"-DADLplug_Jack=${if withJack then "ON" else "OFF"}"
];
NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin (toString [
"-isystem ${CoreServices}/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers"
]);
nativeBuildInputs = [
cmake
pkg-config
];
buildInputs = [
fmt
liblo
] ++ lib.optionals stdenv.hostPlatform.isLinux [
alsa-lib
freetype
libX11
libXrandr
libXinerama
libXext
libXcursor
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
libobjc
Cocoa
CoreServices
WebKit
DiscRecording
] ++ lib.optional withJack jack;
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir $out/Applications
mv $out/bin/${mainProgram}.app $out/Applications/
ln -s $out/{Applications/${mainProgram}.app/Contents/MacOS,bin}/${mainProgram}
'';
meta = with lib; {
inherit mainProgram;
description = "${chip} FM Chip Synthesizer";
homepage = src.meta.homepage;
license = licenses.boost;
platforms = platforms.all;
maintainers = with maintainers; [ OPNA2608 ];
};
}