anchor.diff:      " ycmd/__main__.py
   
       mkdir -p $out/lib/ycmd
  -    cp -r ycmd/ CORE_VERSION libclang.so.* libclang.dylib* ycm_core.so $out/lib/ycmd/
  +    cp -r ycmd/ CORE_VERSION *.so* *.dylib* $out/lib/ycmd/
   
       mkdir -p $out/bin
       ln -s $out/lib/ycmd/ycmd/__main__.py $out/bin/ycmd
  
positive.code:   # python won't be thrown off by argv[0]
    postFixup = ''
      substituteInPlace $out/lib/ycmd/ycmd/__main__.py \
        --replace $out/lib/ycmd/ycmd/__main__.py $out/bin/ycmd \
        --replace __file__ "'$out/lib/ycmd/ycmd/__main__.py'"
    '';
  
    meta = with lib; {
      description = "A code-completion and comprehension server";
      homepage = "https://github.com/Valloric/ycmd";
      license = licenses.gpl3;
      maintainers = with maintainers; [ rasendubi cstrahan lnl7 ];
      platforms = platforms.all;
    };
  }
  
negative.code: { stdenv, lib, fetchFromGitHub, cmake, ninja, python
  , withGocode ? true, gocode
  , withGodef ? true, godef
  , withGotools? true, gotools
  , withTypescript ? true, nodePackages
  , abseil-cpp, boost, llvmPackages
  , fixDarwinDylibNames, Cocoa
  }:
  
  stdenv.mkDerivation {
    pname = "ycmd";
    version = "unstable-2022-08-15";
    disabled = !python.isPy3k;
  
    # required for third_party directory creation
    src = fetchFromGitHub {
      owner = "ycm-core";
      repo = "ycmd";
      rev = "323d4b60f077bd07945f25a60c4584843ca851fb";
      sha256 = "sha256-5IpXMQc3QIkKJkUrOPSRzciLvL1nhQw6wlP+pVnIucE=";
      fetchSubmodules = true;
    };
  
    nativeBuildInputs = [ cmake ninja ]
      ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
    buildInputs = with python.pkgs; with llvmPackages; [ abseil-cpp boost libllvm.all libclang.all ]
      ++  [ jedi jedi-language-server pybind11 ]
      ++ lib.optional stdenv.isDarwin Cocoa;
  
    buildPhase = ''
      export EXTRA_CMAKE_ARGS="-DPATH_TO_LLVM_ROOT=${llvmPackages.libllvm} -DUSE_SYSTEM_ABSEIL=true"
      ${python.interpreter} build.py --system-libclang --clang-completer --ninja
    '';
  
    dontConfigure = true;
  