{
  stdenv,
  lib,
  system ? builtins.currentSystem,
  fetchurl,
  unzip,
  libz,
  libcxx,
  lttng-ust_2_12,
  autoPatchelfHook,
}:
stdenv.mkDerivation rec {
  pname = "cpptools";
  version = "1.21.6";

  # Get the current system architecture
  # arch = builtins.currentSystem;

  linux-x64 = "https://github.com/microsoft/vscode-cpptools/releases/download/v${version}/cpptools-linux-x64.vsix";
  linux-arm64 = "https://github.com/microsoft/vscode-cpptools/releases/download/v${version}/cpptools-linux-arm64.vsix";
  darwin-x64 = "https://github.com/microsoft/vscode-cpptools/releases/download/v${version}/cpptools-macos-x64.vsix";
  darwin-arm64 = "https://github.com/microsoft/vscode-cpptools/releases/download/v${version}/cpptools-macos-arm64.vsix";

  src = fetchurl {
    url = lib.getAttr system {
      x86_64-linux = "https://github.com/microsoft/vscode-cpptools/releases/download/v${version}/cpptools-linux-x64.vsix";
      aarch64-linux = "https://github.com/microsoft/vscode-cpptools/releases/download/v${version}/cpptools-linux-arm64.vsix";
      aarch64-darwin = "https://github.com/microsoft/vscode-cpptools/releases/download/v${version}/cpptools-macos-arm64.vsix";
      x86_64-darwin = "https://github.com/microsoft/vscode-cpptools/releases/download/v${version}/cpptools-macos-x64.vsix";
    };
    hash = lib.getAttr system {
      x86_64-linux = "sha256-q6SDImUppICJopOi+HiIUMg7Ue1Qu0A41uewNxRdzeA=";
      aarch64-linux = "sha256-/Zci8P5RAK26FASHpQnIYR5fvSF9lgTTrgVAT33Wfwc=";
      x86_64-darwin = "sha256-P2LacAaCRXnsGUQOLuIyvfgxweeVHsDFTrAEuN/lBIQ=";
      aarch64-darwin = "sha256-P2LacAaCRXnsGUQOLuIyvfgxweeVHsDFTrAEuN/lBIQ=";
    };
  };

  nativeBuildInputs = [
    autoPatchelfHook
  ];

  buildInputs = [
    unzip
    libz
    libcxx
    lttng-ust_2_12
  ];

  unpackPhase = ''
    unzip $src
  '';

  sourceRoot = ".";

  installPhase = ''
    runHook preInstall
    mkdir -p $out/bin
    mkdir -p $out/opt
    cp -r extension/debugAdapters/* $out/opt
    install -m755 -D extension/debugAdapters/bin/OpenDebugAD7 $out/opt/bin/OpenDebugAD7
    ln -s $out/opt/bin/OpenDebugAD7 $out/bin/OpenDebugAD7
    runHook postInstall
  '';

  meta = with lib; {
    homepage = "https://github.com/microsoft/vscode-cpptools";
    description = "Official repository for the Microsoft C/C++ extension for VS Code. ";
    platforms = platforms.linux;
  };
}