diff options
Diffstat (limited to 'pkgs/applications/audio/zynaddsubfx/default.nix')
-rw-r--r-- | pkgs/applications/audio/zynaddsubfx/default.nix | 117 |
1 files changed, 102 insertions, 15 deletions
diff --git a/pkgs/applications/audio/zynaddsubfx/default.nix b/pkgs/applications/audio/zynaddsubfx/default.nix index 9a432f73d3f..986e3215b93 100644 --- a/pkgs/applications/audio/zynaddsubfx/default.nix +++ b/pkgs/applications/audio/zynaddsubfx/default.nix @@ -1,30 +1,117 @@ -{ stdenv, fetchurl, alsaLib, cairo, cmake, libjack2, fftw, fltk13, lash, libjpeg -, libXpm, minixml, ntk, pkgconfig, zlib, liblo +{ lib +, stdenv +, fetchFromGitHub +, callPackage + + # Required build tools +, cmake +, makeWrapper +, pkg-config + + # Required dependencies +, fftw +, liblo +, minixml +, zlib + + # Optional dependencies +, alsaSupport ? true +, alsa-lib +, dssiSupport ? false +, dssi +, ladspaH +, jackSupport ? true +, libjack2 +, lashSupport ? false +, lash +, ossSupport ? true +, portaudioSupport ? true +, portaudio + + # Optional GUI dependencies +, guiModule ? "off" +, cairo +, fltk13 +, libGL +, libjpeg +, libX11 +, libXpm +, ntk + + # Test dependencies +, cxxtest }: -stdenv.mkDerivation rec { +assert builtins.any (g: guiModule == g) [ "fltk" "ntk" "zest" "off" ]; + +let + guiName = { + "fltk" = "FLTK"; + "ntk" = "NTK"; + "zest" = "Zyn-Fusion"; + }.${guiModule}; + mruby-zest = callPackage ./mruby-zest { }; +in stdenv.mkDerivation rec { pname = "zynaddsubfx"; version = "3.0.5"; - src = fetchurl { - url = "mirror://sourceforge/zynaddsubfx/zynaddsubfx-${version}.tar.bz2"; - sha256 = "0qwzg14h043rmyf9jqdylxhyfy4sl0vsr0gjql51wjhid0i34ivl"; + src = fetchFromGitHub { + owner = pname; + repo = pname; + rev = version; + sha256 = "1vh1gszgjxwn8m32rk5222z1j2cnjax0bqpag7b47v6i36p2q4x8"; + fetchSubmodules = true; }; - buildInputs = [ alsaLib cairo libjack2 fftw fltk13 lash libjpeg libXpm minixml ntk zlib liblo ]; - nativeBuildInputs = [ cmake pkgconfig ]; - - patchPhase = '' + postPatch = '' substituteInPlace src/Misc/Config.cpp --replace /usr $out ''; - hardeningDisable = [ "format" ]; + nativeBuildInputs = [ cmake makeWrapper pkg-config ]; + + buildInputs = [ fftw liblo minixml zlib ] + ++ lib.optionals alsaSupport [ alsa-lib ] + ++ lib.optionals dssiSupport [ dssi ladspaH ] + ++ lib.optionals jackSupport [ libjack2 ] + ++ lib.optionals lashSupport [ lash ] + ++ lib.optionals portaudioSupport [ portaudio ] + ++ lib.optionals (guiModule == "fltk") [ fltk13 libjpeg libXpm ] + ++ lib.optionals (guiModule == "ntk") [ ntk cairo libXpm ] + ++ lib.optionals (guiModule == "zest") [ libGL libX11 ]; + + cmakeFlags = [ "-DGuiModule=${guiModule}" ] + # OSS library is included in glibc. + # Must explicitly disable if support is not wanted. + ++ lib.optional (!ossSupport) "-DOssEnable=OFF" + # Find FLTK without requiring an OpenGL library in buildInputs + ++ lib.optional (guiModule == "fltk") "-DFLTK_SKIP_OPENGL=ON"; + + doCheck = true; + checkInputs = [ cxxtest ]; + + # When building with zest GUI, patch plugins + # and standalone executable to properly locate zest + postFixup = lib.optional (guiModule == "zest") '' + patchelf --set-rpath "${mruby-zest}:$(patchelf --print-rpath "$out/lib/lv2/ZynAddSubFX.lv2/ZynAddSubFX_ui.so")" \ + "$out/lib/lv2/ZynAddSubFX.lv2/ZynAddSubFX_ui.so" + + patchelf --set-rpath "${mruby-zest}:$(patchelf --print-rpath "$out/lib/vst/ZynAddSubFX.so")" \ + "$out/lib/vst/ZynAddSubFX.so" + + wrapProgram "$out/bin/zynaddsubfx" \ + --prefix PATH : ${mruby-zest} \ + --prefix LD_LIBRARY_PATH : ${mruby-zest} + ''; + + meta = with lib; { + description = "High quality software synthesizer (${guiName} GUI)"; + homepage = + if guiModule == "zest" + then "https://zynaddsubfx.sourceforge.io/zyn-fusion.html" + else "https://zynaddsubfx.sourceforge.io"; - meta = with stdenv.lib; { - description = "High quality software synthesizer"; - homepage = "http://zynaddsubfx.sourceforge.net"; license = licenses.gpl2; + maintainers = with maintainers; [ goibhniu kira-bruneau ]; platforms = platforms.linux; - maintainers = [ maintainers.goibhniu maintainers.nico202 ]; }; } |