anchor.diff:    mktplcRef = {
       name = "vsliveshare";
       publisher = "ms-vsliveshare";
  -    version = "1.0.2902";
  -    sha256 = "0fx2vi0wxamcwqcgcx7wpg8hi7f1c2pibrmd2qy2whilpsv3gzmb";
  +    version = "1.0.3912";
  +    sha256 = "1k5yy04q85jjr7hzrv0s7x1m2251kglb038wcvvbs568vpscghi8";
     };
  -}).overrideAttrs(attrs: {
  -  buildInputs = attrs.buildInputs ++ libs ++ [ autoPatchelfHook bash file makeWrapper ];
  +}).overrideAttrs({ nativeBuildInputs ? [], buildInputs ? [], ... }: {
  +  nativeBuildInputs = nativeBuildInputs ++ [
  +    bash
  +    jq
  +    autoPatchelfHook
  +    makeWrapper
  +  ];
  +  buildInputs = buildInputs ++ libs;
   
     # Using a patch file won't work, because the file changes too often, causing the patch to fail on most updates.
     # Rather than patching the calls to functions, we modify the functions to return what we want,
  
positive.code: 
      # Fix extension attempting to write to 'modifiedInternalSettings.json'.
      # Move this write to the tmp directory indexed by the nix store basename.
      sed -i \
        -E -e $'s/path\.resolve\(constants_1\.EXTENSION_ROOT_PATH, \'\.\/modifiedInternalSettings\.json\'\)/path.join\(os.tmpdir(), "'$ext_unique_id'" + "-modifiedInternalSettings.json"\)/g' \
        out/prod/extension-prod.js
  
      # Fix extension attempting to write to 'vsls-agent.lock'.
      # Move this write to the tmp directory indexed by the nix store basename.
      sed -i \
        -E -e $'s/(Agent_1.getAgentPath\(\) \+ \'.lock\')/path.join\(os.tmpdir(), "'$ext_unique_id'" + "-vsls-agent.lock"\)/g' \
        out/prod/extension-prod.js
  
      # TODO: Under 'node_modules/@vsliveshare/vscode-launcher-linux' need to hardcode path to 'desktop-file-install'
      # 'update-desktop-database' and 'xprop'. Might want to wrap the script instead.
    '';
  
    # Support for the `postInstall` hook was added only in nixos-20.03,
    # so for backwards compatibility reasons lets not use it yet.
    installPhase = attrs.installPhase + ''
      # Support both the new and old directory structure of vscode extensions.
      if [[ -d $out/ms-vsliveshare.vsliveshare ]]; then
        cd $out/ms-vsliveshare.vsliveshare
      elif [[ -d $out/share/vscode/extensions/ms-vsliveshare.vsliveshare ]]; then
        cd $out/share/vscode/extensions/ms-vsliveshare.vsliveshare
      else
        echo "Could not find extension directory 'ms-vsliveshare.vsliveshare'." >&2
        exit 1
      fi
  
      bash -s <<ENDSUBSHELL
      shopt -s extglob
  
negative.code: # Based on previous attempts:
  #  -  <https://github.com/msteen/nixos-vsliveshare/blob/master/pkgs/vsliveshare/default.nix>
  #  -  <https://github.com/NixOS/nixpkgs/issues/41189>
  { lib, gccStdenv, vscode-utils
  , jq, autoPatchelfHook, bash, makeWrapper
  , dotnet-sdk_3, curl, gcc, icu, libkrb5, libsecret, libunwind, libX11, lttng-ust, openssl, util-linux, zlib
  , desktop-file-utils, xprop, xsel
  }:
  
  with lib;
  