{
  stdenv,
  lib,
  fetchFromGitHub,
  gitUpdater,
  cmake,
  pkg-config,
  libX11,
  libXrandr,
  libXinerama,
  libXext,
  libXcursor,
  freetype,
  alsa-lib,
  libjack2,
}:

stdenv.mkDerivation (finalAttrs: {
  pname = "dexed";
  version = "0.9.8";

  src = fetchFromGitHub {
    owner = "asb2m10";
    repo = "dexed";
    tag = "v${finalAttrs.version}";
    fetchSubmodules = true;
    hash = "sha256-mXr1KGzA+DF2dEgAJE4lpnefPqO8pqfnKa43vyjSJgU=";
  };

  postPatch =
    ''
      substituteInPlace CMakeLists.txt \
        --replace-fail 'set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE INTERNAL "")' '# Not forcing output archs'

      substituteInPlace Source/CMakeLists.txt \
        --replace-fail 'COPY_PLUGIN_AFTER_BUILD TRUE' 'COPY_PLUGIN_AFTER_BUILD FALSE'
    ''
    # LTO needs special setup on Linux
    + lib.optionalString stdenv.hostPlatform.isLinux ''
      substituteInPlace Source/CMakeLists.txt \
        --replace-fail 'juce::juce_recommended_lto_flags' '# Not forcing LTO'
    '';

  strictDeps = true;

  nativeBuildInputs = [
    cmake
    pkg-config
  ];

  buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
    libX11
    libXext
    libXcursor
    libXinerama
    libXrandr
    freetype
    alsa-lib
    libjack2
  ];

  # JUCE insists on only dlopen'ing these
  NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isLinux (toString [
    "-lX11"
    "-lXext"
    "-lXcursor"
    "-lXinerama"
    "-lXrandr"
    "-ljack"
  ]);

  installPhase =
    let
      vst3Dir =
        if stdenv.hostPlatform.isDarwin then "$out/Library/Audio/Plug-Ins/VST3" else "$out/lib/vst3";
      # this one's a guess, don't know where ppl have agreed to put them yet
      clapDir =
        if stdenv.hostPlatform.isDarwin then "$out/Library/Audio/Plug-Ins/CLAP" else "$out/lib/clap";
      auDir = "$out/Library/Audio/Plug-Ins/Components";
    in
    ''
      runHook preInstall

    ''
    + (
      if stdenv.hostPlatform.isDarwin then
        ''
          mkdir -p $out/{Applications,bin}
          mv Source/Dexed_artefacts/Release/Standalone/Dexed.app $out/Applications/
          ln -s $out/{Applications/Dexed.app/Contents/MacOS,bin}/Dexed
        ''
      else
        ''
          install -Dm755 {Source/Dexed_artefacts/Release/Standalone,$out/bin}/Dexed
        ''
    )
    + ''
      mkdir -p ${vst3Dir} ${clapDir}
      mv Source/Dexed_artefacts/Release/VST3/* ${vst3Dir}
      mv Source/Dexed_artefacts/Release/CLAP/* ${clapDir}
    ''
    + lib.optionalString stdenv.hostPlatform.isDarwin ''
      mkdir -p ${auDir}
      mv Source/Dexed_artefacts/Release/AU/* ${auDir}
    ''
    + ''

      runHook postInstall
    '';

  passthru.updateScript = gitUpdater { rev-prefix = "v"; };

  meta = {
    description = "DX7 FM multi platform/multi format plugin";
    mainProgram = "Dexed";
    homepage = "https://asb2m10.github.io/dexed";
    license = lib.licenses.gpl3Only;
    platforms = lib.platforms.all;
    maintainers = with lib.maintainers; [ OPNA2608 ];
  };
})
