anchor.diff:  , coreutils
   , libjack2
   , fetchpatch
  -, fetchzip
  +, fetchFromGitHub
   , jack_capture
   , pkg-config
   , pulseaudioFull
  
positive.code:   ];
  
    postPatch = ''
        libjackso=$(realpath ${lib.makeLibraryPath [libjack2]}/libjack.so.0);
        substituteInPlace ./src/jacklib.py --replace libjack.so.0 $libjackso
        substituteInPlace ./src/cadence.py --replace "/usr/bin/pulseaudio" \
          "${lib.makeBinPath[pulseaudioFull]}/pulseaudio"
        substituteInPlace ./c++/jackbridge/JackBridge.cpp --replace libjack.so.0 $libjackso
    '';
  
    nativeBuildInputs = [
  
negative.code:   dontWrapQtApps = true;
  
    # Replace with our own wrappers. They need to be changed manually since it wouldn't work otherwise.
    preFixup =
      let
        outRef = placeholder "out";
        prefix = "${outRef}/share/cadence/src";
        scriptAndSource = lib.mapAttrs'
          (script: source:
            lib.nameValuePair ("${outRef}/bin/" + script) ("${prefix}/" + source)
          )
          {
            "cadence" = "cadence.py";
            "claudia" = "claudia.py";
            "catarina" = "catarina.py";
            "catia" = "catia.py";
            "cadence-jacksettings" = "jacksettings.py";
            "cadence-aloop-daemon" = "cadence_aloop_daemon.py";
            "cadence-logs" = "logs.py";
            "cadence-render" = "render.py";
            "claudia-launcher" = "claudia_launcher.py";
            "cadence-session-start" = "cadence_session_start.py";
          };
      in
      lib.mapAttrsToList
        (script: source: ''
          rm -f ${script}
          makeQtWrapper ${source} ${script} \
            --prefix PATH : "${lib.makeBinPath [
              jack_capture # cadence-render
              pulseaudioFull # cadence, cadence-session-start
              ]}"
        '')
        scriptAndSource;
  
    meta = {
      homepage = "https://github.com/falkTX/Cadence/";
  