1{
2 lib,
3 stdenv,
4 fetchurl,
5 cmake,
6 docbook_xml_dtd_45,
7 docbook_xsl,
8 doxygen,
9 graphviz-nox,
10 pkg-config,
11 qttools,
12 wrapQtAppsHook,
13 alsa-lib,
14 fluidsynth,
15 libpulseaudio,
16 qtbase,
17 qtsvg,
18 qtwayland,
19 sonivox,
20 qt5compat ? null,
21}:
22
23let
24 isQt6 = lib.versions.major qtbase.version == "6";
25in
26stdenv.mkDerivation rec {
27 pname = "drumstick";
28 version = "2.10.0";
29
30 src = fetchurl {
31 url = "mirror://sourceforge/drumstick/${version}/${pname}-${version}.tar.bz2";
32 hash = "sha256-rFoH1daXHiT3LZWQRP+buzMRQSWLJfGMgRtJ9XFy/L0=";
33 };
34
35 patches = [ ./drumstick-plugins.patch ];
36
37 postPatch = ''
38 substituteInPlace library/rt/backendmanager.cpp --subst-var out
39 '';
40
41 outputs = [
42 "out"
43 "dev"
44 "man"
45 ];
46
47 nativeBuildInputs = [
48 cmake
49 docbook_xml_dtd_45
50 docbook_xml_dtd_45
51 docbook_xsl
52 doxygen
53 graphviz-nox
54 pkg-config
55 qttools
56 wrapQtAppsHook
57 ];
58
59 buildInputs = [
60 alsa-lib
61 fluidsynth
62 libpulseaudio
63 qtbase
64 qtsvg
65 qtwayland
66 sonivox
67 ]
68 ++ lib.optionals isQt6 [ qt5compat ];
69
70 cmakeFlags = [
71 (lib.cmakeBool "USE_DBUS" true)
72 (lib.cmakeBool "USE_QT5" (!isQt6))
73 ];
74
75 meta = with lib; {
76 description = "MIDI libraries for Qt/C++";
77 homepage = "https://drumstick.sourceforge.io/";
78 license = licenses.gpl2Plus;
79 maintainers = with maintainers; [ wegank ];
80 platforms = platforms.linux;
81 };
82}