about summary refs log tree commit diff
path: root/pkgs/by-name/sh/show-midi/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/sh/show-midi/package.nix')
-rw-r--r--pkgs/by-name/sh/show-midi/package.nix83
1 files changed, 83 insertions, 0 deletions
diff --git a/pkgs/by-name/sh/show-midi/package.nix b/pkgs/by-name/sh/show-midi/package.nix
new file mode 100644
index 0000000000000..e1a433fc8fb49
--- /dev/null
+++ b/pkgs/by-name/sh/show-midi/package.nix
@@ -0,0 +1,83 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, alsa-lib
+, freetype
+, libX11
+, libXrandr
+, libXinerama
+, libXext
+, libXcursor
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "show-midi";
+  version = "0.8.0";
+
+  src = fetchFromGitHub {
+    owner = "gbevin";
+    repo = "ShowMIDI";
+    rev = finalAttrs.version;
+    hash = "sha256-BtkfeHZyeSZH6wIojj3dd2nCS5R535dSWsis/hXJbPc=";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  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/*
+
+    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
+  '';
+
+  # 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;
+  };
+})