{ lib , stdenv , fetchFromGitHub , pkg-config , alsa-lib , freetype , libX11 , libXrandr , libXinerama , libXext , libXcursor , makeDesktopItem , copyDesktopItems }: stdenv.mkDerivation (finalAttrs: { pname = "show-midi"; version = "1.0.1"; src = fetchFromGitHub { owner = "gbevin"; repo = "ShowMIDI"; rev = finalAttrs.version; hash = "sha256-jANrFZqJZZMTGyNa0sIthoQzaDMdLzpGZqHfxNw8hDg="; fetchSubmodules = true; }; nativeBuildInputs = [ pkg-config copyDesktopItems ]; buildInputs = [ alsa-lib freetype libX11 libXrandr libXinerama libXext libXcursor ]; enableParallelBuilding = true; makeFlags = [ "-C Builds/LinuxMakefile" "CONFIG=Release" # Specify targets by hand, because it tries to build VST by default, # even though it's not supported in JUCE anymore "LV2" "LV2_MANIFEST_HELPER" "Standalone" "VST3" "VST3_MANIFEST_HELPER" ]; installPhase = '' runHook preInstall install -Dt $out/share/ShowMIDI/themes Themes/* install -D Design/icon.png $out/share/icons/hicolor/1024x1024/apps/show-midi.png mkdir -p $out/bin $out/lib/lv2 $out/lib/vst3 cd Builds/LinuxMakefile/build/ cp -r ShowMIDI.lv2 $out/lib/lv2 cp -r ShowMIDI.vst3 $out/lib/vst3 cp ShowMIDI $out/bin runHook postInstall ''; desktopItems = [(makeDesktopItem { name = "ShowMIDI"; exec = finalAttrs.meta.mainProgram; comment = finalAttrs.meta.description; type = "Application"; icon = "show-midi"; desktopName = "ShowMIDI"; categories = [ "Audio" ]; })]; # JUCE dlopens these, make sure they are in rpath # Otherwise, segfault will happen env.NIX_LDFLAGS = toString [ "-lX11" "-lXext" "-lXcursor" "-lXinerama" "-lXrandr" ]; meta = with lib; { description = "Multi-platform GUI application to effortlessly visualize MIDI activity"; homepage = "https://github.com/gbevin/ShowMIDI"; license = licenses.gpl3Only; maintainers = with maintainers; [ minijackson ]; mainProgram = "ShowMIDI"; platforms = platforms.linux; }; })