diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/editors/vscode/extensions')
38 files changed, 5835 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/WakaTime.vscode-wakatime/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/WakaTime.vscode-wakatime/default.nix new file mode 100644 index 000000000000..a58a17f2a6fe --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/WakaTime.vscode-wakatime/default.nix @@ -0,0 +1,22 @@ +{ lib +, vscode-utils }: + +let + inherit (vscode-utils) buildVscodeMarketplaceExtension; +in + buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-wakatime"; + publisher = "WakaTime"; + version = "18.0.5"; + sha256 = "sha256-vWqGxMbxKqd4UgKK0sOKadMTDf6Y3TQxfWsc93MHjFs="; + }; + + meta = { + description = '' + Visual Studio Code plugin for automatic time tracking and metrics generated + from your programming activity + ''; + license = lib.licenses.bsd3; + }; + } diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/_maintainers/update-bin-srcs-lib.sh b/nixpkgs/pkgs/applications/editors/vscode/extensions/_maintainers/update-bin-srcs-lib.sh new file mode 100755 index 000000000000..4b0ca54da362 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/_maintainers/update-bin-srcs-lib.sh @@ -0,0 +1,158 @@ +#!/usr/bin/env bash + +prefetchExtensionZip() { + declare publisher="${1?}" + declare name="${2?}" + declare version="${3?}" + + 1>&2 echo + 1>&2 echo "------------- Downloading extension ---------------" + + declare extZipStoreName="${publisher}-${name}.zip" + declare extUrl="https://${publisher}.gallery.vsassets.io/_apis/public/gallery/publisher/${publisher}/extension/${name}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage"; + 1>&2 echo "extUrl='$extUrl'" + declare nixPrefetchArgs=( --name "$extZipStoreName" --print-path "$extUrl" ) + + 1>&2 printf "$ nix-prefetch-url" + 1>&2 printf " %q" "${nixPrefetchArgs[@]}" + 1>&2 printf " 2> /dev/null\n" + declare zipShaWStorePath + zipShaWStorePath=$(nix-prefetch-url "${nixPrefetchArgs[@]}" 2> /dev/null) + + 1>&2 echo "zipShaWStorePath='$zipShaWStorePath'" + echo "$zipShaWStorePath" +} + + +prefetchExtensionUnpacked() { + declare publisher="${1?}" + declare name="${2?}" + declare version="${3?}" + + declare zipShaWStorePath + zipShaWStorePath="$(prefetchExtensionZip "$publisher" "$name" "$version")" + + declare zipStorePath + zipStorePath="$(echo "$zipShaWStorePath" | tail -n1)" + 1>&2 echo "zipStorePath='$zipStorePath'" + + function rm_tmpdir() { + 1>&2 printf "rm -rf %q\n" "$tmpDir" + rm -rf "$tmpDir" + } + function make_trapped_tmpdir() { + tmpDir=$(mktemp -d) + trap rm_tmpdir EXIT + } + + 1>&2 echo + 1>&2 echo "------------- Unpacking extension ---------------" + + make_trapped_tmpdir + declare unzipArgs=( -q -d "$tmpDir" "$zipStorePath" ) + 1>&2 printf "$ unzip" + 1>&2 printf " %q" "${unzipArgs[@]}" + 1>&2 printf "\n" + unzip "${unzipArgs[@]}" + + declare unpackedStoreName="${publisher}-${name}" + + declare unpackedStorePath + unpackedStorePath="$(nix add-to-store -n "$unpackedStoreName" "$tmpDir")" + declare unpackedSha256 + unpackedSha256="$(nix hash-path --base32 --type sha256 "$unpackedStorePath")" + 1>&2 echo "unpackedStorePath='$unpackedStorePath'" + 1>&2 echo "unpackedSha256='$unpackedSha256'" + + rm_tmpdir + + echo "$unpackedSha256" + echo "$unpackedStorePath" +} + + +prefetchExtensionJson() { + declare publisher="${1?}" + declare name="${2?}" + declare version="${3?}" + + declare unpackedShaWStorePath + unpackedShaWStorePath="$(prefetchExtensionUnpacked "$publisher" "$name" "$version")" + + declare unpackedStorePath + unpackedStorePath="$(echo "$unpackedShaWStorePath" | tail -n1)" + 1>&2 echo "unpackedStorePath='$unpackedStorePath'" + + declare jsonShaWStorePath + jsonShaWStorePath=$(nix-prefetch-url --print-path "file://${unpackedStorePath}/extension/package.json" 2> /dev/null) + + 1>&2 echo "jsonShaWStorePath='$jsonShaWStorePath'" + echo "$jsonShaWStorePath" +} + + +formatExtRuntimeDeps() { + declare publisher="${1?}" + declare name="${2?}" + declare version="${3?}" + + declare jsonShaWStorePath + jsonShaWStorePath="$(prefetchExtensionJson "$publisher" "$name" "$version")" + + declare jsonStorePath + jsonStorePath="$(echo "$jsonShaWStorePath" | tail -n1)" + 1>&2 echo "jsonStorePath='$jsonStorePath'" + + # Assume packages without an architectures are for x86_64 and remap arm64 to aarch64. + declare jqQuery + jqQuery=$(cat <<'EOF' +.runtimeDependencies +| map(select(.platforms[] | in({"linux": null, "darwin": null}))) +| map(select(.architectures == null).architectures |= ["x86_64"]) +| map(del(.architectures[] | select(. | in({"x86_64": null, "arm64": null}) | not))) +| map((.architectures[] | select(. == "arm64")) |= "aarch64") +| map(select(.architectures != [])) +| .[] | { + (.id + "__" + (.architectures[0]) + "-" + (.platforms[0])): + {installPath, binaries, urls: [.url, .fallbackUrl] | map(select(. != null))} +} +EOF +) + + 1>&2 printf "$ cat %q | jq '%s'\n" "$jsonStorePath" "$jqQuery" + cat "$jsonStorePath" | jq "$jqQuery" +} + + +computeExtRtDepChecksum() { + declare rtDepJsonObject="${1?}" + declare url + url="$(echo "$rtDepJsonObject" | jq -j '.[].urls[0]')" + declare sha256 + 1>&2 printf "$ nix-prefetch-url '%s'\n" "$url" + sha256="$(nix-prefetch-url "$url")" + 1>&2 echo "$sha256" + echo "$sha256" +} + + +computeAndAttachExtRtDepsChecksums() { + while read -r rtDepJsonObject; do + declare sha256 + sha256="$(computeExtRtDepChecksum "$rtDepJsonObject")" + echo "$rtDepJsonObject" | jq --arg sha256 "$sha256" '.[].sha256 = $sha256' + done < <(cat - | jq -c '.') +} + + +jqStreamToJson() { + cat - | jq --slurp '. | add' +} + + +jsonToNix() { + # TODO: Replacing this non functional stuff with a proper json to nix + # implementation would allow us to produce a 'rt-deps-bin-srcs.nix' file instead. + false + cat - | sed -E -e 's/": /" = /g' -e 's/,$/;/g' -e 's/ }$/ };/g' -e 's/ ]$/ ];/g' +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/chenglou92.rescript-vscode/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/chenglou92.rescript-vscode/default.nix new file mode 100644 index 000000000000..8bb4a5f5ce1a --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/chenglou92.rescript-vscode/default.nix @@ -0,0 +1,29 @@ +{ lib, stdenv, vscode-utils, callPackage }: +let + version = "1.16.0"; + rescript-editor-analysis = callPackage ./rescript-editor-analysis.nix { inherit version; }; + arch = + if stdenv.isLinux then "linux" + else if stdenv.isDarwin then "darwin" + else throw "Unsupported platform"; + analysisDir = "server/analysis_binaries/${arch}"; +in +vscode-utils.buildVscodeMarketplaceExtension rec { + mktplcRef = { + name = "rescript-vscode"; + publisher = "chenglou92"; + inherit version; + sha256 = "sha256-JoC9+NkbLAZXkOKDDMB0Xgzmn+w90pHcokerMrdACi4="; + }; + postPatch = '' + rm -r ${analysisDir} + ln -s ${rescript-editor-analysis}/bin ${analysisDir} + ''; + + meta = { + description = "The official VSCode plugin for ReScript"; + homepage = "https://github.com/rescript-lang/rescript-vscode"; + maintainers = [ lib.maintainers.dlip lib.maintainers.jayesh-bhoot ]; + license = lib.licenses.mit; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/chenglou92.rescript-vscode/rescript-editor-analysis.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/chenglou92.rescript-vscode/rescript-editor-analysis.nix new file mode 100644 index 000000000000..125dfa0041bb --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/chenglou92.rescript-vscode/rescript-editor-analysis.nix @@ -0,0 +1,34 @@ +{ lib, stdenv, fetchFromGitHub, bash, ocaml, ocamlPackages, dune_3, version }: + +stdenv.mkDerivation { + pname = "rescript-editor-analysis"; + inherit version; + + src = fetchFromGitHub { + owner = "rescript-lang"; + repo = "rescript-vscode"; + rev = version; + sha256 = "sha256-+Ht8qWwxtFWHFMiV/aoZIs2S3SxkOWgdwSKN+akp/LU="; + }; + + nativeBuildInputs = [ ocaml dune_3 ocamlPackages.cppo ]; + + # Skip testing phases because they need to download and install node modules + postPatch = '' + cd analysis + substituteInPlace Makefile \ + --replace "build: build-analysis-binary build-reanalyze build-tests" "build: build-analysis-binary" \ + --replace "test: test-analysis-binary test-reanalyze" "test: test-analysis-binary" + ''; + + installPhase = '' + install -D -m0555 rescript-editor-analysis.exe $out/bin/rescript-editor-analysis.exe + ''; + + meta = { + description = "Analysis binary for the ReScript VSCode plugin"; + homepage = "https://github.com/rescript-lang/rescript-vscode"; + maintainers = [ lib.maintainers.dlip lib.maintainers.jayesh-bhoot ]; + license = lib.licenses.mit; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/contextmapper.context-mapper-vscode-extension/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/contextmapper.context-mapper-vscode-extension/default.nix new file mode 100644 index 000000000000..077b522b59e2 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/contextmapper.context-mapper-vscode-extension/default.nix @@ -0,0 +1,36 @@ +{ graphviz +, jre +, lib +, makeWrapper +, vscode-utils +}: + +vscode-utils.buildVscodeMarketplaceExtension rec { + mktplcRef = { + name = "context-mapper-vscode-extension"; + publisher = "contextmapper"; + version = "6.7.0"; + sha256 = "sha256-vlDVqn1Je0eo5Nf2gyotSvhIa07tWCINe79RZSyMzcA="; + }; + + nativeBuildInputs = [ + makeWrapper + ]; + + buildInputs = [ + graphviz + ]; + + postInstall = '' + wrapProgram $out/share/vscode/extensions/contextmapper.context-mapper-vscode-extension/lsp/bin/context-mapper-lsp \ + --set JAVA_HOME "${jre}" + ''; + + meta = { + description = "A VSCode extension for Context Mapper"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=${mktplcRef.publisher}.${mktplcRef.name}"; + homepage = "https://github.com/ContextMapper/vscode-extension"; + license = lib.licenses.asl20; + maintainers = [ lib.maintainers.rhoriguchi ]; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/default.nix new file mode 100644 index 000000000000..25d7012651df --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/default.nix @@ -0,0 +1,3681 @@ +{ config +, lib +, fetchurl +, callPackage +, vscode-utils +, asciidoctor +, nodePackages +, python3Packages +, jdk +, llvmPackages_8 +, llvmPackages_14 +, nixpkgs-fmt +, protobuf +, jq +, shellcheck +, moreutils +, racket +, clojure-lsp +, alejandra +, millet +, shfmt +, typst-lsp +, autoPatchelfHook +, zlib +, stdenv +}: + +let + inherit (vscode-utils) buildVscodeMarketplaceExtension; + + # + # Unless there is a good reason not to, we attempt to use the lowercase + # version of the extension's unique identifier. The unique identifier can be + # found on the marketplace extension page, and is the name under which the + # extension is installed by VSCode under `~/.vscode`. + # + # This means an extension should be located at + # ${lib.strings.toLower mktplcRef.publisher}.${lib.string.toLower mktplcRef.name} + # + baseExtensions = self: lib.mapAttrs (_n: lib.recurseIntoAttrs) + { + "1Password".op-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "1Password"; + name = "op-vscode"; + version = "1.0.4"; + sha256 = "sha256-s6acue8kgFLf5fs4A7l+IYfhibdY76cLcIwHl+54WVk="; + }; + meta = { + changelog = "https://github.com/1Password/op-vscode/releases"; + description = "A VSCode extension that integrates your development workflow with 1Password service"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=1Password.op-vscode"; + homepage = "https://github.com/1Password/op-vscode"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers._2gn ]; + }; + }; + + "2gua".rainbow-brackets = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "2gua"; + name = "rainbow-brackets"; + version = "0.0.6"; + sha256 = "TVBvF/5KQVvWX1uHwZDlmvwGjOO5/lXbgVzB26U8rNQ="; + }; + meta = { + description = "A Visual Studio Code extension providing rainbow brackets"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=2gua.rainbow-brackets"; + homepage = "https://github.com/lcultx/rainbow-brackets"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.CompEng0001 ]; + }; + }; + + "4ops".terraform = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "4ops"; + name = "terraform"; + version = "0.2.5"; + sha256 = "sha256-y5LljxK8V9Fir9EoG8g9N735gISrlMg3czN21qF/KjI="; + }; + meta = { + license = lib.licenses.mit; + maintainers = [ lib.maintainers.kamadorueda ]; + }; + }; + + a5huynh.vscode-ron = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-ron"; + publisher = "a5huynh"; + version = "0.10.0"; + sha256 = "sha256-DmyYE7RHOX/RrbIPYCq/x0l081SzmyBAd7yHSUOPkOA="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + adpyke.codesnap = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "codesnap"; + publisher = "adpyke"; + version = "1.3.4"; + sha256 = "sha256-dR6qODSTK377OJpmUqG9R85l1sf9fvJJACjrYhSRWgQ="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + alanz.vscode-hie-server = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-hie-server"; + publisher = "alanz"; + version = "0.0.27"; # see the note above + sha256 = "1mz0h5zd295i73hbji9ivla8hx02i4yhqcv6l4r23w3f07ql3i8h"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + alefragnani.bookmarks = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "bookmarks"; + publisher = "alefragnani"; + version = "13.3.1"; + sha256 = "sha256-CZSFprI8HMQvc8P9ZH+m0j9J6kqmSJM1/Ik24ghif2A="; + }; + meta = { + license = lib.licenses.gpl3; + }; + }; + + alefragnani.project-manager = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "project-manager"; + publisher = "alefragnani"; + version = "12.7.0"; + sha256 = "sha256-rBMwvm7qUI6zBrXdYntQlY8WvH2fDBhEuQ1pHDl9fQg="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + alexdima.copy-relative-path = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "copy-relative-path"; + publisher = "alexdima"; + version = "0.0.2"; + sha256 = "06g601n9d6wyyiz659w60phgm011gn9jj5fy0gf5wpi2bljk3vcn"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + alygin.vscode-tlaplus = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-tlaplus"; + publisher = "alygin"; + version = "1.5.4"; + sha256 = "0mf98244z6wzb0vj6qdm3idgr2sr5086x7ss2khaxlrziif395dx"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + angular.ng-template = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "ng-template"; + publisher = "Angular"; + version = "15.2.0"; + sha256 = "sha256-ho3DtXAAafY/mpUcea2OPhy8tpX+blJMyVxbFVUsspk="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/Angular.ng-template/changelog"; + description = "Editor services for Angular templates"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=Angular.ng-template"; + homepage = "https://github.com/angular/vscode-ng-language-service"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.ratsclub ]; + }; + }; + + antfu.icons-carbon = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "icons-carbon"; + publisher = "antfu"; + version = "0.2.6"; + sha256 = "sha256-R8eHLuebfgHaKtHPKBaaYybotluuH9WrUBpgyuIVOxc="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + antfu.slidev = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "antfu"; + name = "slidev"; + version = "0.4.1"; + sha256 = "sha256-MNQMOT9LaEVZqelvikBTpUPTsSIA2z5qvLxw51aJw1w="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + antyos.openscad = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "openscad"; + publisher = "Antyos"; + version = "1.1.1"; + sha256 = "1adcw9jj3npk3l6lnlfgji2l529c4s5xp9jl748r9naiy3w3dpjv"; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/Antyos.openscad/changelog"; + description = "OpenSCAD highlighting, snippets, and more for VSCode"; + homepage = "https://github.com/Antyos/vscode-openscad"; + license = lib.licenses.gpl3; + }; + }; + + apollographql.vscode-apollo = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-apollo"; + publisher = "apollographql"; + version = "1.19.11"; + sha256 = "sha256-EixefDuJiw/p5yAR/UQLK1a1RXJLXlTmOlD34qpAN+U="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/apollographql.vscode-apollo/changelog"; + description = "Rich editor support for GraphQL client and server development that seamlessly integrates with the Apollo platform"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=apollographql.vscode-apollo"; + homepage = "https://github.com/apollographql/vscode-graphql"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.datafoo ]; + }; + }; + + arcticicestudio.nord-visual-studio-code = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "nord-visual-studio-code"; + publisher = "arcticicestudio"; + version = "0.19.0"; + sha256 = "sha256-awbqFv6YuYI0tzM/QbHRTUl4B2vNUdy52F4nPmv+dRU="; + }; + meta = { + description = "An arctic, north-bluish clean and elegant Visual Studio Code theme."; + downloadPage = + "https://marketplace.visualstudio.com/items?itemName=arcticicestudio.nord-visual-studio-code"; + homepage = "https://github.com/arcticicestudio/nord-visual-studio-code"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.imgabe ]; + }; + }; + + arjun.swagger-viewer = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "Arjun"; + name = "swagger-viewer"; + version = "3.1.2"; + sha256 = "1cjvc99x1q5w3i2vnbxrsl5a1dr9gb3s6s9lnwn6mq5db6iz1nlm"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + arrterian.nix-env-selector = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "nix-env-selector"; + publisher = "arrterian"; + version = "1.0.9"; + sha256 = "sha256-TkxqWZ8X+PAonzeXQ+sI9WI+XlqUHll7YyM7N9uErk0="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + asciidoctor.asciidoctor-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "asciidoctor-vscode"; + publisher = "asciidoctor"; + version = "2.8.9"; + sha256 = "1xkxx5i3nhd0dzqhhdmx0li5jifsgfhv0p5h7xwsscz3gzgsdcyb"; + }; + + postPatch = '' + substituteInPlace dist/src/text-parser.js \ + --replace "get('asciidoctor_command', 'asciidoctor')" \ + "get('asciidoctor_command', '${asciidoctor}/bin/asciidoctor')" + substituteInPlace dist/src/commands/exportAsPDF.js \ + --replace "get('asciidoctorpdf_command', 'asciidoctor-pdf')" \ + "get('asciidoctorpdf_command', '${asciidoctor}/bin/asciidoctor-pdf')" + ''; + + meta = { + license = lib.licenses.mit; + }; + }; + + asdine.cue = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "cue"; + publisher = "asdine"; + version = "0.3.2"; + sha256 = "sha256-jMXqhgjRdM3UG/9NtiwWAg61mBW8OYVAKDWgb4hzhA4="; + }; + meta = { + description = "Cue language support for Visual Studio Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=asdine.cue"; + homepage = "https://github.com/asdine/vscode-cue"; + changelog = "https://marketplace.visualstudio.com/items/asdine.cue/changelog"; + license = lib.licenses.mit; + maintainers = [lib.maintainers.matthewpi]; + }; + }; + + astro-build.astro-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "astro-vscode"; + publisher = "astro-build"; + version = "1.0.6"; + sha256 = "sha256-/gpZtOO8MA/MJ1o9eG4qmPqhWRZ5E+elA9Rr/kpOprI="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/astro-build.astro-vscode/changelog"; + description = "Astro language support for VSCode"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=astro-build.astro-vscode"; + homepage = "https://github.com/withastro/language-tools"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.wackbyte ]; + }; + }; + + asvetliakov.vscode-neovim = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-neovim"; + publisher = "asvetliakov"; + version = "0.0.97"; + sha256 = "sha256-rNGW8WB3jBSjThiB0j4/ORKMRAaxFiMiBfaa+dbGu/w="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + attilabuti.brainfuck-syntax = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "brainfuck-syntax"; + publisher = "attilabuti"; + version = "0.0.1"; + sha256 = "sha256-ZcZlHoa2aoCeruMWbUUgfFHsPqyWmd2xFY6AKxJysYE="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/attilabuti.brainfuck-syntax/changelog"; + description = "VSCode extension providing syntax highlighting support for Brainfuck"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=attilabuti.brainfuck-syntax"; + homepage = "https://github.com/attilabuti/brainfuck-syntax"; + license = lib.licenses.mit; + maintainers = [ ]; + }; + }; + + azdavis.millet = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "Millet"; + publisher = "azdavis"; + version = "0.3.5"; + sha256 = "sha256-lQ7EMs6nsTEgP9BESMpyoZG7QVOe7DXzfg/iZr1+DCQ="; + }; + nativeBuildInputs = [ jq moreutils ]; + postInstall = '' + cd "$out/$installPrefix" + jq '.contributes.configuration.properties."millet.server.path".default = "${millet}/bin/lang-srv"' package.json | sponge package.json + ''; + meta = { + description = "Standard ML support for VS Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=azdavis.millet"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.smasher164 ]; + }; + }; + + b4dm4n.vscode-nixpkgs-fmt = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "nixpkgs-fmt"; + publisher = "B4dM4n"; + version = "0.0.1"; + sha256 = "sha256-vz2kU36B1xkLci2QwLpl/SBEhfSWltIDJ1r7SorHcr8="; + }; + nativeBuildInputs = [ jq moreutils ]; + postInstall = '' + cd "$out/$installPrefix" + jq '.contributes.configuration.properties."nixpkgs-fmt.path".default = "${nixpkgs-fmt}/bin/nixpkgs-fmt"' package.json | sponge package.json + ''; + meta = { + license = lib.licenses.mit; + }; + }; + + baccata.scaladex-search = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "scaladex-search"; + publisher = "baccata"; + version = "0.3.3"; + sha256 = "sha256-+793uA+cSBHV6t4wAM4j4GeWggLJTl2GENkn8RFIwr0="; + }; + meta = { + license = lib.licenses.asl20; + }; + }; + + badochov.ocaml-formatter = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "ocaml-formatter"; + publisher = "badochov"; + version = "2.0.5"; + sha256 = "sha256-D04EJButnam/l4aAv1yNbHlTKMb3x1yrS47+9XjpCLI="; + }; + meta = { + description = "VSCode Extension Formatter for OCaml language"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=badochov.ocaml-formatter"; + homepage = "https://github.com/badochov/ocamlformatter-vscode"; + license = lib.licenses.mit; + maintainers = [ ]; + }; + }; + + ban.spellright = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "ban"; + name = "spellright"; + version = "3.0.112"; + sha256 = "sha256-79Yg4I0OkfG7PaDYnTA8HK8jrSxre4FGriq0Baiq7wA="; + }; + meta = { + description = "A Visual Studio Code extension for Spellchecker"; + changelog = "https://marketplace.visualstudio.com/items/ban.spellright/changelog"; + homepage = "https://github.com/bartosz-antosik/vscode-spellright"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ onedragon ]; + }; + }; + + bbenoist.nix = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "Nix"; + publisher = "bbenoist"; + version = "1.0.1"; + sha256 = "0zd0n9f5z1f0ckzfjr38xw2zzmcxg1gjrava7yahg5cvdcw6l35b"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + benfradet.vscode-unison = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-unison"; + publisher = "benfradet"; + version = "0.4.0"; + sha256 = "sha256-IDM9v+LWckf20xnRTj+ThAFSzVxxDVQaJkwO37UIIhs="; + }; + meta = { + license = lib.licenses.asl20; + }; + }; + + betterthantomorrow.calva = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "calva"; + publisher = "betterthantomorrow"; + version = "2.0.205"; + sha256 = "sha256-umnG1uLB42fUNKjANaKcABjVmqbdOQakd/6TPsEpF9c"; + }; + nativeBuildInputs = [ jq moreutils ]; + postInstall = '' + cd "$out/$installPrefix" + jq '.contributes.configuration[0].properties."calva.clojureLspPath".default = "${clojure-lsp}/bin/clojure-lsp"' package.json | sponge package.json + ''; + meta = { + license = lib.licenses.mit; + }; + }; + + bierner.emojisense = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "emojisense"; + publisher = "bierner"; + version = "0.9.1"; + sha256 = "sha256-bfhImi2qMHWkgKqkoStS0NtbXTfj6GpcLkI0PSMjuvg="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + bierner.markdown-checkbox = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "markdown-checkbox"; + publisher = "bierner"; + version = "0.4.0"; + sha256 = "sha256-AoPcdN/67WOzarnF+GIx/nans38Jan8Z5D0StBWIbkk="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + bierner.markdown-emoji = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "markdown-emoji"; + publisher = "bierner"; + version = "0.3.0"; + sha256 = "sha256-rw8/HeDA8kQuiPVDpeOGw1Mscd6vn4utw1Qznsd8lVI="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + bierner.markdown-mermaid = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "markdown-mermaid"; + publisher = "bierner"; + version = "1.17.7"; + sha256 = "sha256-WKe7XxBeYyzmjf/gnPH+5xNOHNhMPAKjtLorYyvT76U="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + bmalehorn.vscode-fish = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-fish"; + publisher = "bmalehorn"; + version = "1.0.33"; + sha256 = "sha256-ZQlG+HrjU4DFfpyiY8o0/ayDms6MGEObW8pV1Lmr5/Y="; + }; + meta.license = lib.licenses.mit; + }; + + bmewburn.vscode-intelephense-client = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-intelephense-client"; + publisher = "bmewburn"; + version = "1.9.5"; + sha256 = "sha256-KqWSQ+p5KqRVULwjoWuNE+lIEYkaUVkeOwMpXUxccqw="; + }; + meta = { + description = "PHP code intelligence for Visual Studio Code"; + license = lib.licenses.mit; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=bmewburn.vscode-intelephense-client"; + maintainers = [ lib.maintainers.drupol ]; + }; + }; + + bodil.file-browser = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "file-browser"; + publisher = "bodil"; + version = "0.2.11"; + sha256 = "sha256-yPVhhsAUZxnlhj58fXkk+yhxop2q7YJ6X4W9dXGKJfo="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + bradlc.vscode-tailwindcss = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-tailwindcss"; + publisher = "bradlc"; + version = "0.9.9"; + sha256 = "sha256-QyB6DtKe9KH2UizLZQfP4YlHz2yF8H9Ehj+M+OdIYe4="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + brettm12345.nixfmt-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "nixfmt-vscode"; + publisher = "brettm12345"; + version = "0.0.1"; + sha256 = "07w35c69vk1l6vipnq3qfack36qcszqxn8j3v332bl0w6m02aa7k"; + }; + meta = { + license = lib.licenses.mpl20; + }; + }; + + bungcip.better-toml = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "better-toml"; + publisher = "bungcip"; + version = "0.3.2"; + sha256 = "sha256-g+LfgjAnSuSj/nSmlPdB0t29kqTmegZB5B1cYzP8kCI="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/bungcip.better-toml/changelog"; + description = "Better TOML Language support"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=bungcip.better-toml"; + homepage = "https://github.com/bungcip/better-toml/blob/master/README.md"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.datafoo ]; + }; + }; + + catppuccin = { + catppuccin-vsc = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "catppuccin-vsc"; + publisher = "catppuccin"; + version = "2.6.1"; + sha256 = "sha256-B56b7PeuVnkxEqvd4vL9TYO7s8fuA+LOCTbJQD9e7wY="; + }; + meta = { + description = "Soothing pastel theme for VSCode"; + license = lib.licenses.mit; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=Catppuccin.catppuccin-vsc"; + maintainers = [ lib.maintainers.nullx76 ]; + }; + }; + catppuccin-vsc-icons = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "catppuccin-vsc-icons"; + publisher = "catppuccin"; + version = "0.12.0"; + sha256 = "sha256-i47tY6DSVtV8Yf6AgZ6njqfhaUFGEpgbRcBF70l2Xe0="; + }; + meta = { + description = "Soothing pastel icon theme for VSCode"; + license = lib.licenses.mit; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=Catppuccin.catppuccin-vsc-icons"; + maintainers = [ lib.maintainers.laurent-f1z1 ]; + }; + }; + }; + + charliermarsh.ruff = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "ruff"; + publisher = "charliermarsh"; + version = "2023.16.0"; + sha256 = "sha256-MCRfG2CmGXLX15Qv/cxuH8VE1lJLPs4tXlCNnFqm5lc="; + }; + meta = { + license = lib.licenses.mit; + changelog = "https://github.com/charliermarsh/ruff-vscode/releases"; + description = "Ruff extension for Visual Studio Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff"; + homepage = "https://github.com/charliermarsh/ruff-vscode/"; + maintainers = [ lib.maintainers.azd325 ]; + }; + }; + + chenglou92.rescript-vscode = callPackage ./chenglou92.rescript-vscode { }; + + chris-hayes.chatgpt-reborn = buildVscodeMarketplaceExtension { + meta = { + changelog = "https://marketplace.visualstudio.com/items/chris-hayes.chatgpt-reborn/changelog"; + description = "A Visual Studio Code extension to support ChatGPT, GPT-3 and Codex conversations"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=chris-hayes.chatgpt-reborn"; + homepage = "https://github.com/christopher-hayes/vscode-chatgpt-reborn"; + license = lib.licenses.isc; + maintainers = [ lib.maintainers.drupol ]; + }; + mktplcRef = { + name = "chatgpt-reborn"; + publisher = "chris-hayes"; + version = "3.16.3"; + sha256 = "wkitG5gmYKYKXRw/zVW04HN1dePiTjbnynFOY/bwxfI="; + }; + }; + + christian-kohler.path-intellisense = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "path-intellisense"; + publisher = "christian-kohler"; + version = "2.8.4"; + sha256 = "sha256-FEBYcjJHOwmxVHhhyxqOpk/V6hvtMkhkvLVpmJCMSZw="; + }; + meta = { + description = "Visual Studio Code plugin that autocompletes filenames"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense"; + homepage = "https://github.com/ChristianKohler/PathIntellisense"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.imgabe ]; + }; + }; + + cmschuetz12.wal = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "wal"; + publisher = "cmschuetz12"; + version = "0.1.0"; + sha256 = "0q089jnzqzhjfnv0vlb5kf747s3mgz64r7q3zscl66zb2pz5q4zd"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + coder.coder-remote = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "coder-remote"; + publisher = "coder"; + version = "0.1.18"; + sha256 = "soNGZuyvG5+haWRcwYmYB+0OcyDAm4UQ419UnEd8waA="; + }; + meta = { + description = "An extension for Visual Studio Code to open any Coder workspace in VS Code with a single click."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=coder.coder-remote"; + homepage = "https://github.com/coder/vscode-coder"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.drupol ]; + }; + }; + + codezombiech.gitignore = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "gitignore"; + publisher = "codezombiech"; + version = "0.9.0"; + sha256 = "sha256-IHoF+c8Rsi6WnXoCX7x3wKyuMwLh14nbL9sNVJHogHM="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + w88975.code-translate = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "code-translate"; + publisher = "w88975"; + version = "1.0.20"; + sha256 = "sha256-blqLK7S+RmEoyr9zktS5/SNC0GeSXnNpbhltyajoAfw="; + }; + meta = { + description = "A Visual Studio Code extension to provide purely hover translation"; + longDescription = '' + Code Translate is a purely hover translation extension + - Non-intrusive display of translation results: perfectly integrated with VS Code code analysis. + - Powerful word splitting capabilities: supports various forms of word splitting such as camel case and underscore. + - Rich local vocabulary: includes 3.4+ million offline words, supporting various rare words. + - Based on a rich local vocabulary: Code Translate has super-fast query speed, with each word typically queried in less than 10ms. + - Multi-platform support: supports both the desktop version and online version of VS Code, and the plugin can be used on both versions. + ''; + homepage = "https://github.com/w88975/code-translate-vscode"; + changelog = "https://marketplace.visualstudio.com/items/w88975.code-translate/changelog"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ onedragon ]; + }; + }; + + colejcummins.llvm-syntax-highlighting = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "llvm-syntax-highlighting"; + publisher = "colejcummins"; + version = "0.0.3"; + sha256 = "sha256-D5zLp3ruq0F9UFT9emgOBDLr1tya2Vw52VvCc40TtV0="; + }; + meta = { + description = "Lightweight syntax highlighting for LLVM IR"; + homepage = "https://github.com/colejcummins/llvm-syntax-highlighting"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=colejcummins.llvm-syntax-highlighting"; + maintainers = [ lib.maintainers.inclyc ]; + license = lib.licenses.mit; + }; + }; + + contextmapper.context-mapper-vscode-extension = callPackage ./contextmapper.context-mapper-vscode-extension { }; + + coolbear.systemd-unit-file = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "coolbear"; + name = "systemd-unit-file"; + version = "1.0.6"; + sha256 = "0sc0zsdnxi4wfdlmaqwb6k2qc21dgwx6ipvri36x7agk7m8m4736"; + }; + meta = { + license = lib.licenses.mit; + maintainers = [ lib.maintainers.kamadorueda ]; + }; + }; + + cweijan.vscode-database-client2 = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-database-client2"; + publisher = "cweijan"; + version = "6.3.0"; + sha256 = "sha256-BFTY3NZQd6XTE3UNO1bWo/LiM4sHujFGOSufDLD4mzM="; + }; + meta = { + description = "Database Client For Visual Studio Code"; + homepage = "https://marketplace.visualstudio.com/items?itemName=cweijan.vscode-mysql-client2"; + license = lib.licenses.mit; + }; + }; + + daohong-emilio.yash = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "daohong-emilio"; + name = "yash"; + version = "0.2.9"; + sha256 = "sha256-5JX6Z7xVPoqGjD1/ySc9ObD14O1sWDpvBj9VbtGO1Cg="; + }; + meta = { + license = lib.licenses.mit; + maintainers = [ lib.maintainers.kamadorueda ]; + }; + }; + + dart-code.dart-code = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "dart-code"; + publisher = "dart-code"; + version = "3.61.20230324"; + sha256 = "sha256-VVQ32heyzLjM5HdeNAK5PwqB1NsSQ9iQJBwJiJXlu+g="; + }; + + meta.license = lib.licenses.mit; + }; + + dart-code.flutter = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "flutter"; + publisher = "dart-code"; + version = "3.61.20230301"; + sha256 = "sha256-t4AfFgxVCl15YOz7NTULvNUcyuiQilEP6jPK4zMAAmc="; + }; + + meta.license = lib.licenses.mit; + }; + + davidanson.vscode-markdownlint = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-markdownlint"; + publisher = "DavidAnson"; + version = "0.50.0"; + sha256 = "sha256-F+lryIhSudDz68t1eGrfqI8EuoUUOWU5LfWj0IRCQyY="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/DavidAnson.vscode-markdownlint/changelog"; + description = "Markdown linting and style checking for Visual Studio Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint"; + homepage = "https://github.com/DavidAnson/vscode-markdownlint"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.datafoo ]; + }; + }; + + davidlday.languagetool-linter = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "languagetool-linter"; + publisher = "davidlday"; + version = "0.19.0"; + sha256 = "sha256-crq6CTXpzwHJL8FPIBneAGjDgUUNdpBt6rIaMCr1F1U="; + }; + meta = { + description = "LanguageTool integration for VS Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=davidlday.languagetool-linter"; + homepage = "https://github.com/davidlday/vscode-languagetool-linter"; + license = lib.licenses.asl20; + maintainers = [ lib.maintainers.ebbertd ]; + }; + }; + + dbaeumer.vscode-eslint = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-eslint"; + publisher = "dbaeumer"; + version = "2.4.0"; + sha256 = "sha256-7MUQJkLPOF3oO0kpmfP3bWbS3aT7J0RF7f74LW55BQs="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/dbaeumer.vscode-eslint/changelog"; + description = "Integrates ESLint JavaScript into VS Code."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint"; + homepage = "https://github.com/Microsoft/vscode-eslint"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.datafoo ]; + }; + }; + + denoland.vscode-deno = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-deno"; + publisher = "denoland"; + version = "3.17.0"; + sha256 = "sha256-ETwpUrYbPXHSkEBq2oM1aCBwt9ItLcXMYc3YWjHLiJE="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/denoland.vscode-deno/changelog"; + description = "A language server client for Deno"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=denoland.vscode-deno"; + homepage = "https://github.com/denoland/vscode_deno"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.ratsclub ]; + }; + }; + + devsense.composer-php-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "composer-php-vscode"; + publisher = "devsense"; + version = "1.33.13032"; + sha256 = "sha256-4SL7hPcnxN6Bq0Cclaszk2zlYF1xR2w/8zaJo16OT+U="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/DEVSENSE.composer-php-vscode/changelog"; + description = "A visual studio code extension for full development integration for Composer, the PHP package manager."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=DEVSENSE.composer-php-vscode"; + homepage = "https://github.com/DEVSENSE/phptools-docs"; + license = lib.licenses.asl20; + maintainers = [ lib.maintainers.drupol ]; + }; + }; + + devsense.phptools-vscode = buildVscodeMarketplaceExtension { + mktplcRef = let + sources = { + "x86_64-linux" = { + arch = "linux-x64"; + sha256 = "sha256-ccMkaXppkgdsN2XtSFaw85xLUCFMDF1z+XidP0KAHCA="; + }; + "x86_64-darwin" = { + arch = "darwin-x64"; + sha256 = "17lsf736jagw2q6dwxvpj2dspiqrlyvmmhv6p6cf81vxijpgmq9d"; + }; + "aarch64-linux" = { + arch = "linux-arm64"; + sha256 = "1cnfzzpikcsp1l1a8amim0fz5r1pkszn231cfl745ggiksbjyhsp"; + }; + "aarch64-darwin" = { + arch = "darwin-arm64"; + sha256 = "0jli6l9qrssnpm5a3m1g7g1dw2i5bv9wxd0gqg6vda7dwfs2f494"; + }; + }; + in { + name = "phptools-vscode"; + publisher = "devsense"; + version = "1.33.13032"; + } // sources.${stdenv.system}; + + nativeBuildInputs = [ + autoPatchelfHook + ]; + + buildInputs = [ + zlib + stdenv.cc.cc.lib + ]; + + postInstall = '' + chmod +x $out/share/vscode/extensions/devsense.phptools-vscode/out/server/devsense.php.ls + ''; + + meta = { + changelog = "https://marketplace.visualstudio.com/items/DEVSENSE.phptools-vscode/changelog"; + description = "A visual studio code extension for full development integration for the PHP language."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=DEVSENSE.phptools-vscode"; + homepage = "https://github.com/DEVSENSE/phptools-docs"; + license = lib.licenses.asl20; + maintainers = [ lib.maintainers.drupol ]; + platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" ]; + }; + }; + + devsense.profiler-php-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "profiler-php-vscode"; + publisher = "devsense"; + version = "1.33.13032"; + sha256 = "sha256-P0lzZkCHtLHJI/gwB+wbrZPR3OOia5VxTMCC2ZQULBg="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/DEVSENSE.profiler-php-vscode/changelog"; + description = "A visual studio code extension for PHP and XDebug profiling and inspecting."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=DEVSENSE.profiler-php-vscode"; + homepage = "https://github.com/DEVSENSE/phptools-docs"; + license = lib.licenses.asl20; + maintainers = [ lib.maintainers.drupol ]; + }; + }; + + dhall.dhall-lang = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "dhall-lang"; + publisher = "dhall"; + version = "0.0.4"; + sha256 = "0sa04srhqmngmw71slnrapi2xay0arj42j4gkan8i11n7bfi1xpf"; + }; + meta = { license = lib.licenses.mit; }; + }; + + dhall.vscode-dhall-lsp-server = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-dhall-lsp-server"; + publisher = "dhall"; + version = "0.0.4"; + sha256 = "1zin7s827bpf9yvzpxpr5n6mv0b5rhh3civsqzmj52mdq365d2js"; + }; + meta = { license = lib.licenses.mit; }; + }; + + disneystreaming.smithy = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "disneystreaming"; + name = "smithy"; + version = "0.0.8"; + sha256 = "sha256-BQPiSxiPPjdNPtIJI8L+558DVKxngPAI9sscpcJSJUI="; + }; + meta = { license = lib.licenses.asl20; }; + }; + + divyanshuagrawal.competitive-programming-helper = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "competitive-programming-helper"; + publisher = "DivyanshuAgrawal"; + version = "5.10.0"; + sha256 = "sha256-KALTldVaptKt8k2Y6PMqhJEMrayB4yn86x2CxHn6Ba0="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/DivyanshuAgrawal.competitive-programming-helper/changelog"; + description = "Makes judging, compiling, and downloading problems for competitve programming easy. Also supports auto-submit for a few sites."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=DivyanshuAgrawal.competitive-programming-helper"; + homepage = "https://github.com/agrawal-d/cph"; + license = lib.licenses.gpl3; + maintainers = [ lib.maintainers.arcticlimer ]; + }; + }; + + donjayamanne.githistory = buildVscodeMarketplaceExtension { + meta = { + changelog = "https://marketplace.visualstudio.com/items/donjayamanne.githistory/changelog"; + description = "View git log, file history, compare branches or commits"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=donjayamanne.githistory"; + homepage = "https://github.com/DonJayamanne/gitHistoryVSCode/"; + license = lib.licenses.mit; + maintainers = [ ]; + }; + mktplcRef = { + name = "githistory"; + publisher = "donjayamanne"; + version = "0.6.20"; + sha256 = "sha256-nEdYS9/cMS4dcbFje23a47QBZr9eDK3dvtkFWqA+OHU="; + }; + }; + + dotjoshjohnson.xml = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "xml"; + publisher = "dotjoshjohnson"; + version = "2.5.1"; + sha256 = "1v4x6yhzny1f8f4jzm4g7vqmqg5bqchyx4n25mkgvw2xp6yls037"; + }; + meta = { + description = "XML Tools"; + homepage = "https://github.com/DotJoshJohnson/vscode-xml"; + license = lib.licenses.mit; + }; + }; + + dracula-theme.theme-dracula = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "theme-dracula"; + publisher = "dracula-theme"; + version = "2.24.2"; + sha256 = "sha256-YNqWEIvlEI29mfPxOQVdd4db9G2qNodhz8B0MCAAWK8="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/dracula-theme.theme-dracula/changelog"; + description = "Dark theme for many editors, shells, and more"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=dracula-theme.theme-dracula"; + homepage = "https://draculatheme.com/"; + license = lib.licenses.mit; + }; + }; + + eamodio.gitlens = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "gitlens"; + publisher = "eamodio"; + # Stable versions are listed on the GitHub releases page and use a + # semver scheme, contrary to preview versions which are listed on + # the VSCode Marketplace and use a calver scheme. We should avoid + # using preview versions, because they expire after two weeks. + version = "13.4.0"; + sha256 = "sha256-CYI62sWPlJNRP2KIkg4vQutIMC6gaCxtTVoOWZIS8Lw="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/eamodio.gitlens/changelog"; + description = "GitLens supercharges the Git capabilities built into Visual Studio Code."; + longDescription = '' + Supercharge the Git capabilities built into Visual Studio Code — Visualize code authorship at a glance via Git + blame annotations and code lens, seamlessly navigate and explore Git repositories, gain valuable insights via + powerful comparison commands, and so much more + ''; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens"; + homepage = "https://gitlens.amod.io/"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.ratsclub ]; + }; + }; + + editorconfig.editorconfig = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "EditorConfig"; + publisher = "EditorConfig"; + version = "0.16.4"; + sha256 = "0fa4h9hk1xq6j3zfxvf483sbb4bd17fjl5cdm3rll7z9kaigdqwg"; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/EditorConfig.EditorConfig/changelog"; + description = "EditorConfig Support for Visual Studio Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig"; + homepage = "https://github.com/editorconfig/editorconfig-vscode"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.dbirks ]; + }; + }; + + edonet.vscode-command-runner = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-command-runner"; + publisher = "edonet"; + version = "0.0.123"; + sha256 = "sha256-Fq0KgW5N6urj8hMUs6Spidy47jwIkpkmBUlpXMVnq7s="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + eg2.vscode-npm-script = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-npm-script"; + publisher = "eg2"; + version = "0.3.29"; + sha256 = "sha256-k6DtmhYBj7mg8SUU3pg+ezRzWvhiECqYQVj9LDhhV4I="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + elixir-lsp.vscode-elixir-ls = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "elixir-ls"; + publisher = "JakeBecker"; + version = "0.14.7"; + sha256 = "sha256-RkwgQqasBKMA+0293QhbZhgyGSqhJSic5DuIpBB+OEA="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/JakeBecker.elixir-ls/changelog"; + description = "Elixir support with debugger, autocomplete, and more. Powered by ElixirLS."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=JakeBecker.elixir-ls"; + homepage = "https://github.com/elixir-lsp/elixir-ls"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.datafoo ]; + }; + }; + + elmtooling.elm-ls-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "elm-ls-vscode"; + publisher = "Elmtooling"; + version = "2.6.0"; + sha256 = "sha256-iNFc7YJFl3d4/BJE9TPJfL0iqEkUtyEyVt4v1J2bXts="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/Elmtooling.elm-ls-vscode/changelog"; + description = "Elm language server"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=Elmtooling.elm-ls-vscode"; + homepage = "https://github.com/elm-tooling/elm-language-client-vscode"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.mcwitt ]; + }; + }; + + emmanuelbeziat.vscode-great-icons = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-great-icons"; + publisher = "emmanuelbeziat"; + version = "2.1.92"; + sha256 = "sha256-cywFx33oTQZxFUxL9qCpV12pV2tP0ujR4osCdtSOOTc="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + equinusocio.vsc-material-theme = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vsc-material-theme"; + publisher = "Equinusocio"; + version = "33.8.0"; + sha256 = "sha256-+I4AUwsrElT62XNvmuAC2iBfHfjNYY0bmAqzQvfwUYM="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/Equinusocio.vsc-material-theme/changelog"; + description = "The most epic theme now for Visual Studio Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=Equinusocio.vsc-material-theme"; + homepage = "https://github.com/material-theme/vsc-material-theme"; + license = lib.licenses.asl20; + maintainers = [ lib.maintainers.stunkymonkey ]; + }; + }; + + esbenp.prettier-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "prettier-vscode"; + publisher = "esbenp"; + version = "9.13.0"; + sha256 = "sha256-Iqz1O6odSzAfojCgGDwDA1YtnWU5Ei7vx9Qt25/1SLw="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/esbenp.prettier-vscode/changelog"; + description = "Code formatter using prettier"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode"; + homepage = "https://github.com/prettier/prettier-vscode"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.datafoo ]; + }; + }; + + ethansk.restore-terminals = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "restore-terminals"; + publisher = "ethansk"; + version = "1.1.8"; + sha256 = "sha256-pZK/QNomQoFRsL6LRIKvWQj8/SYo2ZdVU47Gsmb9MXo="; + }; + }; + + eugleo.magic-racket = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "magic-racket"; + publisher = "evzen-wybitul"; + version = "0.6.4"; + sha256 = "sha256-Hxa4VPm3QvJICzpDyfk94fGHu1hr+YN9szVBwDB8X4U="; + }; + nativeBuildInputs = [ jq moreutils ]; + postInstall = '' + cd "$out/$installPrefix" + jq '.contributes.configuration.properties."magicRacket.general.racketPath".default = "${racket}/bin/racket"' package.json | sponge package.json + jq '.contributes.configuration.properties."magicRacket.general.racoPath".default = "${racket}/bin/raco"' package.json | sponge package.json + ''; + meta = { + changelog = "https://marketplace.visualstudio.com/items/evzen-wybitul.magic-racket/changelog"; + description = "The best coding experience for Racket in VS Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=evzen-wybitul.magic-racket"; + homepage = "https://github.com/Eugleo/magic-racket"; + license = lib.licenses.agpl3Only; + }; + }; + + ExiaHuang.dictionary = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "ExiaHuang"; + name = "dictionary"; + version = "0.0.2"; + sha256 = "sha256-caNcbDTB/F2mdlGpfIfJv13lzY5Wwj7p7r8dAte9+3A="; + }; + meta = { + description = "A Visual Studio Code extension of using chinese-english dictonary in right-click menu"; + homepage = "https://github.com/exiahuang/fanyi-vscode"; + changelog = "https://marketplace.visualstudio.com/items/ExiaHuang.dictionary/changelog"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ onedragon ]; + }; + }; + + file-icons.file-icons = buildVscodeMarketplaceExtension { + meta = { + changelog = "https://marketplace.visualstudio.com/items/file-icons.file-icons/changelog"; + description = "File-specific icons in VSCode for improved visual grepping."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=file-icons.file-icons"; + homepage = "https://github.com/file-icons/vscode"; + license = lib.licenses.mit; + maintainers = [ ]; + }; + mktplcRef = { + name = "file-icons"; + publisher = "file-icons"; + version = "1.0.29"; + sha256 = "05x45f9yaivsz8a1ahlv5m8gy2kkz71850dhdvwmgii0vljc8jc6"; + }; + }; + + firefox-devtools.vscode-firefox-debug = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-firefox-debug"; + publisher = "firefox-devtools"; + version = "2.9.8"; + sha256 = "sha256-MCL562FPgEfhUM1KH5LMl7BblbjIkQ4UEwB67RlO5Mk="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/firefox-devtools.vscode-firefox-debug/changelog"; + description = "A Visual Studio Code extension for debugging web applications and browser extensions in Firefox"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=firefox-devtools.vscode-firefox-debug"; + homepage = "https://github.com/firefox-devtools/vscode-firefox-debug"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.felschr ]; + }; + }; + + foam.foam-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "foam-vscode"; + publisher = "foam"; + version = "0.21.1"; + sha256 = "sha256-Ff1g+Qu4nUGR3g5PqOwP7W6S+3jje9gz1HK8J0+B65w="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/foam.foam-vscode/changelog"; + description = "A personal knowledge management and sharing system for VSCode "; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=foam.foam-vscode"; + homepage = "https://foambubble.github.io/"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.ratsclub ]; + }; + }; + + formulahendry.auto-close-tag = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "auto-close-tag"; + publisher = "formulahendry"; + version = "0.5.14"; + sha256 = "sha256-XYYHS2QTy8WYjtUYYWsIESzmH4dRQLlXQpJq78BolMw="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + formulahendry.auto-rename-tag = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "auto-rename-tag"; + publisher = "formulahendry"; + version = "0.1.10"; + sha256 = "sha256-uXqWebxnDwaUVLFG6MUh4bZ7jw5d2rTHRm5NoR2n0Vs="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + formulahendry.code-runner = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "code-runner"; + publisher = "formulahendry"; + version = "0.12.0"; + sha256 = "sha256-Q2gcuclG7NLR81HjKj/0RF0jM5Eqe2vZMbpoabp/osg="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + foxundermoon.shell-format = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "shell-format"; + publisher = "foxundermoon"; + version = "7.1.0"; + sha256 = "09z72mdr5bfdcb67xyzlv7lb9vyjlc3k9ackj4jgixfk40c68cnj"; + }; + + nativeBuildInputs = [ jq moreutils ]; + + postInstall = '' + cd "$out/$installPrefix" + jq '.contributes.configuration.properties."shellformat.path".default = "${shfmt}/bin/shfmt"' package.json | sponge package.json + ''; + + meta = { + downloadPage = "https://marketplace.visualstudio.com/items?itemName=foxundermoon.shell-format"; + homepage = "https://github.com/foxundermoon/vs-shell-format"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.dbirks ]; + }; + }; + + freebroccolo.reasonml = buildVscodeMarketplaceExtension { + meta = { + changelog = "https://marketplace.visualstudio.com/items/freebroccolo.reasonml/changelog"; + description = "Reason support for Visual Studio Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=freebroccolo.reasonml"; + homepage = "https://github.com/reasonml-editor/vscode-reasonml"; + license = lib.licenses.asl20; + maintainers = [ ]; + }; + mktplcRef = { + name = "reasonml"; + publisher = "freebroccolo"; + version = "1.0.38"; + sha256 = "1nay6qs9vcxd85ra4bv93gg3aqg3r2wmcnqmcsy9n8pg1ds1vngd"; + }; + }; + + funkyremi.vscode-google-translate = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "funkyremi"; + name = "vscode-google-translate"; + version = "1.4.13"; + sha256 = "sha256-9Vo6lwqD1eE3zY0Gi9ME/6lPwmwuJ3Iq9StHPvncnM4="; + }; + meta = { + description = "A Visual Studio Code extension using google translation to helping you quickly translate text right in your code rocket"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=funkyremi.vscode-google-translate"; + homepage = "https://github.com/funkyremi/vscode-google-translate.git"; + changelog = "https://marketplace.visualstudio.com/items/funkyremi.vscode-google-translate/changelog"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ onedragon ]; + }; + }; + + gencer.html-slim-scss-css-class-completion = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "html-slim-scss-css-class-completion"; + publisher = "gencer"; + version = "1.7.8"; + sha256 = "18qws35qvnl0ahk5sxh4mzkw0ib788y1l97ijmpjszs0cd4bfsa6"; + }; + meta = { + description = "VSCode extension for SCSS"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=gencer.html-slim-scss-css-class-completion"; + homepage = "https://github.com/gencer/SCSS-Everywhere"; + license = lib.licenses.mit; + maintainers = [ ]; + }; + }; + + genieai.chatgpt-vscode = buildVscodeMarketplaceExtension { + meta = { + changelog = "https://marketplace.visualstudio.com/items/genieai.chatgpt-vscode/changelog"; + description = "A Visual Studio Code extension to support ChatGPT, GPT-3 and Codex conversations"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=genieai.chatgpt-vscode"; + homepage = "https://github.com/ai-genie/chatgpt-vscode"; + license = lib.licenses.isc; + maintainers = [ lib.maintainers.drupol ]; + }; + mktplcRef = { + name = "chatgpt-vscode"; + publisher = "genieai"; + version = "0.0.8"; + sha256 = "RKvmZkegFs4y+sEVaamPRO1F1E+k4jJyI0Q9XqKowrQ="; + }; + }; + + github.codespaces = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "github"; + name = "codespaces"; + version = "1.14.7"; + sha256 = "pcZGMxTVnMeD6rnNV0d9Wysk6MrYiYcJ+byuH9VR0ds="; + }; + meta = { license = lib.licenses.unfree; }; + }; + + github.copilot = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "github"; + name = "copilot"; + version = "1.86.82"; + sha256 = "isaqjrAmu/08gnNKQPeMV4Xc8u0Hx8gB2c78WE54kYQ="; + }; + meta = { + description = "GitHub Copilot uses OpenAI Codex to suggest code and entire functions in real-time right from your editor."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=GitHub.copilot"; + homepage = "https://github.com/features/copilot"; + license = lib.licenses.unfree; + maintainers = [ lib.maintainers.Zimmi48 ]; + }; + }; + + github.copilot-chat = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "github"; + name = "copilot-chat"; + version = "0.1.2023060101"; + sha256 = "sha256-g3UIcy2TpD3m8EamxneUXYAV/bbCPvPhOWdcuXPkK9g="; + }; + meta = { + description = "GitHub Copilot Chat is a companion extension to GitHub Copilot that houses experimental chat features"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat"; + homepage = "https://github.com/features/copilot"; + license = lib.licenses.unfree; + maintainers = [ lib.maintainers.laurent-f1z1 ]; + }; + }; + + github.github-vscode-theme = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "github-vscode-theme"; + publisher = "github"; + version = "6.3.4"; + sha256 = "sha256-JbI0B7jxt/2pNg/hMjAE5pBBa3LbUdi+GF0iEZUDUDM="; + }; + meta = { + description = "GitHub theme for VS Code"; + downloadPage = + "https://marketplace.visualstudio.com/items?itemName=GitHub.github-vscode-theme"; + homepage = "https://github.com/primer/github-vscode-theme"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.hugolgst ]; + }; + }; + + github.vscode-github-actions = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-github-actions"; + publisher = "github"; + version = "0.25.6"; + sha256 = "sha256-HRj/AQI9E6HDkZ2ok/h/+c9HHq1wVXQPAt5mb/Ij+BI="; + }; + meta = { + description = "A Visual Studio Code extension for GitHub Actions workflows and runs for github.com hosted repositories"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=github.vscode-github-actions"; + homepage = "https://github.com/github/vscode-github-actions"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.drupol ]; + }; + }; + + github.vscode-pull-request-github = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-pull-request-github"; + publisher = "github"; + # Stable versions are listed on the GitHub releases page and use a + # semver scheme, contrary to preview versions which are listed on + # the VSCode Marketplace and use a calver scheme. We should avoid + # using preview versions, because they can require insider versions + # of VS Code + version = "0.64.0"; + sha256 = "tgQD3o5uMbWofVx7FPyWT1yaeu2e4aPxterN4yXA33U="; + }; + meta = { license = lib.licenses.mit; }; + }; + + gitlab.gitlab-workflow = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "gitlab-workflow"; + publisher = "gitlab"; + version = "3.60.0"; + sha256 = "sha256-rH0+6sQfBfI8SrKY9GGtTOONdzKus6Z62E8Qv5xY7Fw="; + }; + meta = { + description = "GitLab extension for Visual Studio Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=gitlab.gitlab-workflow"; + homepage = "https://gitlab.com/gitlab-org/gitlab-vscode-extension#readme"; + license = lib.licenses.mit; + maintainers = [ ]; + }; + }; + + golang.go = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "Go"; + publisher = "golang"; + version = "0.38.0"; + sha256 = "sha256-wOWouVz4mE4BzmgQOLQyVWsMadMqeUkFWHnruxStU0Q="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + grapecity.gc-excelviewer = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "gc-excelviewer"; + publisher = "grapecity"; + version = "4.2.56"; + sha256 = "sha256-lrKkxaqPDouWzDP1uUE4Rgt9mI61jUOi/xZ85A0mnrk="; + }; + meta = { + description = "Edit Excel spreadsheets and CSV files in Visual Studio Code and VS Code for the Web"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=grapecity.gc-excelviewer"; + homepage = "https://github.com/jjuback/gc-excelviewer"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.kamadorueda ]; + }; + }; + + graphql.vscode-graphql = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-graphql"; + publisher = "GraphQL"; + version = "0.8.7"; + sha256 = "sha256-u3VcpgLKiEeUr1I6w71wleKyaO6v0gmHiw5Ama6fv88="; + }; + meta = { + description = "GraphQL extension for VSCode built with the aim to tightly integrate the GraphQL Ecosystem with VSCode for an awesome developer experience."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=GraphQL.vscode-graphql"; + homepage = "https://github.com/graphql/graphiql/tree/main/packages/vscode-graphql"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.Enzime ]; + }; + }; + + graphql.vscode-graphql-syntax = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-graphql-syntax"; + publisher = "GraphQL"; + version = "1.1.0"; + sha256 = "sha256-qazU0UyZ9de6Huj2AYZqqBo4jVW/ZQmFJhV7XXAblxo="; + }; + meta = { + description = "Adds full GraphQL syntax highlighting and language support such as bracket matching."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=GraphQL.vscode-graphql-syntax"; + homepage = "https://github.com/graphql/graphiql/tree/main/packages/vscode-graphql-syntax"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.Enzime ]; + }; + }; + + gruntfuggly.todo-tree = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "todo-tree"; + publisher = "Gruntfuggly"; + version = "0.0.224"; + sha256 = "sha256-ObFmzAaOlbtWC31JRYR/1y+JK1h22SVDPPRWWqPzrQs="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + hashicorp.terraform = callPackage ./hashicorp.terraform { }; + + haskell.haskell = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "haskell"; + publisher = "haskell"; + version = "2.2.2"; + sha256 = "sha256-zWdIVdz+kZg7KZQ7LeBCB4aB9wg8dUbkWfzGlM0Fq7Q="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + hookyqr.beautify = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "beautify"; + publisher = "HookyQR"; + version = "1.5.0"; + sha256 = "1c0kfavdwgwham92xrh0gnyxkrl9qlkpv39l1yhrldn8vd10fj5i"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + humao.rest-client = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "humao"; + name = "rest-client"; + version = "0.25.1"; + sha256 = "sha256-DSzZ9wGB0IVK8gYOzLLbT03WX3xSmR/IUVZkDzcczKc="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + ibm.output-colorizer = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "output-colorizer"; + publisher = "IBM"; + version = "0.1.2"; + sha256 = "0i9kpnlk3naycc7k8gmcxas3s06d67wxr3nnyv5hxmsnsx5sfvb7"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + iciclesoft.workspacesort = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "workspacesort"; + publisher = "iciclesoft"; + version = "1.6.2"; + sha256 = "sha256-ZsjBgoTr4LGQW0kn+CtbdLwpPHmlYl5LKhwXIzcPe2o="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/iciclesoft.workspacesort/changelog"; + description = "Sort workspace-folders alphabetically rather than in chronological order"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=iciclesoft.workspacesort"; + homepage = "https://github.com/iciclesoft/workspacesort-for-VSCode"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.dbirks ]; + }; + }; + + influxdata.flux = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "influxdata"; + name = "flux"; + version = "1.0.4"; + sha256 = "sha256-KIKROyfkosBS1Resgl+s3VENVg4ibaeIgKjermXESoA="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + intellsmi.comment-translate = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "intellsmi"; + name = "comment-translate"; + version = "2.2.4"; + sha256 = "sha256-g6mlScxv8opZuqgWtTJ3k0Yo7W7WzIkwB+8lWf6cMiU="; + }; + meta = { + description = "A Visual Studio Code extension to translate the comments for computer language"; + longDescription = '' + This plugin uses the Google Translate API to translate comments for the VSCode programming language. + ''; + homepage = "https://github.com/intellism/vscode-comment-translate/blob/HEAD/doc/README.md"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=intellsmi.comment-translate"; + changelog = "https://marketplace.visualstudio.com/items/intellsmi.comment-translate/changelog"; + maintainers = with lib.maintainers; [ onedragon ]; + license = lib.licenses.mit; + }; + }; + + ionide.ionide-fsharp = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "Ionide-fsharp"; + publisher = "Ionide"; + version = "7.5.4"; + sha256 = "sha256-cM3ssUzQnqt5WL8UaLYkrmfHscVa2sGa7/UWLXMIHGg="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/Ionide.Ionide-fsharp/changelog"; + description = "Enhanced F# Language Features for Visual Studio Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=Ionide.Ionide-fsharp"; + homepage = "https://ionide.io"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.ratsclub ]; + }; + }; + + irongeek.vscode-env = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-env"; + publisher = "irongeek"; + version = "0.1.0"; + sha256 = "sha256-URq90lOFtPCNfSIl2NUwihwRQyqgDysGmBc3NG7o7vk="; + }; + meta = { + description = "Adds formatting and syntax highlighting support for env files (.env) to Visual Studio Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=IronGeek.vscode-env"; + homepage = "https://github.com/IronGeek/vscode-env.git"; + license = lib.licenses.mit; + maintainers = [ ]; + }; + }; + + james-yu.latex-workshop = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "latex-workshop"; + publisher = "James-Yu"; + version = "9.10.0"; + sha256 = "s0+8952svPSA69M4H29zuIxUWV6xNRpIqLNd8pzGJhY="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/James-Yu.latex-workshop/changelog"; + description = "LaTeX Workshop Extension"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop"; + homepage = "https://github.com/James-Yu/LaTeX-Workshop"; + license = lib.licenses.mit; + maintainers = [ ]; + }; + }; + + janet-lang.vscode-janet = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-janet"; + publisher = "janet-lang"; + version = "0.0.2"; + sha256 = "sha256-oj0e++z2BtadIXOnTlocIIHliYweZ1iyrV08DwatfLI="; + }; + meta = { + description = "Janet language support for Visual Studio Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=janet-lang.vscode-janet"; + homepage = "https://github.com/janet-lang/vscode-janet"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.wackbyte ]; + }; + }; + + jdinhlife.gruvbox = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "gruvbox"; + publisher = "jdinhlife"; + version = "1.8.0"; + sha256 = "sha256-P4FbbcRcKWbnC86TSnzQaGn2gHWkDM9I4hj4GiHNPS4="; + }; + meta = { + description = "Gruvbox Theme"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=jdinhlife.gruvbox"; + homepage = "https://github.com/jdinhify/vscode-theme-gruvbox"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.imgabe ]; + }; + }; + + jebbs.plantuml = callPackage ./jebbs.plantuml { }; + + jellyedwards.gitsweep = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "jellyedwards"; + name = "gitsweep"; + version = "1.0.0"; + sha256 = "sha256-XBD8rN6E/0GjZ3zXgR45MN9v4PYrEXBSzN7+CcLrRsg="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/jellyedwards.gitsweep/changelog"; + description = "VS Code extension which allows you to easily exclude modified or new files so they don't get committed accidentally"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=jellyedwards.gitsweep"; + homepage = "https://github.com/jellyedwards/gitsweep"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.MatthieuBarthel ]; + }; + }; + + jkillian.custom-local-formatters = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "jkillian"; + name = "custom-local-formatters"; + version = "0.0.6"; + sha256 = "sha256-FYDkOuoiF/N24BFG9GOqtTDwq84txmaa1acdzfskf/c="; + }; + meta = { + license = lib.licenses.mit; + maintainers = [ lib.maintainers.kamadorueda ]; + }; + }; + + jnoortheen.nix-ide = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "nix-ide"; + publisher = "jnoortheen"; + version = "0.2.1"; + sha256 = "sha256-yC4ybThMFA2ncGhp8BYD7IrwYiDU3226hewsRvJYKy4="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/jnoortheen.nix-ide/changelog"; + description = "Nix language support with formatting and error report"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=jnoortheen.nix-ide"; + homepage = "https://github.com/jnoortheen/vscode-nix-ide"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.SuperSandro2000 ]; + }; + }; + + jock.svg = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "svg"; + publisher = "jock"; + version = "1.5.2"; + sha256 = "sha256-Ii2e65BJU+Vw3i8917dgZtGsiSn6qConu8SJ+IqF82U="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + johnpapa.vscode-peacock = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-peacock"; + publisher = "johnpapa"; + version = "4.2.2"; + sha256 = "1z9crpz025ha9hgc9mxxg3vyrsfpf9d16zm1vrf4q592j9156d2m"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + justusadam.language-haskell = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "language-haskell"; + publisher = "justusadam"; + version = "3.6.0"; + sha256 = "sha256-rZXRzPmu7IYmyRWANtpJp3wp0r/RwB7eGHEJa7hBvoQ="; + }; + meta = { + license = lib.licenses.bsd3; + }; + }; + + kahole.magit = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "magit"; + publisher = "kahole"; + version = "0.6.40"; + sha256 = "sha256-AwkjfKBlAl6hTRN1nE6UuUuDXMJUXXDK2+3YzUp9drc="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + kalebpace.balena-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "balena-vscode"; + publisher = "kalebpace"; + version = "0.1.3"; + sha256 = "sha256-CecEv19nEtnMe0KlCMNBM9ZAjbAVgPNUcZ6cBxHw44M="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/kalebpace.balena-vscode/changelog"; + description = "VS Code extension for integration with Balena"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=kalebpace.balena-vscode"; + homepage = "https://github.com/balena-vscode/balena-vscode"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.kalebpace ]; + }; + }; + + kamadorueda.alejandra = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "alejandra"; + publisher = "kamadorueda"; + version = "1.0.0"; + sha256 = "sha256-COlEjKhm8tK5XfOjrpVUDQ7x3JaOLiYoZ4MdwTL8ktk="; + }; + nativeBuildInputs = [ jq moreutils ]; + postInstall = '' + cd "$out/$installPrefix" + + jq -e ' + .contributes.configuration.properties."alejandra.program".default = + "${alejandra}/bin/alejandra" | + .contributes.configurationDefaults."alejandra.program" = + "${alejandra}/bin/alejandra" + ' \ + < package.json \ + | sponge package.json + ''; + meta = { + description = "The Uncompromising Nix Code Formatter"; + homepage = "https://github.com/kamadorueda/alejandra"; + license = lib.licenses.unlicense; + maintainers = [ lib.maintainers.kamadorueda ]; + }; + }; + + kamikillerto.vscode-colorize = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-colorize"; + publisher = "kamikillerto"; + version = "0.11.1"; + sha256 = "1h82b1jz86k2qznprng5066afinkrd7j3738a56idqr3vvvqnbsm"; + }; + meta = { + license = lib.licenses.asl20; + }; + }; + + kddejong.vscode-cfn-lint = + let + inherit (python3Packages) cfn-lint; + in + buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-cfn-lint"; + publisher = "kddejong"; + version = "0.21.0"; + sha256 = "sha256-IueXiN+077tiecAsVCzgYksWYTs00mZv6XJVMtRJ/PQ="; + }; + + nativeBuildInputs = [ jq moreutils ]; + + buildInputs = [ cfn-lint ]; + + postInstall = '' + cd "$out/$installPrefix" + jq '.contributes.configuration.properties."cfnLint.path".default = "${cfn-lint}/bin/cfn-lint"' package.json | sponge package.json + ''; + + meta = { + description = "CloudFormation Linter IDE integration, autocompletion, and documentation"; + homepage = "https://github.com/aws-cloudformation/cfn-lint-visual-studio-code"; + license = lib.licenses.asl20; + maintainers = [ lib.maintainers.wolfangaukang ]; + }; + }; + + kubukoz.nickel-syntax = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "nickel-syntax"; + publisher = "kubukoz"; + version = "0.0.2"; + sha256 = "sha256-ffPZd717Y2OF4d9MWE6zKwcsGWS90ZJvhWkqP831tVM="; + }; + meta = { + license = lib.licenses.asl20; + }; + }; + + llvm-org.lldb-vscode = llvmPackages_8.lldb; + + llvm-vs-code-extensions.vscode-clangd = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-clangd"; + publisher = "llvm-vs-code-extensions"; + version = "0.1.24"; + sha256 = "sha256-yOpsYjjwHRXxbiHDPgrtswUtgbQAo+3RgN2s6UYe9mg="; + }; + meta = { + description = "C/C++ completion, navigation, and insights"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd"; + homepage = "https://github.com/clangd/vscode-clangd"; + changelog = "https://marketplace.visualstudio.com/items/llvm-vs-code-extensions.vscode-clangd/changelog"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.wackbyte ]; + }; + }; + + lokalise.i18n-ally = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "i18n-ally"; + publisher = "Lokalise"; + version = "2.8.1"; + sha256 = "sha256-oDW7ijcObfOP7ZNggSHX0aiI5FkoJ/iQD92bRV0eWVQ="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + lucperkins.vrl-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "lucperkins"; + name = "vrl-vscode"; + version = "0.1.4"; + sha256 = "sha256-xcGa43iPwUR6spOJGTmmWA1dOMNMQEdiuhMZPYZ+dTU="; + }; + meta = { + description = "VS Code extension for Vector Remap Language (VRL)"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=lucperkins.vrl-vscode"; + homepage = "https://github.com/lucperkins/vrl-vscode"; + license = lib.licenses.mpl20; + maintainers = [ lib.maintainers.lucperkins ]; + }; + }; + + mads-hartmann.bash-ide-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "mads-hartmann"; + name = "bash-ide-vscode"; + version = "1.36.0"; + sha256 = "sha256-DqY2PS4JSjb6VMO1b0Hi/7JOKSTUk5VSxJiCrUKBfLk="; + }; + meta = { + license = lib.licenses.mit; + maintainers = [ lib.maintainers.kamadorueda ]; + }; + }; + + marp-team.marp-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "marp-vscode"; + publisher = "marp-team"; + version = "2.5.0"; + sha256 = "sha256-I8UevZs04tUj/jaHrU7LiMF40ElMqtniU1h/9LNLdac="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + matangover.mypy = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "mypy"; + publisher = "matangover"; + version = "0.2.3"; + sha256 = "sha256-m/8j89M340fiMF7Mi7FT2+Xag3fbMGWf8Gt9T8hLdmo="; + }; + meta.license = lib.licenses.mit; + }; + + matthewpi.caddyfile-support = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "caddyfile-support"; + publisher = "matthewpi"; + version = "0.3.0"; + sha256 = "sha256-1yiOnvC2w33kiPRdQYskee38Cid/GOj9becLadP1fUY="; + }; + meta = { + description = "Rich Caddyfile support for Visual Studio Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=matthewpi.caddyfile-support"; + homepage = "https://github.com/caddyserver/vscode-caddyfile"; + changelog = "https://marketplace.visualstudio.com/items/matthewpi.caddyfile-support/changelog"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.matthewpi ]; + }; + }; + + mattn.lisp = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "lisp"; + publisher = "mattn"; + version = "0.1.12"; + sha256 = "sha256-x6aFrcX0YElEFEr0qA669/LPlab15npmXd5Q585pIEw="; + }; + meta = { + description = "Lisp syntax for vscode"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=mattn.lisp"; + homepage = "https://github.com/mattn/vscode-lisp"; + changelog = "https://marketplace.visualstudio.com/items/mattn.lisp/changelog"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.kamadorueda ]; + }; + }; + + maximedenes.vscoq = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "maximedenes"; + name = "vscoq"; + version = "0.3.8"; + sha256 = "sha256-0FX5KBsvUmI+JMGBnaI3kJmmD+Y6XFl7LRHU0ADbHos="; + }; + meta = { + description = "VsCoq is an extension for Visual Studio Code (VS Code) and VSCodium with support for the Coq Proof Assistant."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=maximedenes.vscoq"; + homepage = "https://github.com/coq-community/vscoq"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.Zimmi48 ]; + }; + }; + + mechatroner.rainbow-csv = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "rainbow-csv"; + publisher = "mechatroner"; + version = "3.6.0"; + sha256 = "sha256-bvxMnT6oSjflAwWQZkNnEoEsVlVg86T0TMYi8tNsbdQ="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + mhutchie.git-graph = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "git-graph"; + publisher = "mhutchie"; + version = "1.30.0"; + sha256 = "sha256-sHeaMMr5hmQ0kAFZxxMiRk6f0mfjkg2XMnA4Gf+DHwA="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + mikestead.dotenv = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "dotenv"; + publisher = "mikestead"; + version = "1.0.1"; + sha256 = "sha256-dieCzNOIcZiTGu4Mv5zYlG7jLhaEsJR05qbzzzQ7RWc="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + mishkinf.goto-next-previous-member = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "goto-next-previous-member"; + publisher = "mishkinf"; + version = "0.0.6"; + sha256 = "07rpnbkb51835gflf4fpr0v7fhj8hgbhsgcz2wpag8wdzdxc3025"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + mkhl.direnv = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "direnv"; + publisher = "mkhl"; + version = "0.12.0"; + sha256 = "sha256-UMGTWAiPAxSjy5ALUkijD0GE9TW37TZ3UvMmgFBNYsU="; + }; + meta = { + description = "direnv support for Visual Studio Code"; + license = lib.licenses.bsd0; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=mkhl.direnv"; + maintainers = [ lib.maintainers.nullx76 ]; + }; + }; + + ms-azuretools.vscode-docker = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-docker"; + publisher = "ms-azuretools"; + version = "1.24.0"; + sha256 = "sha256-zZ34KQrRPqVbfGdpYACuLMiMj4ZIWSnJIPac1yXD87k="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + ms-ceintl = callPackage ./language-packs.nix { }; # non-English language packs + + ms-dotnettools.csharp = callPackage ./ms-dotnettools.csharp { }; + + ms-kubernetes-tools.vscode-kubernetes-tools = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-kubernetes-tools"; + publisher = "ms-kubernetes-tools"; + version = "1.3.11"; + sha256 = "sha256-I2ud9d4VtgiiIT0MeoaMThgjLYtSuftFVZHVJTMlJ8s="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + ms-pyright.pyright = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "pyright"; + publisher = "ms-pyright"; + version = "1.1.300"; + sha256 = "sha256-GzRJeV4qfgM2kBv6U3MH7lMWl3CL6LWPI/9GaVWZL+o="; + }; + meta = { + description = "VS Code static type checking for Python"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=ms-pyright.pyright"; + homepage = "https://github.com/Microsoft/pyright#readme"; + changelog = "https://marketplace.visualstudio.com/items/ms-pyright.pyright/changelog"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.ratsclub ]; + }; + }; + + ms-python.python = callPackage ./ms-python.python { }; + + ms-python.vscode-pylance = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-pylance"; + publisher = "MS-python"; + version = "2022.7.11"; + sha256 = "sha256-JatjLZXO7iwpBwjL1hrNafBiF81CaozWWANyRm8A36Y="; + }; + + buildInputs = [ nodePackages.pyright ]; + + meta = { + changelog = "https://marketplace.visualstudio.com/items/ms-python.vscode-pylance/changelog"; + description = "A performant, feature-rich language server for Python in VS Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance"; + homepage = "https://github.com/microsoft/pylance-release"; + license = lib.licenses.unfree; + }; + }; + + ms-toolsai.jupyter = callPackage ./ms-toolsai.jupyter { }; + + ms-toolsai.jupyter-keymap = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "jupyter-keymap"; + publisher = "ms-toolsai"; + version = "1.1.0"; + sha256 = "sha256-krDtR+ZJiJf1Kxcu5mdXOaSAiJb2bXC1H0XWWviWeMQ="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + ms-toolsai.jupyter-renderers = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "jupyter-renderers"; + publisher = "ms-toolsai"; + version = "1.0.15"; + sha256 = "sha256-JR6PunvRRTsSqjSGGAn/1t1B+Ia6X0MgqahehcuSNYA="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + ms-toolsai.vscode-jupyter-cell-tags = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-jupyter-cell-tags"; + publisher = "ms-toolsai"; + version = "0.1.8"; + sha256 = "sha256-0oPyptnUWL1h/H13SdR+FdgGzVwEpTaK9SCE7BvI/5M="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + ms-toolsai.vscode-jupyter-slideshow = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-jupyter-slideshow"; + publisher = "ms-toolsai"; + version = "0.1.5"; + sha256 = "1p6r5vkzvwvxif3wxqi9599vplabzig27fzzz0bx9z0awfglzyi7"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + ms-vscode.anycode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "anycode"; + publisher = "ms-vscode"; + version = "0.0.70"; + sha256 = "sha256-POxgwvKF4A+DxKVIOte4I8REhAbO1U9Gu6r/S41/MmA="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + ms-vscode.cmake-tools = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "cmake-tools"; + publisher = "ms-vscode"; + version = "1.14.20"; + sha256 = "sha256-j67Z65N9YW8wY4zIWWCtPIKgW9GYoUntBoGVBLR/H2o="; + }; + meta.license = lib.licenses.mit; + }; + + ms-vscode.cpptools = callPackage ./ms-vscode.cpptools { }; + + ms-vscode.hexeditor = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "hexeditor"; + publisher = "ms-vscode"; + version = "1.9.11"; + sha256 = "sha256-w1R8z7Q/JRAsqJ1mgcvlHJ6tywfgKtS6A6zOY2p01io="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + ms-vscode.live-server = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "live-server"; + publisher = "ms-vscode"; + version = "0.4.8"; + sha256 = "sha256-/IrLq+nNxwQB1S1NIGYkv24DOY7Mc25eQ+orUfh42pg="; + }; + meta = { + description = "Launch a development local Server with live reload feature for static & dynamic pages"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=ms-vscode.live-server"; + homepage = "https://github.com/microsoft/vscode-livepreview"; + license = lib.licenses.mit; + }; + }; + + ms-vscode.makefile-tools = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "makefile-tools"; + publisher = "ms-vscode"; + version = "0.6.0"; + sha256 = "07zagq5ib9hd3w67yk2g728vypr4qazw0g9dyd5bax21shnmppa9"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + ms-vscode.powershell = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "PowerShell"; + publisher = "ms-vscode"; + version = "2023.3.1"; + sha256 = "sha256-FJolnWU0DbuQYvMuGL3mytf0h39SH9rUPCl2ahLXLuY="; + }; + meta = { + description = "A Visual Studio Code extension for PowerShell language support"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=ms-vscode.PowerShell"; + homepage = "https://github.com/PowerShell/vscode-powershell"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.rhoriguchi ]; + }; + }; + + ms-vscode.theme-tomorrowkit = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "Theme-TomorrowKit"; + publisher = "ms-vscode"; + version = "0.1.4"; + sha256 = "sha256-qakwJWak+IrIeeVcMDWV/fLPx5M8LQGCyhVt4TS/Lmc="; + }; + meta = { + description = "Additional Tomorrow and Tomorrow Night themes for VS Code. Based on the TextMate themes."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=ms-vscode.Theme-TomorrowKit"; + homepage = "https://github.com/microsoft/vscode-themes"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.ratsclub ]; + }; + }; + + ms-vscode-remote.remote-ssh = callPackage ./ms-vscode-remote.remote-ssh { }; + + ms-vsliveshare.vsliveshare = callPackage ./ms-vsliveshare.vsliveshare { }; + + mskelton.one-dark-theme = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "one-dark-theme"; + publisher = "mskelton"; + version = "1.14.2"; + sha256 = "sha256-6nIfEPbau5Dy1DGJ0oQ5L2EGn2NDhpd8jSdYujtOU68="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + mvllow.rose-pine = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "mvllow"; + name = "rose-pine"; + version = "2.7.1"; + sha256 = "sha256-QQIkuJAI4apDt8rfhXvMg9bNtGTFeMaEkN/Se12zGpc="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + naumovs.color-highlight = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "color-highlight"; + publisher = "naumovs"; + version = "2.6.0"; + sha256 = "sha256-TcPQOAHCYeFHPdR85GIXsy3fx70p8cLdO2UNO0krUOs="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/naumovs.color-highlight/changelog"; + description = "Highlight web colors in your editor"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=naumovs.color-highlight"; + homepage = "https://github.com/enyancc/vscode-ext-color-highlight"; + license = lib.licenses.gpl3Only; + maintainers = [ lib.maintainers.datafoo ]; + }; + }; + + njpwerner.autodocstring = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "autodocstring"; + publisher = "njpwerner"; + version = "0.6.1"; + sha256 = "sha256-NI0cbjsZPW8n6qRTRKoqznSDhLZRUguP7Sa/d0feeoc="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/njpwerner.autodocstring/changelog"; + description = "Generates python docstrings automatically"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring"; + homepage = "https://github.com/NilsJPWerner/autoDocstring"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.kamadorueda ]; + }; + }; + + nonylene.dark-molokai-theme = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "dark-molokai-theme"; + publisher = "nonylene"; + version = "1.0.5"; + sha256 = "sha256-2qjV6iSz8DDU1yP1II9sxGSgiETmEtotFvfNjm+cTuI="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/nonylene.dark-molokai-theme/changelog"; + description = "Theme inspired by VSCode default dark theme, monokai theme and Vim Molokai theme"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=nonylene.dark-molokai-theme"; + homepage = "https://github.com/nonylene/vscode-dark-molokai-theme"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.amz-x ]; + }; + }; + + nvarner.typst-lsp = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "typst-lsp"; + publisher = "nvarner"; + version = "0.5.0"; + sha256 = "sha256-4bZbjbcd/EjSRBMkzMs1pD00qyQb5W6gePh4xfoU6Ug="; + }; + + nativeBuildInputs = [ jq moreutils ]; + + postInstall = '' + cd "$out/$installPrefix" + jq '.contributes.configuration.properties."typst-lsp.serverPath".default = "${typst-lsp}/bin/typst-lsp"' package.json | sponge package.json + ''; + + meta = { + changelog = "https://marketplace.visualstudio.com/items/nvarner.typst-lsp/changelog"; + description = "A VSCode extension for providing a language server for Typst"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=nvarner.typst-lsp"; + homepage = "https://github.com/nvarner/typst-lsp"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.drupol ]; + }; + }; + + ocamllabs.ocaml-platform = buildVscodeMarketplaceExtension { + meta = { + changelog = "https://marketplace.visualstudio.com/items/ocamllabs.ocaml-platform/changelog"; + description = "Official OCaml Support from OCamlLabs"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=ocamllabs.ocaml-platform"; + homepage = "https://github.com/ocamllabs/vscode-ocaml-platform"; + license = lib.licenses.isc; + maintainers = [ lib.maintainers.ratsclub ]; + }; + mktplcRef = { + name = "ocaml-platform"; + publisher = "ocamllabs"; + version = "1.12.2"; + sha256 = "sha256-dj8UFbYgAl6dt/1MuIBawTVUbBDTTedZEcHtKZjEcew="; + }; + }; + + octref.vetur = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vetur"; + publisher = "octref"; + version = "0.37.3"; + sha256 = "sha256-3hi1LOZto5AYaomB9ihkAt4j/mhkCDJ8Jqa16piwHIQ="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + oderwat.indent-rainbow = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "indent-rainbow"; + publisher = "oderwat"; + version = "8.3.1"; + sha256 = "sha256-dOicya0B2sriTcDSdCyhtp0Mcx5b6TUaFKVb0YU3jUc="; + }; + meta = { + description = "Makes indentation easier to read"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow"; + homepage = "https://github.com/oderwat/vscode-indent-rainbow"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.imgabe ]; + }; + }; + + phoenixframework.phoenix = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "phoenix"; + publisher = "phoenixframework"; + version = "0.1.2"; + sha256 = "sha256-T+YNRR8jAzNagmoCDzjbytBDFtPhNn289Kywep/w8sw="; + }; + meta = { + description = "Syntax highlighting support for HEEx / Phoenix templates"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=phoenixframework.phoenix"; + homepage = "https://github.com/phoenixframework/vscode-phoenix"; + license = lib.licenses.mit; + maintainers = [ ]; + }; + }; + + piousdeer.adwaita-theme = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "adwaita-theme"; + publisher = "piousdeer"; + version = "1.1.0"; + sha256 = "sha256-tKpKLUcc33YrgDS95PJu22ngxhwjqeVMC1Mhhy+IPGE="; + }; + meta = { + description = "Theme for the GNOME desktop"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=piousdeer.adwaita-theme"; + homepage = "https://github.com/piousdeer/vscode-adwaita"; + license = lib.licenses.gpl3; + maintainers = [ lib.maintainers.wyndon ]; + }; + }; + + pkief.material-icon-theme = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "material-icon-theme"; + publisher = "PKief"; + version = "4.25.0"; + sha256 = "sha256-/lD3i7ZdF/XOi7RduS3HIYHFXhkoW2+PJW249gQxcyk="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + pkief.material-product-icons = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "material-product-icons"; + publisher = "PKief"; + version = "1.5.0"; + sha256 = "sha256-gKU21OS2ZFyzCQVQ1fa3qlahLBAcJaHDEcz7xof3P4A="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + prisma.prisma = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "prisma"; + publisher = "Prisma"; + version = "4.11.0"; + sha256 = "sha256-fHvwv9E/O8ZvhnyY7nNF/SIyl87z8KVEXTbhU/37EP0="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/Prisma.prisma/changelog"; + description = "VSCode extension for syntax highlighting, formatting, auto-completion, jump-to-definition and linting for .prisma files"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=Prisma.prisma"; + homepage = "https://github.com/prisma/language-tools"; + license = lib.licenses.asl20; + maintainers = [ ]; + }; + }; + + rebornix.ruby = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "ruby"; + publisher = "rebornix"; + version = "0.28.1"; + sha256 = "sha256-HAUdv+2T+neJ5aCGiQ37pCO6x6r57HIUnLm4apg9L50="; + }; + + meta.license = lib.licenses.mit; + }; + + redhat.java = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "java"; + publisher = "redhat"; + version = "1.17.2023032504"; + sha256 = "sha256-ni1jzCPjwtcdJTEORn0vYzLRbQ/wseTZmrETJ8QPW58="; + }; + buildInputs = [ jdk ]; + meta = { + license = lib.licenses.epl20; + broken = lib.versionOlder jdk.version "11"; + }; + }; + + redhat.vscode-xml = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-xml"; + publisher = "redhat"; + version = "0.25.2023032304"; + sha256 = "sha256-3hU/MZU9dP91p2PVycFL6yg/nf4/x8tt76vmlkiHnE8="; + }; + meta.license = lib.licenses.epl20; + }; + + redhat.vscode-yaml = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-yaml"; + publisher = "redhat"; + version = "1.12.0"; + sha256 = "sha256-r/me14KonxnQeensIYyWU4dQrhomc8h2ntYoiZ+Y7jE="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + richie5um2.snake-trail = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "snake-trail"; + publisher = "richie5um2"; + version = "0.6.0"; + sha256 = "0wkpq9f48hplrgabb0v1ij6fc4sb8h4a93dagw4biprhnnm3qx49"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + rioj7.commandonallfiles = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "commandOnAllFiles"; + publisher = "rioj7"; + version = "0.3.2"; + sha256 = "sha256-777jdBpWJ66ASeeETWevWF4mIAj4RWviNSTxzvqwl0U="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + ritwickdey.liveserver = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "liveserver"; + publisher = "ritwickdey"; + version = "5.7.9"; + sha256 = "sha256-w0CYSEOdltwMFzm5ZhOxSrxqQ1y4+gLfB8L+EFFgzDc="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + roman.ayu-next = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "ayu-next"; + publisher = "roman"; + version = "1.2.15"; + sha256 = "sha256-gGEjb9BrvFmKhAxRUmN3YWx7VZqlUp6w7m4r46DPn50="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + RoweWilsonFrederiskHolme.wikitext = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "wikitext"; + publisher = "RoweWilsonFrederiskHolme"; + version = "3.8.0"; + sha256 = "30540a85163e797028eec9bc3db1866bbf473e98615bf6ade6d1d672017ebe52"; + }; + meta = { + description = "Extension that helps users view and write MediaWiki's Wikitext files"; + longDescription = '' + With this extension, you can more easily discover your grammatical problems + through the marked and styled text. The plugin is based on MediaWiki's + Wikitext standard, but the rules are somewhat stricter, which helps users + write text that is easier to read and maintain. + ''; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=RoweWilsonFrederiskHolme.wikitext"; + homepage = "https://github.com/Frederisk/Wikitext-VSCode-Extension"; + license = lib.licenses.mit; + }; + }; + + rubbersheep.gi = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "gi"; + publisher = "rubbersheep"; + version = "0.2.11"; + sha256 = "0j9k6wm959sziky7fh55awspzidxrrxsdbpz1d79s5lr5r19rs6j"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + rubymaniac.vscode-paste-and-indent = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-paste-and-indent"; + publisher = "Rubymaniac"; + version = "0.0.8"; + sha256 = "0fqwcvwq37ndms6vky8jjv0zliy6fpfkh8d9raq8hkinfxq6klgl"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + rust-lang.rust-analyzer = callPackage ./rust-lang.rust-analyzer { }; + + ryu1kn.partial-diff = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "partial-diff"; + publisher = "ryu1kn"; + version = "1.4.3"; + sha256 = "0x3lkvna4dagr7s99yykji3x517cxk5kp7ydmqa6jb4bzzsv1s6h"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + sanaajani.taskrunnercode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "taskrunnercode"; + publisher = "sanaajani"; + version = "0.3.0"; + sha256 = "NVGMM9ugmYZNCWhNmclcGuVJPhJ9h4q2G6nNzVUEpes="; + }; + meta = { + description = "Extension to view and run tasks from Explorer pane"; + longDescription = '' + This extension adds an additional "Task Runner" view in your Explorer Pane + to visualize and individually run the auto-detected or configured tasks + in your project. + ''; + homepage = "https://github.com/sana-ajani/taskrunner-code"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.pbsds ]; + }; + }; + + scala-lang.scala = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "scala"; + publisher = "scala-lang"; + version = "0.5.6"; + sha256 = "sha256-eizIPazqEb27aQ+o9nTD1O58zbjkHYHNhGjK0uJgnwA="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + scalameta.metals = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "metals"; + publisher = "scalameta"; + version = "1.22.3"; + sha256 = "sha256-iLLWobQv5CEjJwCdDNdWYQ1ehOiYyNi940b4QmNZFoQ="; + }; + meta = { + license = lib.licenses.asl20; + }; + }; + + seatonjiang.gitmoji-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "seatonjiang"; + name = "gitmoji-vscode"; + version = "1.2.2"; + sha256 = "sha256-+lwbCLV62y1IHrjCygBphQZJUu+ZApYTwBQld5uu12w="; + }; + meta = { + description = "Gitmoji tool for git commit messages in VSCode"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=seatonjiang.gitmoji-vscode"; + homepage = "https://github.com/seatonjiang/gitmoji-vscode/"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.laurent-f1z1 ]; + }; + }; + + serayuzgur.crates = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "crates"; + publisher = "serayuzgur"; + version = "0.5.10"; + sha256 = "1dbhd6xbawbnf9p090lpmn8i5gg1f7y8xk2whc9zhg4432kdv3vd"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + shardulm94.trailing-spaces = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "shardulm94"; + name = "trailing-spaces"; + version = "0.4.1"; + sha256 = "sha256-pLE1bfLRxjlm/kgU9nmtiPBOnP05giQnWq6bexrrIZY="; + }; + meta = { + license = lib.licenses.mit; + maintainers = [ lib.maintainers.kamadorueda ]; + }; + }; + + shd101wyy.markdown-preview-enhanced = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "shd101wyy"; + name = "markdown-preview-enhanced"; + version = "0.6.8"; + sha256 = "9NRaHgtyiZJ0ic6h1B01MWzYhDABAl3Jm2IUPogYWr0="; + }; + meta = { + description = "Provides a live preview of markdown using either markdown-it or pandoc"; + longDescription = '' + Markdown Preview Enhanced provides you with many useful functionalities + such as automatic scroll sync, math typesetting, mermaid, PlantUML, + pandoc, PDF export, code chunk, presentation writer, etc. + ''; + homepage = "https://github.com/shd101wyy/vscode-markdown-preview-enhanced"; + license = lib.licenses.ncsa; + maintainers = [ lib.maintainers.pbsds ]; + }; + }; + + shyykoserhiy.vscode-spotify = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-spotify"; + publisher = "shyykoserhiy"; + version = "3.2.1"; + sha256 = "14d68rcnjx4a20r0ps9g2aycv5myyhks5lpfz0syr2rxr4kd1vh6"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + skellock.just = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "just"; + publisher = "skellock"; + version = "2.0.0"; + sha256 = "sha256-FOp/dcW0+07rADEpUMzx+SGYjhvE4IhcCOqUQ38yCN4="; + }; + meta = { + changelog = "https://github.com/skellock/vscode-just/blob/master/CHANGELOG.md"; + description = "Provides syntax and recipe launcher for Just scripts"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=skellock.just"; + homepage = "https://github.com/skellock/vscode-just"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.maximsmol ]; + }; + }; + + skyapps.fish-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "fish-vscode"; + publisher = "skyapps"; + version = "0.2.1"; + sha256 = "0y1ivymn81ranmir25zk83kdjpjwcqpnc9r3jwfykjd9x0jib2hl"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + slevesque.vscode-multiclip = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-multiclip"; + publisher = "slevesque"; + version = "0.1.5"; + sha256 = "1cg8dqj7f10fj9i0g6mi3jbyk61rs6rvg9aq28575rr52yfjc9f9"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + sonarsource.sonarlint-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "sonarlint-vscode"; + publisher = "sonarsource"; + version = "3.16.0"; + sha256 = "sha256-zWgITdvUS9fq1uT6A4Gs3fSTBwCXoEIQ/tVcC7Eigfs="; + }; + meta.license = lib.licenses.lgpl3Only; + }; + + spywhere.guides = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "guides"; + publisher = "spywhere"; + version = "0.9.3"; + sha256 = "1kvsj085w1xax6fg0kvsj1cizqh86i0pkzpwi0sbfvmcq21i6ghn"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + stefanjarina.vscode-eex-snippets = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-eex-snippets"; + publisher = "stefanjarina"; + version = "0.0.8"; + sha256 = "0j8pmrs1lk138vhqx594pzxvrma4yl3jh7ihqm2kgh0cwnkbj36m"; + }; + meta = { + description = "VSCode extension for Elixir EEx and HTML (EEx) code snippets"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=stefanjarina.vscode-eex-snippets"; + homepage = "https://github.com/stefanjarina/vscode-eex-snippets"; + license = lib.licenses.mit; + maintainers = [ ]; + }; + }; + + stephlin.vscode-tmux-keybinding = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-tmux-keybinding"; + publisher = "stephlin"; + version = "0.0.7"; + sha256 = "sha256-MrW0zInweAhU2spkEEiDLyuT6seV3GFFurWTqYMzqgY="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/stephlin.vscode-tmux-keybinding/changelog"; + description = "A simple extension for tmux behavior in vscode terminal."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=stephlin.vscode-tmux-keybinding"; + homepage = "https://github.com/StephLin/vscode-tmux-keybinding"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.dbirks ]; + }; + }; + + stkb.rewrap = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "stkb"; + name = "rewrap"; + version = "17.8.0"; + sha256 = "sha256-9t1lpVbpcmhLamN/0ZWNEWD812S6tXG6aK3/ALJCJvg="; + }; + meta = { + changelog = "https://github.com/stkb/Rewrap/blob/master/CHANGELOG.md"; + description = "Hard word wrapping for comments and other text at a given column."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=stkb.rewrap"; + homepage = "https://github.com/stkb/Rewrap#readme"; + license = lib.licenses.asl20; + maintainers = [ lib.maintainers.datafoo ]; + }; + }; + + streetsidesoftware.code-spell-checker = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "code-spell-checker"; + publisher = "streetsidesoftware"; + version = "2.20.4"; + sha256 = "sha256-GOXKXZPEynyqRUUY0pdNwt+141kJleg74IbCP4/34R8="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/streetsidesoftware.code-spell-checker/changelog"; + description = "Spelling checker for source code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker"; + homepage = "https://streetsidesoftware.github.io/vscode-spell-checker"; + license = lib.licenses.gpl3Only; + maintainers = [ lib.maintainers.datafoo ]; + }; + }; + + styled-components.vscode-styled-components = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-styled-components"; + publisher = "styled-components"; + version = "1.7.6"; + sha256 = "sha256-ZXXXFUriu//2Wmj1N+plj7xzJauGBfj+79SyrkUZAO4="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/styled-components.vscode-styled-components/changelog"; + description = "Syntax highlighting and IntelliSense for styled-components"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=styled-components.vscode-styled-components"; + homepage = "https://github.com/styled-components/vscode-styled-components"; + license = lib.licenses.mit; + }; + }; + + sumneko.lua = callPackage ./sumneko.lua { }; + + svelte.svelte-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "svelte-vscode"; + publisher = "svelte"; + version = "107.4.3"; + sha256 = "sha256-z1foIJXVKmJ0G4FfO9xsjiQgmq/ZtoB3b6Ch8Nyj1zY="; + }; + meta = { + changelog = "https://github.com/sveltejs/language-tools/releases"; + description = "Svelte language support for VS Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode"; + homepage = "https://github.com/sveltejs/language-tools#readme"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.fabianhauser ]; + }; + }; + + svsool.markdown-memo = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "markdown-memo"; + publisher = "svsool"; + version = "0.3.19"; + sha256 = "sha256-JRM9Tm7yql7dKXOdpTwBVR/gx/nwvM7qqrCNlV2i1uI="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/svsool.markdown-memo/changelog"; + description = "Markdown knowledge base with bidirectional [[link]]s built on top of VSCode"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=svsool.markdown-memo"; + homepage = "https://github.com/svsool/vscode-memo"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.ratsclub ]; + }; + }; + + tabnine.tabnine-vscode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "tabnine-vscode"; + publisher = "tabnine"; + version = "3.6.43"; + sha256 = "sha256-/onQybGMBscD6Rj4PWafetuag1J1cgHTw5NHri082cs="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + tailscale.vscode-tailscale = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-tailscale"; + publisher = "tailscale"; + version = "0.4.0"; + sha256 = "sha256-c/BZHKHs2EKd37148dSxEeP1wBXv75HhDqzegmHPjOs="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/tailscale.vscode-tailscale/changelog"; + description = "VSCode extension to share a port over the internet with Tailscale Funnel"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=Tailscale.vscode-tailscale"; + homepage = "https://github.com/tailscale-dev/vscode-tailscale"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.drupol ]; + }; + }; + + takayama.vscode-qq = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "takayama"; + name = "vscode-qq"; + version = "1.4.2"; + sha256 = "sha256-koeiFXUFI/i8EGCRDTym62m7JER18J9MKZpbAozr0Ng="; + }; + meta = { + license = lib.licenses.mpl20; + }; + }; + + tamasfe.even-better-toml = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "even-better-toml"; + publisher = "tamasfe"; + version = "0.19.0"; + sha256 = "sha256-MqSQarNThbEf1wHDTf1yA46JMhWJN46b08c7tV6+1nU="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + techtheawesome.rust-yew = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "rust-yew"; + publisher = "techtheawesome"; + version = "0.2.2"; + sha256 = "sha256-t9DYY1fqW7M5F1pbIUtnnodxMzIzURew4RXT78djWMI="; + }; + meta = { + description = "A VSCode extension that provides some language features for Yew's html macro syntax"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=TechTheAwesome.rust-yew"; + homepage = "https://github.com/TechTheAwesome/code-yew-server"; + license = lib.licenses.gpl3Only; + maintainers = [ lib.maintainers.CardboardTurkey ]; + }; + }; + + theangryepicbanana.language-pascal = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "language-pascal"; + publisher = "theangryepicbanana"; + version = "0.1.6"; + sha256 = "096wwmwpas21f03pbbz40rvc792xzpl5qqddzbry41glxpzywy6b"; + }; + meta = { + description = "VSCode extension for high-quality Pascal highlighting"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=theangryepicbanana.language-pascal"; + homepage = "https://github.com/ALANVF/vscode-pascal-magic"; + license = lib.licenses.mit; + maintainers = [ ]; + }; + }; + + thenuprojectcontributors.vscode-nushell-lang = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-nushell-lang"; + publisher = "thenuprojectcontributors"; + version = "1.1.0"; + sha256 = "sha256-7v4q0OEqv7q2ejHp4lph2Dsqg0GWE65pxyz9goQEm8g="; + }; + meta.license = lib.licenses.mit; + }; + + tiehuis.zig = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "zig"; + publisher = "tiehuis"; + version = "0.2.6"; + sha256 = "sha256-s0UMY0DzEufEF+pizYeH4MKYOiiJ6z05gYHvfpaS4zA="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + timonwong.shellcheck = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "shellcheck"; + publisher = "timonwong"; + version = "0.26.3"; + sha256 = "GlyOLc2VrRnA50MkaG83qa0yLUyJYwueqEO+ZeAStYs="; + }; + nativeBuildInputs = [ jq moreutils ]; + postInstall = '' + cd "$out/$installPrefix" + jq '.contributes.configuration.properties."shellcheck.executablePath".default = "${shellcheck}/bin/shellcheck"' package.json | sponge package.json + ''; + meta = { + license = lib.licenses.mit; + }; + }; + + tobiasalthoff.atom-material-theme = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "atom-material-theme"; + publisher = "tobiasalthoff"; + version = "1.10.9"; + sha256 = "sha256-EdU0FMkaQpwhOpPRC+HGIxcrt7kSN+l4+mSgIwogB/I="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + tomoki1207.pdf = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "pdf"; + publisher = "tomoki1207"; + version = "1.2.2"; + sha256 = "sha256-i3Rlizbw4RtPkiEsodRJEB3AUzoqI95ohyqZ0ksROps="; + }; + meta = { + description = "Show PDF preview in VSCode"; + homepage = "https://github.com/tomoki1207/vscode-pdfviewer"; + license = lib.licenses.mit; + }; + }; + + tuttieee.emacs-mcx = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "emacs-mcx"; + publisher = "tuttieee"; + version = "0.47.0"; + sha256 = "sha256-dGty5+1+JEtJgl/DiyqEB/wuf3K8tCj1qWKua6ongIs="; + }; + meta = { + changelog = "https://github.com/whitphx/vscode-emacs-mcx/blob/main/CHANGELOG.md"; + description = "Awesome Emacs Keymap - VSCode emacs keybinding with multi cursor support"; + homepage = "https://github.com/whitphx/vscode-emacs-mcx"; + license = lib.licenses.mit; + }; + }; + + twxs.cmake = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "cmake"; + publisher = "twxs"; + version = "0.0.17"; + sha256 = "11hzjd0gxkq37689rrr2aszxng5l9fwpgs9nnglq3zhfa1msyn08"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + tyriar.sort-lines = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "sort-lines"; + publisher = "Tyriar"; + version = "1.9.1"; + sha256 = "0dds99j6awdxb0ipm15g543a5b6f0hr00q9rz961n0zkyawgdlcb"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + usernamehw.errorlens = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "errorlens"; + publisher = "usernamehw"; + version = "3.8.0"; + sha256 = "sha256-T2YTEbeC22/B5BlBBrBATLv95HQC5xGab+KnCMzI1vc="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/usernamehw.errorlens/changelog"; + description = "Improve highlighting of errors, warnings and other language diagnostics."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens"; + homepage = "https://github.com/usernamehw/vscode-error-lens"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.imgabe ]; + }; + }; + + vadimcn.vscode-lldb = callPackage ./vadimcn.vscode-lldb { llvmPackages = llvmPackages_14; }; + + valentjn.vscode-ltex = vscode-utils.buildVscodeMarketplaceExtension rec { + mktplcRef = { + name = "vscode-ltex"; + publisher = "valentjn"; + version = "13.1.0"; + }; + + vsix = fetchurl { + name = "${mktplcRef.publisher}-${mktplcRef.name}.zip"; + url = "https://github.com/valentjn/vscode-ltex/releases/download/${mktplcRef.version}/vscode-ltex-${mktplcRef.version}-offline-linux-x64.vsix"; + sha256 = "1nlrijjwc35n1xgb5lgnr4yvlgfcxd0vdj93ip8lv2xi8x1ni5f6"; + }; + + nativeBuildInputs = [ jq moreutils ]; + + buildInputs = [ jdk ]; + + postInstall = '' + cd "$out/$installPrefix" + jq '.contributes.configuration.properties."ltex.java.path".default = "${jdk}"' package.json | sponge package.json + ''; + + meta = { + license = lib.licenses.mpl20; + maintainers = [ lib.maintainers._0xbe7a ]; + }; + }; + + viktorqvarfordt.vscode-pitch-black-theme = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-pitch-black-theme"; + publisher = "ViktorQvarfordt"; + version = "1.3.0"; + sha256 = "sha256-1JDm/cWNWwxa1gNsHIM/DIvqjXsO++hAf0mkjvKyi4g="; + }; + meta = { + license = lib.licenses.mit; + maintainers = [ lib.maintainers.wolfangaukang ]; + }; + }; + + vincaslt.highlight-matching-tag = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "highlight-matching-tag"; + publisher = "vincaslt"; + version = "0.11.0"; + sha256 = "sha256-PxngjprSpWtD2ZDZfh+gOnZ+fVk5rvgGdZFxqbE21CY="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + vscjava.vscode-gradle = buildVscodeMarketplaceExtension rec { + mktplcRef = { + name = "vscode-gradle"; + publisher = "vscjava"; + version = "3.12.6"; + sha256 = "sha256-j4JyhNGsRlJmS8Wj38gLpC1gXVvdPx10cgzP8dXmmNo="; + }; + + meta = { + changelog = "https://marketplace.visualstudio.com/items/vscjava.vscode-gradle/changelog"; + description = "A Visual Studio Code extension for Gradle build tool"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-gradle"; + homepage = "https://github.com/microsoft/vscode-gradle"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ rhoriguchi ]; + }; + }; + + vscjava.vscode-java-debug = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-java-debug"; + publisher = "vscjava"; + version = "0.49.2023032407"; + sha256 = "sha256-ZxJ6BM3rt98HPSyL0hDiyCGIBS7YtF/OuzlTvw7Bp1w="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + vscjava.vscode-java-dependency = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-java-dependency"; + publisher = "vscjava"; + version = "0.21.2023032400"; + sha256 = "sha256-lG04Yu8exMcMvupqasUrbZS4CkSggQeJKtkm9iyKL5U="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + vscjava.vscode-java-test = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-java-test"; + publisher = "vscjava"; + version = "0.38.2023032402"; + sha256 = "sha256-4WKsw+iuONaGQRMNN2TGd3zIYonHgOzvNleVhCyYFes="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + vscjava.vscode-maven = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-maven"; + publisher = "vscjava"; + version = "0.41.2023032403"; + sha256 = "sha256-VeN4q6pEaLPQVYleLCDkDCv2Gr8QdHVPjpwSuo3mBuE="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + vscjava.vscode-spring-initializr = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-spring-initializr"; + publisher = "vscjava"; + version = "0.11.2023031603"; + sha256 = "sha256-MSyVLSjaiH+FaeGn/5Y+IWRJmNpAx3UPGpY4VmsiCD8="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + vscode-icons-team.vscode-icons = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-icons"; + publisher = "vscode-icons-team"; + version = "12.2.0"; + sha256 = "12s5br0s9n99vjn6chivzdsjb71p0lai6vnif7lv13x497dkw4rz"; + }; + meta = { + description = "Bring real icons to your Visual Studio Code"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons"; + homepage = "https://github.com/vscode-icons/vscode-icons"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.ggwpaiushtha ]; + }; + }; + + vscodevim.vim = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vim"; + publisher = "vscodevim"; + version = "1.25.2"; + sha256 = "sha256-hy2Ks6oRc9io6vfgql9aFGjUiRzBCS4mGdDO3NqIFEg="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + vspacecode.vspacecode = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vspacecode"; + publisher = "VSpaceCode"; + version = "0.10.14"; + sha256 = "sha256-iTFwm/P2wzbNahozyLbdfokcSDHFzLrzVDHI/g2aFm0="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + vspacecode.whichkey = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "whichkey"; + publisher = "VSpaceCode"; + version = "0.11.3"; + sha256 = "sha256-PnaOwOIcSo1Eff1wOtQPhoHYvrHDGTcsRy9mQfdBPX4="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + waderyan.gitblame = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "gitblame"; + publisher = "waderyan"; + version = "10.1.0"; + sha256 = "TTYBaJ4gcMVICz4bGZTvbNRPpWD4tXuAJbI8QcHNDv0="; + }; + meta = { + changelog = "https://marketplace.visualstudio.com/items/waderyan.gitblame/changelog"; + description = "Visual Studio Code Extension - See Git Blame info in status bar"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=waderyan.gitblame"; + homepage = "https://github.com/Sertion/vscode-gitblame"; + license = lib.licenses.mit; + }; + }; + + wakatime.vscode-wakatime = callPackage ./WakaTime.vscode-wakatime { }; + + wholroyd.jinja = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "jinja"; + publisher = "wholroyd"; + version = "0.0.8"; + sha256 = "1ln9gly5bb7nvbziilnay4q448h9npdh7sd9xy277122h0qawkci"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + wingrunr21.vscode-ruby = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-ruby"; + publisher = "wingrunr21"; + version = "0.28.0"; + sha256 = "sha256-H3f1+c31x+lgCzhgTb0uLg9Bdn3pZyJGPPwfpCYrS70="; + }; + + meta.license = lib.licenses.mit; + }; + + wix.vscode-import-cost = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-import-cost"; + publisher = "wix"; + version = "3.3.0"; + sha256 = "0wl8vl8n0avd6nbfmis0lnlqlyh4yp3cca6kvjzgw5xxdc5bl38r"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + xadillax.viml = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "viml"; + publisher = "xadillax"; + version = "2.1.2"; + sha256 = "sha256-n91Rj1Rpp7j7gndkt0bV+jT1nRMv7+coVoSL5c7Ii3A="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + xaver.clang-format = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "clang-format"; + publisher = "xaver"; + version = "1.9.0"; + sha256 = "abd0ef9176eff864f278c548c944032b8f4d8ec97d9ac6e7383d60c92e258c2f"; + }; + meta = { + license = lib.licenses.mit; + maintainers = [ lib.maintainers.zeratax ]; + }; + }; + + xyz.local-history = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "local-history"; + publisher = "xyz"; + version = "1.8.1"; + sha256 = "1mfmnbdv76nvwg4xs3rgsqbxk8hw9zr1b61har9c3pbk9r4cay7v"; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + yzhang.dictionary-completion = buildVscodeMarketplaceExtension { + mktplcRef = { + publisher = "yzhang"; + name = "dictionary-completion"; + version = "1.2.2"; + sha256 = "sha256-dpJcJARRKzRNHfXs/qknud8OQ8xIyeaVnt/EcDq0k4E="; + }; + meta = { + description = "A Visual Studio Code extension to help user easyly finish long words "; + longDescription = '' + Dictionary completion allows user to get a list of keywords, based off of the current word at the cursor. + This is useful if you are typing a long word (e.g. acknowledgeable) and don't want to finish typing or don't remember the Spelling + ''; + homepage = "https://github.com/yzhang-gh/vscode-dic-completion#readme"; + changelog = "https://marketplace.visualstudio.com/items/yzhang.dictionary-completion/changelog"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=yzhang.dictionary-completion"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ onedragon ]; + }; + }; + + yzhang.markdown-all-in-one = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "markdown-all-in-one"; + publisher = "yzhang"; + version = "3.5.1"; + sha256 = "sha256-ZyvkRp0QTjoMEXRGHzp3udGngYcU9EkTCvx8o2CEaBE="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + zhuangtongfa.material-theme = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "material-theme"; + publisher = "zhuangtongfa"; + version = "3.15.8"; + sha256 = "sha256-PwWGs9KRfV3qpYbgdiw8FYvnkaJQ2VW2H6p6+umk7eg="; + }; + meta = { + license = lib.licenses.mit; + }; + }; + + zhwu95.riscv = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "riscv"; + publisher = "zhwu95"; + version = "0.0.8"; + sha256 = "sha256-PXaHSEXoN0ZboHIoDg37tZ+Gv6xFXP4wGBS3YS/53TY="; + }; + meta = { + description = "Basic RISC-V colorization and snippets support."; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=zhwu95.riscv"; + homepage = "https://github.com/zhuanhao-wu/vscode-riscv-support"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.CardboardTurkey ]; + }; + }; + + zxh404.vscode-proto3 = buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-proto3"; + publisher = "zxh404"; + version = "0.5.4"; + sha256 = "08dfl5h1k6s542qw5qx2czm1wb37ck9w2vpjz44kp2az352nmksb"; + }; + nativeBuildInputs = [ jq moreutils ]; + postInstall = '' + cd "$out/$installPrefix" + jq '.contributes.configuration.properties.protoc.properties.path.default = "${protobuf}/bin/protoc"' package.json | sponge package.json + ''; + meta = { + license = lib.licenses.mit; + }; + }; + }; + + aliases = super: { + _1Password = super."1Password"; + _2gua = super."2gua"; + _4ops = super."4ops"; + Arjun.swagger-viewer = super.arjun.swagger-viewer; + jakebecker.elixir-ls = super.elixir-lsp.vscode-elixir-ls; + jpoissonnier.vscode-styled-components = super.styled-components.vscode-styled-components; + matklad.rust-analyzer = super.rust-lang.rust-analyzer; # Previous publisher + ms-vscode.go = super.golang.go; + ms-vscode.PowerShell = super.ms-vscode.powershell; + rioj7.commandOnAllFiles = super.rioj7.commandonallfiles; + WakaTime.vscode-wakatime = super.wakatime.vscode-wakatime; + }; + + # TODO: add overrides overlay, so that we can have a generated.nix + # then apply extension specific modifcations to packages. + + # overlays will be applied left to right, overrides should come after aliases. + overlays = lib.optionals config.allowAliases [ + (self: super: lib.recursiveUpdate super (aliases super)) + ]; + + toFix = lib.foldl' (lib.flip lib.extends) baseExtensions overlays; +in +lib.fix toFix diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/hashicorp.terraform/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/hashicorp.terraform/default.nix new file mode 100644 index 000000000000..234b0880e284 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/hashicorp.terraform/default.nix @@ -0,0 +1,20 @@ +{ lib, vscode-utils, terraform-ls }: +vscode-utils.buildVscodeMarketplaceExtension rec { + mktplcRef = { + name = "terraform"; + publisher = "hashicorp"; + version = "2.19.0"; + sha256 = "sha256-k/fcEJuELz0xkwivSrP6Nxtz861BLq1wR2ZDMXVrvkY="; + }; + + patches = [ ./fix-terraform-ls.patch ]; + + postPatch = '' + substituteInPlace out/serverPath.js --replace TERRAFORM-LS-PATH ${terraform-ls}/bin/terraform-ls + ''; + + meta = { + license = lib.licenses.mit; + maintainers = [ lib.maintainers.rhoriguchi ]; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/hashicorp.terraform/fix-terraform-ls.patch b/nixpkgs/pkgs/applications/editors/vscode/extensions/hashicorp.terraform/fix-terraform-ls.patch new file mode 100644 index 000000000000..e2dcd0b70aa9 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/hashicorp.terraform/fix-terraform-ls.patch @@ -0,0 +1,19 @@ +diff --git a/out/serverPath.js b/out/serverPath.js +index fafa915..2e6d376 100644 +--- a/out/serverPath.js ++++ b/out/serverPath.js +@@ -18,7 +18,13 @@ exports.CUSTOM_BIN_PATH_OPTION_NAME = 'languageServer.pathToBinary'; + class ServerPath { + constructor(context) { + this.context = context; +- this.customBinPath = vscode.workspace.getConfiguration('terraform').get(exports.CUSTOM_BIN_PATH_OPTION_NAME); ++ ++ const customBinPath = vscode.workspace.getConfiguration('terraform').get(exports.CUSTOM_BIN_PATH_OPTION_NAME); ++ if (!customBinPath) { ++ this.customBinPath = 'TERRAFORM-LS-PATH'; ++ } else { ++ this.customBinPath = customBinPath; ++ } + } + installPath() { + return path.join(this.context.globalStorageUri.fsPath, INSTALL_FOLDER_NAME); diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/jebbs.plantuml/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/jebbs.plantuml/default.nix new file mode 100644 index 000000000000..fd1367b23968 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/jebbs.plantuml/default.nix @@ -0,0 +1,27 @@ +{ lib, vscode-utils, plantuml, jq, moreutils }: + +vscode-utils.buildVscodeMarketplaceExtension { + mktplcRef = { + name = "plantuml"; + publisher = "jebbs"; + version = "2.17.4"; + sha256 = "sha256-fnz6ubB73i7rJcv+paYyNV1r4cReuyFPjgPM0HO40ug="; + }; + nativeBuildInputs = [ jq moreutils ]; + postInstall = '' + cd "$out/$installPrefix" + jq '.contributes.configuration.properties."plantuml.java".default = "${plantuml}/bin/plantuml"' package.json | sponge package.json + ''; + + meta = { + description = "A Visual Studio Code extension for supporting Rich PlantUML"; + downloadPage = + "https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml"; + homepage = "https://github.com/qjebbs/vscode-plantuml"; + changelog = + "https://marketplace.visualstudio.com/items/jebbs.plantuml/changelog"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.victormignot ]; + }; +} + diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/language-packs.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/language-packs.nix new file mode 100644 index 000000000000..3c3253e2c3da --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/language-packs.nix @@ -0,0 +1,88 @@ +{ lib, vscode-utils }: + +with vscode-utils; + +let + + buildVscodeLanguagePack = { language, version ? "1.76.2023030809", sha256 }: + buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vscode-language-pack-${language}"; + publisher = "MS-CEINTL"; + inherit version sha256; + }; + meta = { + license = lib.licenses.mit; + }; + }; + +in + +# See list of core language packs at https://github.com/Microsoft/vscode-loc +{ + # French + vscode-language-pack-fr = buildVscodeLanguagePack { + language = "fr"; + sha256 = "19brasjwwgdskgwayclmsywf007i2d47vx7dwq6hq2bhx4rd6xfy"; + }; + # Italian + vscode-language-pack-it = buildVscodeLanguagePack { + language = "it"; + sha256 = "1s5x3w125fliimr0i218mars4xjl70hsz0ihxrjk97c66yzg3gw7"; + }; + # German + vscode-language-pack-de = buildVscodeLanguagePack { + language = "de"; + sha256 = "0ih8h3n5mcadclxxlrgajq7kprgj9fbklccc00r0z8vqnmlc0dw0"; + }; + # Spanish + vscode-language-pack-es = buildVscodeLanguagePack { + language = "es"; + sha256 = "077n4mlx9qxqlp018wfi6hm3syhxsp2xzyih42kpsp71xi8j113r"; + }; + # Russian + vscode-language-pack-ru = buildVscodeLanguagePack { + language = "ru"; + sha256 = "04mdxspm8i1dra0qmim4n4qin050adm2zk9pcnn3z4qbf3yvvnf4"; + }; + # Chinese (Simplified) + vscode-language-pack-zh-hans = buildVscodeLanguagePack { + language = "zh-hans"; + sha256 = "0f2bg5nm4sybwf84afvhc22yjp66rzdz4s1iaa31yxb4c1ij2vsr"; + }; + # Chinese (Traditional) + vscode-language-pack-zh-hant = buildVscodeLanguagePack { + language = "zh-hant"; + sha256 = "1dspg6x7n9b89cirf63m2y0p6r2m197qzgvvavqfm7bv6cpskha0"; + }; + # Japanese + vscode-language-pack-ja = buildVscodeLanguagePack { + language = "ja"; + sha256 = "1idiv9xqfqhz1y3pd4h3ayy3svccr4jhrm23nf9h80g38k74qayi"; + }; + # Korean + vscode-language-pack-ko = buildVscodeLanguagePack { + language = "ko"; + sha256 = "0g980sfa386by741sxxlapc2cjsbkfvldcc5kylxvf2drigyvka7"; + }; + # Czech + vscode-language-pack-cs = buildVscodeLanguagePack { + language = "cs"; + sha256 = "0sm3xxiv8lrln051yjq6s5jmpvkbphv1i90lrx472pwknmiwx74a"; + }; + # Portuguese (Brazil) + vscode-language-pack-pt-br = buildVscodeLanguagePack { + language = "pt-BR"; + sha256 = "1k4y528im6sr8n4blh6k4xng4d534siaaflvnarizs3py9wa61d1"; + }; + # Turkish + vscode-language-pack-tr = buildVscodeLanguagePack { + language = "tr"; + sha256 = "1yf59idj6g77sqkm46bdadklvbvb3ncxzd9mfm9y32h54fxffh6a"; + }; + # Pseudo Language + vscode-language-pack-qps-ploc = buildVscodeLanguagePack { + language = "qps-ploc"; + sha256 = "1dmn58fx8mpbn84zqyy09a1j67b5988gn7xjmfdk73bbd7hzbmji"; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/mktplcExtRefToFetchArgs.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/mktplcExtRefToFetchArgs.nix new file mode 100644 index 000000000000..e871baa608ef --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/mktplcExtRefToFetchArgs.nix @@ -0,0 +1,11 @@ +{ publisher, name, version, arch ? "", sha256 ? "" }: +let + archurl = (if arch == "" then "" else "?targetPlatform=${arch}"); +in +{ + url = "https://${publisher}.gallery.vsassets.io/_apis/public/gallery/publisher/${publisher}/extension/${name}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage${archurl}"; + sha256 = sha256; + # The `*.vsix` file is in the end a simple zip file. Change the extension + # so that existing `unzip` hooks takes care of the unpacking. + name = "${publisher}-${name}.zip"; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-dotnettools.csharp/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-dotnettools.csharp/default.nix new file mode 100644 index 000000000000..a170385f9aa1 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-dotnettools.csharp/default.nix @@ -0,0 +1,136 @@ +{ lib +, fetchurl +, vscode-utils +, patchelf +, icu +, stdenv +, openssl +, coreutils +}: +let + inherit (stdenv.hostPlatform) system; + + version = "1.25.4"; + + vsixInfo = + let + linuxDebuggerBins = [ + ".debugger/vsdbg-ui" + ".debugger/vsdbg" + ]; + darwinX86DebuggerBins = [ + ".debugger/x86_64/vsdbg-ui" + ".debugger/x86_64/vsdbg" + ]; + darwinAarch64DebuggerBins = [ + ".debugger/arm64/vsdbg-ui" + ".debugger/arm64/vsdbg" + ]; + omniSharpBins = [ + ".omnisharp/1.39.4-net6.0/OmniSharp" + ]; + razorBins = [ + ".razor/createdump" + ".razor/rzls" + ]; + in + { + x86_64-linux = { + url = "https://github.com/OmniSharp/omnisharp-vscode/releases/download/v${version}/csharp-${version}-linux-x64.vsix"; + sha256 = "08k0wxyj8wz8npw1yqrkdpbvwbnrdnsngdkrd2p5ayn3v608ifc2"; + binaries = linuxDebuggerBins ++ omniSharpBins ++ razorBins; + }; + aarch64-linux = { + url = "https://github.com/OmniSharp/omnisharp-vscode/releases/download/v${version}/csharp-${version}-linux-arm64.vsix"; + sha256 = "09r2d463dk35905f2c3msqzxa7ylcf0ynhbp3n6d12y3x1200pr2"; + binaries = linuxDebuggerBins ++ omniSharpBins ++ razorBins; + }; + x86_64-darwin = { + url = "https://github.com/OmniSharp/omnisharp-vscode/releases/download/v${version}/csharp-${version}-darwin-x64.vsix"; + sha256 = "0mp550kq33zwmlvrhymwnixl4has62imw3ia5z7a01q7mp0w9wpn"; + binaries = darwinX86DebuggerBins ++ omniSharpBins ++ razorBins; + }; + aarch64-darwin = { + url = "https://github.com/OmniSharp/omnisharp-vscode/releases/download/v${version}/csharp-${version}-darwin-arm64.vsix"; + sha256 = "08406xz2raal8f10bmnkz1mwdfprsbkjxzc01v0i4sax1hr2a2yl"; + binaries = darwinAarch64DebuggerBins ++ darwinX86DebuggerBins ++ omniSharpBins ++ razorBins; + }; + }.${system} or (throw "Unsupported system: ${system}"); +in +vscode-utils.buildVscodeMarketplaceExtension rec { + mktplcRef = { + name = "csharp"; + publisher = "ms-dotnettools"; + inherit version; + }; + + vsix = fetchurl { + name = "${mktplcRef.publisher}-${mktplcRef.name}.zip"; + inherit (vsixInfo) url sha256; + }; + + nativeBuildInputs = [ + patchelf + ]; + + postPatch = '' + declare ext_unique_id + # See below as to why we cannot take the whole basename. + ext_unique_id="$(basename "$out" | head -c 32)" + + # Fix 'Unable to connect to debuggerEventsPipeName .. exceeds the maximum length 107.' when + # attempting to launch a specific test in debug mode. The extension attemps to open + # a pipe in extension dir which would fail anyway. We change to target file path + # to a path in tmp dir with a short name based on the unique part of the nix store path. + # This is however a brittle patch as we're working on minified code. + # Hence the attempt to only hold on stable names. + # However, this really would better be fixed upstream. + sed -i \ + -E -e 's/(this\._pipePath=[a-zA-Z0-9_]+\.join\()([a-zA-Z0-9_]+\.getExtensionPath\(\)[^,]*,)/\1require("os").tmpdir(), "'"$ext_unique_id"'"\+/g' \ + "$PWD/dist/extension.js" + + # Fix reference to uname + sed -i \ + -E -e 's_uname -m_${coreutils}/bin/uname -m_g' \ + "$PWD/dist/extension.js" + + patchelf_add_icu_as_needed() { + declare elf="''${1?}" + declare icu_major_v="${ + lib.head (lib.splitVersion (lib.getVersion icu.name)) + }" + + for icu_lib in icui18n icuuc icudata; do + patchelf --add-needed "lib''${icu_lib}.so.$icu_major_v" "$elf" + done + } + + patchelf_common() { + declare elf="''${1?}" + + patchelf_add_icu_as_needed "$elf" + patchelf --add-needed "libssl.so" "$elf" + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${lib.makeLibraryPath [ stdenv.cc.cc openssl icu.out ]}:\$ORIGIN" \ + "$elf" + } + + '' + (lib.concatStringsSep "\n" (map + (bin: '' + chmod +x "${bin}" + '') + vsixInfo.binaries)) + + lib.optionalString stdenv.isLinux (lib.concatStringsSep "\n" (map + (bin: '' + patchelf_common "${bin}" + '') + vsixInfo.binaries)); + + meta = { + description = "C# for Visual Studio Code (powered by OmniSharp)"; + homepage = "https://github.com/OmniSharp/omnisharp-vscode"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.jraygauthier ]; + platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-python.python/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-python.python/default.nix new file mode 100644 index 000000000000..559eef612cd0 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-python.python/default.nix @@ -0,0 +1,88 @@ +{ lib +, vscode-utils +, icu +, python3 + # When `true`, the python default setting will be fixed to specified. + # Use version from `PATH` for default setting otherwise. + # Defaults to `false` as we expect it to be project specific most of the time. +, pythonUseFixed ? false + # For updateScript +, writeScript +, bash +, curl +, coreutils +, gnused +, jq +, nix +}: + +vscode-utils.buildVscodeMarketplaceExtension rec { + mktplcRef = { + name = "python"; + publisher = "ms-python"; + version = "2023.1.10091012"; + sha256 = "sha256-JosFv6ngJmw1XRILwTZMVxlGIdWFLFQjj4olfnVwAIM="; + }; + + buildInputs = [ icu ]; + + nativeBuildInputs = [ python3.pkgs.wrapPython ]; + + propagatedBuildInputs = with python3.pkgs; [ + debugpy + jedi-language-server + ]; + + postPatch = '' + # remove bundled python deps and use libs from nixpkgs + rm -r pythonFiles/lib + mkdir -p pythonFiles/lib/python/ + ln -s ${python3.pkgs.debugpy}/lib/*/site-packages/debugpy pythonFiles/lib/python/ + buildPythonPath "$propagatedBuildInputs" + for i in pythonFiles/*.py; do + patchPythonScript "$i" + done + '' + lib.optionalString pythonUseFixed '' + # Patch `packages.json` so that nix's *python* is used as default value for `python.pythonPath`. + substituteInPlace "./package.json" \ + --replace "\"default\": \"python\"" "\"default\": \"${python3.interpreter}\"" + ''; + + passthru.updateScript = writeScript "update" '' + #! ${bash}/bin/bash + + set -eu -o pipefail + + export PATH=${lib.makeBinPath [ + curl + coreutils + gnused + jq + nix + ]} + + api=$(curl -s 'https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery' \ + -H 'accept: application/json;api-version=3.0-preview.1' \ + -H 'content-type: application/json' \ + --data-raw '{"filters":[{"criteria":[{"filterType":7,"value":"${mktplcRef.publisher}.${mktplcRef.name}"}]}],"flags":16}') + # Find the latest version compatible with stable vscode version + version=$(echo $api | jq -r '.results[0].extensions[0].versions | map(select(has("properties"))) | map(select(.properties | map(select(.key == "Microsoft.VisualStudio.Code.Engine")) | .[0].value | test("\\^[0-9.]+$"))) | .[0].version') + + if [[ $version != ${mktplcRef.version} ]]; then + tmp=$(mktemp) + curl -sLo $tmp $(echo ${(import ../mktplcExtRefToFetchArgs.nix mktplcRef).url} | sed "s|${mktplcRef.version}|$version|") + hash=$(nix hash file --type sha256 --base32 --sri $tmp) + sed -i -e "s|${mktplcRef.sha256}|$hash|" -e "s|${mktplcRef.version}|$version|" pkgs/applications/editors/vscode/extensions/python/default.nix + fi + ''; + + meta = { + description = "A Visual Studio Code extension with rich support for the Python language"; + downloadPage = "https://marketplace.visualstudio.com/items?itemName=ms-python.python"; + homepage = "https://github.com/Microsoft/vscode-python"; + changelog = "https://github.com/microsoft/vscode-python/releases"; + license = lib.licenses.mit; + platforms = [ "x86_64-linux" "aarch64-darwin" "x86_64-darwin" ]; + maintainers = [ lib.maintainers.jraygauthier lib.maintainers.jfchevrette ]; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-toolsai.jupyter/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-toolsai.jupyter/default.nix new file mode 100644 index 000000000000..ef1a5a4d49ec --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-toolsai.jupyter/default.nix @@ -0,0 +1,39 @@ +{ lib, vscode-utils, jq, moreutils }: + +vscode-utils.buildVscodeMarketplaceExtension { + mktplcRef = { + name = "jupyter"; + publisher = "ms-toolsai"; + version = "2023.2.1000411022"; + sha256 = "sha256-gMK/t/rLXYN3rlHxxVeW0W/FWEP0ZCiEwzM8DY14vYg="; + }; + + nativeBuildInputs = [ + jq + moreutils + ]; + + postPatch = '' + # Patch 'packages.json' so that the expected '__metadata' field exists. + # This works around observed extension load failure on vscode's attempt + # to rewrite 'packages.json' with this new information. + print_jq_query() { + cat <<"EOF" + .__metadata = { + "id": "6c2f1801-1e7f-45b2-9b5c-7782f1e076e8", + "publisherId": "ac8eb7c9-3e59-4b39-8040-f0484d8170ce", + "publisherDisplayName": "Microsoft", + "installedTimestamp": 0 + } + EOF + } + jq "$(print_jq_query)" ./package.json | sponge ./package.json + ''; + + meta = { + description = "Jupyter extension for vscode"; + homepage = "https://github.com/microsoft/vscode-jupyter"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.jraygauthier ]; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vscode-remote.remote-ssh/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vscode-remote.remote-ssh/default.nix new file mode 100644 index 000000000000..de191e97e0dc --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vscode-remote.remote-ssh/default.nix @@ -0,0 +1,95 @@ +{ lib +, vscode-utils +, useLocalExtensions ? false +}: +# Note that useLocalExtensions requires that vscode-server is not running +# on host. If it is, you'll need to remove $HOME/.vscode-server, +# and redo the install by running "Connect to host" on client + +let + inherit (vscode-utils) buildVscodeMarketplaceExtension; + + nodeVersion = "16"; + + # As VS Code executes this code on the remote machine + # we test to see if we can build Node from Nixpkgs + # otherwise we check if the globally installed Node + # is usable. + patch = '' + # Use Node from nixpkgs for NixOS hosts + # + + serverDir="$HOME/.vscode-server/bin/$COMMIT_ID" + serverNode="$serverDir/node" + echo "VS Code Node: $serverNode" + + # Check if VS Code Server has a non-working Node or the wrong version of Node + if ! nodeVersion=$($serverNode -v) || [ "\''${nodeVersion:1:2}" != "${nodeVersion}" ]; then + echo "VS Code Node Version: $nodeVersion" + + if nix-build "<nixpkgs>" -A nodejs-${nodeVersion}_x --out-link "$serverDir/nix" && [ -e "$serverDir/nix/bin/node" ]; then + nodePath="$serverDir/nix/bin/node" + fi + + echo "Node from Nix: $nodePath" + + nodeVersion=$($nodePath -v) + echo "Node from Nix Version: $nodeVersion" + + if [ "\''${nodeVersion:1:2}" != "${nodeVersion}" ]; then + echo "Getting Node from Nix failed, use Local Node instead" + nodePath=$(which node) + echo "Local Node: $nodePath" + nodeVersion=$($nodePath -v) + echo "Local Node Version: $nodeVersion" + fi + + if [ "\''${nodeVersion:1:2}" == "${nodeVersion}" ]; then + echo PATCH: replacing $serverNode with $nodePath + ln -sf $nodePath $serverNode + fi + fi + + nodeVersion=$($serverNode -v) + echo "VS Code Node Version: $nodeVersion" + + if [ "\''${nodeVersion:1:2}" != "${nodeVersion}" ]; then + echo "Unsupported VS Code Node version: $nodeVersion", quitting + fail_with_exitcode ''${o.InstallExitCode.ServerTransferFailed} + fi + + ${lib.optionalString useLocalExtensions '' + # Use local extensions + if [ -d $HOME/.vscode/extensions ]; then + if [ -e $HOME/.vscode-server/extensions ]; then + mv $HOME/.vscode-server/extensions $HOME/.vscode-server/extensions.bak + fi + + mkdir -p $HOME/.vscode-server + ln -s $HOME/.vscode/extensions $HOME/.vscode-server/extensions + fi + ''} + + # + # Start the server + ''; +in +buildVscodeMarketplaceExtension { + mktplcRef = { + name = "remote-ssh"; + publisher = "ms-vscode-remote"; + version = "0.78.0"; + sha256 = "sha256-vd+9d86Z8429QpQVCZm8gtiJDcMpD++aiFVwvCrPg5w="; + }; + + postPatch = '' + substituteInPlace "out/extension.js" \ + --replace '# Start the server\n' '${patch}' + ''; + + meta = { + description = "Use any remote machine with a SSH server as your development environment."; + license = lib.licenses.unfree; + maintainers = [ lib.maintainers.SuperSandro2000 lib.maintainers.tbenst ]; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vscode.cpptools/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vscode.cpptools/default.nix new file mode 100644 index 000000000000..c51a86f888e4 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vscode.cpptools/default.nix @@ -0,0 +1,90 @@ +{ lib, vscode-utils +, fetchurl, writeScript, runtimeShell +, jq, clang-tools +, gdbUseFixed ? true, gdb # The gdb default setting will be fixed to specified. Use version from `PATH` otherwise. +, autoPatchelfHook, makeWrapper, stdenv, lttng-ust, libkrb5, zlib +}: + +/* + Note that this version of the extension still has some nix specific issues + which could not be fixed merely by patching (inside a C# dll). + + In particular, the debugger requires either gnome-terminal or xterm. However + instead of looking for the terminal executable in `PATH`, for any linux platform + the dll uses an hardcoded path to one of these. + + So, in order for debugging to work properly, you merely need to create symlinks + to one of these terminals at the appropriate location. + + The good news is the the utility library is open source and with some effort + we could build a patched version ourselves. See: + + <https://github.com/Microsoft/MIEngine/blob/2885386dc7f35e0f1e44827269341e786361f28e/src/MICore/TerminalLauncher.cs#L156> + + Also, the extension should eventually no longer require an external terminal. See: + + <https://github.com/Microsoft/vscode-cpptools/issues/35> + + Once the symbolic link temporary solution taken, everything shoud run smootly. +*/ + +let + gdbDefaultsTo = if gdbUseFixed then "${gdb}/bin/gdb" else "gdb"; +in +vscode-utils.buildVscodeMarketplaceExtension rec { + mktplcRef = { + name = "cpptools"; + publisher = "ms-vscode"; + version = "1.11.0"; + sha256 = "c0725d3914aeb2515627691727455cc27e7a75031fa02ca957be02cc210bd64d"; + arch = "linux-x64"; + }; + + nativeBuildInputs = [ + autoPatchelfHook + makeWrapper + ]; + + buildInputs = [ + jq + lttng-ust + libkrb5 + zlib + stdenv.cc.cc.lib + ]; + + postPatch = '' + mv ./package.json ./package_orig.json + + # 1. Add activation events so that the extension is functional. This listing is empty when unpacking the extension but is filled at runtime. + # 2. Patch `package.json` so that nix's *gdb* is used as default value for `miDebuggerPath`. + cat ./package_orig.json | \ + jq --slurpfile actEvts ${./package-activation-events.json} '(.activationEvents) = $actEvts[0]' | \ + jq '(.contributes.debuggers[].configurationAttributes | .attach , .launch | .properties.miDebuggerPath | select(. != null) | select(.default == "/usr/bin/gdb") | .default) = "${gdbDefaultsTo}"' > \ + ./package.json + + # Prevent download/install of extensions + touch "./install.lock" + + # Clang-format from nix package. + mv ./LLVM/ ./LLVM_orig + mkdir "./LLVM/" + find "${clang-tools}" -mindepth 1 -maxdepth 1 | xargs ln -s -t "./LLVM" + + # Patching binaries + chmod +x bin/cpptools bin/cpptools-srv bin/cpptools-wordexp debugAdapters/bin/OpenDebugAD7 + patchelf --replace-needed liblttng-ust.so.0 liblttng-ust.so.1 ./debugAdapters/bin/libcoreclrtraceptprovider.so + ''; + + postFixup = lib.optionalString gdbUseFixed '' + wrapProgram $out/share/vscode/extensions/ms-vscode.cpptools/debugAdapters/bin/OpenDebugAD7 --prefix PATH : ${lib.makeBinPath [ gdb ]} + ''; + + meta = { + description = "The C/C++ extension adds language support for C/C++ to Visual Studio Code, including features such as IntelliSense and debugging."; + homepage = "https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools"; + license = lib.licenses.unfree; + maintainers = [ lib.maintainers.jraygauthier lib.maintainers.stargate01 ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vscode.cpptools/missing_elf_deps.sh b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vscode.cpptools/missing_elf_deps.sh new file mode 100755 index 000000000000..e282e126f83b --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vscode.cpptools/missing_elf_deps.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env nix-shell +#! nix-shell -p coreutils -i bash + +scriptDir=$(cd "`dirname "$0"`"; pwd) +echo "scriptDir='$scriptDir'" + +function get_pkg_out() { + local pkg="$1" + local suffix="${2:-}" + local nixExp="with (import <nixpkgs> {}); ${pkg}" + echo "$(nix-build -E "$nixExp" --no-out-link)${suffix}" +} + +interpreter="$(get_pkg_out "stdenv.cc.libc" "/lib/ld-linux-x86-64.so.2")" +echo "interpreter='$interpreter'" + +# For clangformat dep on 'libtinfo.so.5'. +ncursesLibDir="$(get_pkg_out "ncurses5.out" "/lib")" +echo "ncursesLibDir='$ncursesLibDir'" + +# For clanformat dep on 'libstdc++.so.6'. +stdcppLibDir="$(get_pkg_out "stdenv.cc.cc.lib" "/lib")" +echo "stdcppLibDir='$stdcppLibDir'" + +# For clangformat dep on 'libz.so.1'. +zlibLibDir="$(get_pkg_out "zlib.out" "/lib")" +echo "zlibLibDir='$zlibLibDir'" + +function patchelf_mono() { + local exe="$1" + patchelf --set-interpreter "$interpreter" "$exe" +} + +function patchelf_clangformat() { + local exe="$1" + patchelf --set-interpreter "$interpreter" "$exe" + local rpath="$ncursesLibDir:$stdcppLibDir:$zlibLibDir" + patchelf --set-rpath "$rpath" "$exe" +} + +function print_nix_version_clangtools() { + nixClangToolsBin="$(get_pkg_out "clang-tools" "/bin")" + echo "nixClangToolsBin='$nixClangToolsBin'" + $nixClangToolsBin/clang-format --version +} + +function print_nix_version_mono() { + nixMonoBin="$(get_pkg_out "mono" "/bin")" + echo "nixMonoBin='$nixMonoBin'" + $nixMonoBin/mono --version +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vscode.cpptools/package-activation-events.json b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vscode.cpptools/package-activation-events.json new file mode 100644 index 000000000000..c2d8a10f340a --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vscode.cpptools/package-activation-events.json @@ -0,0 +1,25 @@ +[ + "onLanguage:cpp", + "onLanguage:c", + "onCommand:extension.pickNativeProcess", + "onCommand:extension.pickRemoteNativeProcess", + "onCommand:C_Cpp.ConfigurationEdit", + "onCommand:C_Cpp.ConfigurationSelect", + "onCommand:C_Cpp.ConfigurationProviderSelect", + "onCommand:C_Cpp.SwitchHeaderSource", + "onCommand:C_Cpp.Navigate", + "onCommand:C_Cpp.GoToDeclaration", + "onCommand:C_Cpp.PeekDeclaration", + "onCommand:C_Cpp.ToggleErrorSquiggles", + "onCommand:C_Cpp.ToggleIncludeFallback", + "onCommand:C_Cpp.ToggleDimInactiveRegions", + "onCommand:C_Cpp.ToggleSnippets", + "onCommand:C_Cpp.ShowReleaseNotes", + "onCommand:C_Cpp.ResetDatabase", + "onCommand:C_Cpp.PauseParsing", + "onCommand:C_Cpp.ResumeParsing", + "onCommand:C_Cpp.ShowParsingCommands", + "onCommand:C_Cpp.TakeSurvey", + "onDebug", + "workspaceContains:/.vscode/c_cpp_properties.json" +] diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vscode.cpptools/update_helper.sh b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vscode.cpptools/update_helper.sh new file mode 100755 index 000000000000..a5d8d6d1d263 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vscode.cpptools/update_helper.sh @@ -0,0 +1,165 @@ +#!/usr/bin/env nix-shell +#! nix-shell -p coreutils -p jq -p unzip -i bash +set -euo pipefail + +# +# A little script to help maintaining this package. It will: +# +# - download the specified version of the extension to the store and print its url, packed store path and hash +# - unpack the extension, bring it to the store and print its store path and hash +# - fetch its runtimes dependencies from the 'package.json' file using the 'jq' utility, unpack those to the store +# and print its url store path and hash +# - patch elf of the binaries that got a nix replacement +# - bring the patched version to the store +# - run their '--version' and call 'ldd' +# - print the version of the runtime deps nix replacements. +# +# TODO: Print to a properly formatted nix file all the required information to fetch everything (extension + runtime deps). +# TODO: Print x86 and maybe darwin runtime dependencies. +# + +scriptDir=$(cd "`dirname "$0"`"; pwd) +echo "scriptDir='$scriptDir'" + +extPublisher="vscode" +extName="cpptools" +defaultExtVersion="0.16.1" +extVersion="${1:-$defaultExtVersion}" + +echo +echo "------------- Downloading extension ---------------" + +extZipStoreName="${extPublisher}-${extName}.zip" +extUrl="https://ms-vscode.gallery.vsassets.io/_apis/public/gallery/publisher/ms-vscode/extension/cpptools/${extVersion}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage" +echo "extUrl='$extUrl'" +storePathWithSha=$(nix-prefetch-url --name "$extZipStoreName" --print-path "$extUrl" 2> /dev/null) + +cpptoolsZipStorePath="$(echo "$storePathWithSha" | tail -n1)" +cpptoolsZipSha256="$(echo "$storePathWithSha" | head -n1)" +echo "cpptoolsZipStorePath='$cpptoolsZipStorePath'" +echo "cpptoolsZipSha256='$cpptoolsZipSha256'" + + +extStoreName="${extPublisher}-${extName}" + + +function rm_tmpdir() { + rm -rf "$tmpDir" +} +function make_trapped_tmpdir() { + tmpDir=$(mktemp -d) + trap rm_tmpdir EXIT +} + +echo +echo "------------- Unpacked extension ---------------" + +make_trapped_tmpdir +unzip -q -d "$tmpDir" "$cpptoolsZipStorePath" + +cpptoolsStorePath="$(nix add-to-store -n "$extStoreName" "$tmpDir")" +cpptoolsSha256="$(nix hash-path --base32 --type sha512 "$cpptoolsStorePath")" +echo "cpptoolsStorePath='$cpptoolsStorePath'" +echo "cpptoolsSha256='$cpptoolsSha256'" + +rm_tmpdir + +storePathWithSha=$(nix-prefetch-url --print-path "file://${cpptoolsStorePath}/extension/package.json" 2> /dev/null) + +extPackageJSONStorePath="$(echo "$storePathWithSha" | tail -n1)" +extPackageJSONSha256="$(echo "$storePathWithSha" | head -n1)" +echo "extPackageJSONStorePath='$extPackageJSONStorePath'" +echo "extPackageJSONSha256='$extPackageJSONSha256'" + +print_runtime_dep() { + + local outName="$1" + local extPackageJSONStorePath="$2" + local depDesc="$3" + + local urlRaw=$(cat "$extPackageJSONStorePath" | jq -r --arg desc "$depDesc" '.runtimeDependencies[] | select(.description == $desc) | .url') + local url=$(echo $urlRaw | xargs curl -Ls -o /dev/null -w %{url_effective}) + + local urlRawVarStr="${outName}_urlRaw='$urlRaw'" + local urlVarStr="${outName}_url='$url'" + echo "$urlRawVarStr" + echo "$urlVarStr" + + local storePathWithSha="$(nix-prefetch-url --unpack --print-path "$url" 2> /dev/null)" + + local storePath="$(echo "$storePathWithSha" | tail -n1)" + local sha256="$(echo "$storePathWithSha" | head -n1)" + + local sha256VarStr="${outName}_sha256='$sha256'" + local storePathVarStr="${outName}_storePath='$storePath'" + echo "$sha256VarStr" + echo "$storePathVarStr" + + eval "$urlRawVarStr" + eval "$urlVarStr" + eval "$sha256VarStr" + eval "$storePathVarStr" +} + +echo +echo "------------- Runtime dependencies ---------------" + +print_runtime_dep "langComponentBinaries" "$extPackageJSONStorePath" "C/C++ language components (Linux / x86_64)" +print_runtime_dep "monoRuntimeBinaries" "$extPackageJSONStorePath" "Mono Runtime (Linux / x86_64)" +print_runtime_dep "clanFormatBinaries" "$extPackageJSONStorePath" "ClangFormat (Linux / x86_64)" + + +echo +echo "------------- Runtime deps missing elf deps ---------------" + +source "$scriptDir/missing_elf_deps.sh" + +echo +echo "------------- Runtime dep mono ---------------" + +make_trapped_tmpdir +find "$monoRuntimeBinaries_storePath" -mindepth 1 -maxdepth 1 | xargs -d '\n' cp -rp -t "$tmpDir" +chmod -R a+rwx "$tmpDir" + +ls -la "$tmpDir/debugAdapters" + +patchelf_mono "$tmpDir/debugAdapters/mono.linux-x86_64" + +chmod a+x "$tmpDir/debugAdapters/mono.linux-x86_64" +ldd "$tmpDir/debugAdapters/mono.linux-x86_64" +"$tmpDir/debugAdapters/mono.linux-x86_64" --version + +monoRuntimeBinariesPatched_storePath="$(nix add-to-store -n "monoRuntimeBinariesPatched" "$tmpDir")" +echo "monoRuntimeBinariesPatched_storePath='$monoRuntimeBinariesPatched_storePath'" + +rm_tmpdir + + +echo +echo "------------- Runtime dep clang ---------------" +make_trapped_tmpdir +find "$clanFormatBinaries_storePath" -mindepth 1 -maxdepth 1 | xargs -d '\n' cp -rp -t "$tmpDir" +chmod -R a+rwx "$tmpDir" + +ls -la "$tmpDir/bin" + +patchelf_clangformat "$tmpDir/bin/clang-format" + +chmod a+x "$tmpDir/bin/clang-format" +ldd "$tmpDir/bin/clang-format" +"$tmpDir/bin/clang-format" --version + + +clanFormatBinariesPatched_storePath="$(nix add-to-store -n "clanFormatBinariesPatched" "$tmpDir")" +echo "clanFormatBinariesPatched_storePath='$clanFormatBinariesPatched_storePath'" + +rm_tmpdir + +echo +echo "------------- Nix mono ---------------" +print_nix_version_clangtools + +echo +echo "------------- Nix mono ---------------" +print_nix_version_mono + diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vsliveshare.vsliveshare/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vsliveshare.vsliveshare/default.nix new file mode 100644 index 000000000000..209ee1d95a9a --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/ms-vsliveshare.vsliveshare/default.nix @@ -0,0 +1,54 @@ +# 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 +, autoPatchelfHook, bash, makeWrapper +, curl, gcc, libsecret, libunwind, libX11, lttng-ust, util-linux +, desktop-file-utils, xsel +}: + +let + # https://docs.microsoft.com/en-us/visualstudio/liveshare/reference/linux#install-prerequisites-manually + libs = [ + # Credential Storage + libsecret + + # NodeJS + libX11 + + # https://github.com/flathub/com.visualstudio.code.oss/issues/11#issuecomment-392709170 + libunwind + lttng-ust + curl + + # General + gcc.cc.lib + util-linux # libuuid + ]; + +in ((vscode-utils.override { stdenv = gccStdenv; }).buildVscodeMarketplaceExtension { + mktplcRef = { + name = "vsliveshare"; + publisher = "ms-vsliveshare"; + version = "1.0.5834"; + sha256 = "sha256-+KfivY8W1VtUxhdXuUKI5e1elo6Ert1Tsf4xVXsKB3Y="; + }; +}).overrideAttrs({ buildInputs ? [], ... }: { + 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, + # which is less likely to break in the future. + postPatch = '' + substituteInPlace extension.js \ + --replace "'xsel'" "'${xsel}/bin/xsel'" + ''; + + meta = { + description = "Live Share lets you achieve greater confidence at speed by streamlining collaborative editing, debugging, and more in real-time during development"; + homepage = "https://aka.ms/vsls-docs"; + license = lib.licenses.unfree; + maintainers = [ lib.maintainers.jraygauthier lib.maintainers.V ]; + platforms = [ "x86_64-linux" ]; + }; +}) diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/rust-lang.rust-analyzer/build-deps/package.json b/nixpkgs/pkgs/applications/editors/vscode/extensions/rust-lang.rust-analyzer/build-deps/package.json new file mode 100644 index 000000000000..167f92fbede9 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/rust-lang.rust-analyzer/build-deps/package.json @@ -0,0 +1,23 @@ +{ + "name": "rust-analyzer", + "version": "0.3.1426", + "dependencies": { + "anser": "^2.1.1", + "d3": "^7.6.1", + "d3-graphviz": "^5.0.2", + "vscode-languageclient": "^8.0.2", + "@types/node": "~16.11.7", + "@types/vscode": "~1.66.0", + "@typescript-eslint/eslint-plugin": "^5.30.5", + "@typescript-eslint/parser": "^5.30.5", + "@vscode/test-electron": "^2.1.5", + "cross-env": "^7.0.3", + "eslint": "^8.19.0", + "eslint-config-prettier": "^8.5.0", + "ovsx": "^0.5.2", + "prettier": "^2.7.1", + "tslib": "^2.4.0", + "typescript": "^4.7.4", + "vsce": "^2.9.2" + } +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/rust-lang.rust-analyzer/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/rust-lang.rust-analyzer/default.nix new file mode 100644 index 000000000000..dadb291aa534 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/rust-lang.rust-analyzer/default.nix @@ -0,0 +1,90 @@ +{ lib +, fetchFromGitHub +, vscode-utils +, jq +, rust-analyzer +, nodePackages +, moreutils +, esbuild +, pkg-config +, libsecret +, stdenv +, darwin +, setDefaultServerPath ? true +}: + +let + pname = "rust-analyzer"; + publisher = "rust-lang"; + + # Use the plugin version as in vscode marketplace, updated by update script. + inherit (vsix) version; + + releaseTag = "2023-03-06"; + + src = fetchFromGitHub { + owner = "rust-lang"; + repo = "rust-analyzer"; + rev = releaseTag; + sha256 = "sha256-Njlus+vY3N++qWE0JXrGjwcXY2QDFuOV/7NruBBMETY="; + }; + + build-deps = nodePackages."rust-analyzer-build-deps-../../applications/editors/vscode/extensions/rust-lang.rust-analyzer/build-deps"; + # FIXME: Making a new derivation to link `node_modules` and run `npm run package` + # will cause a build failure. + vsix = build-deps.override { + src = "${src}/editors/code"; + outputs = [ "vsix" "out" ]; + + inherit releaseTag; + + nativeBuildInputs = [ + jq moreutils esbuild + # Required by `keytar`, which is a dependency of `vsce`. + pkg-config libsecret + ] ++ lib.optionals stdenv.isDarwin [ + darwin.apple_sdk.frameworks.AppKit + darwin.apple_sdk.frameworks.Security + ]; + + # Follows https://github.com/rust-lang/rust-analyzer/blob/41949748a6123fd6061eb984a47f4fe780525e63/xtask/src/dist.rs#L39-L65 + postRebuild = '' + jq ' + .version = $ENV.version | + .releaseTag = $ENV.releaseTag | + .enableProposedApi = false | + walk(del(.["$generated-start"]?) | del(.["$generated-end"]?)) + ' package.json | sponge package.json + + mkdir -p $vsix + # vsce ask for continue due to missing LICENSE.md + # Should be removed after https://github.com/rust-lang/rust-analyzer/commit/acd5c1f19bf7246107aaae7b6fe3f676a516c6d2 + echo y | npx vsce package -o $vsix/${pname}.zip + ''; + }; + +in +vscode-utils.buildVscodeExtension { + inherit version vsix; + name = "${pname}-${version}"; + src = "${vsix}/${pname}.zip"; + vscodeExtUniqueId = "${publisher}.${pname}"; + vscodeExtPublisher = publisher; + vscodeExtName = pname; + + nativeBuildInputs = lib.optionals setDefaultServerPath [ jq moreutils ]; + + preInstall = lib.optionalString setDefaultServerPath '' + jq '.contributes.configuration.properties."rust-analyzer.server.path".default = $s' \ + --arg s "${rust-analyzer}/bin/rust-analyzer" \ + package.json | sponge package.json + ''; + + meta = { + description = "An alternative rust language server to the RLS"; + homepage = "https://github.com/rust-lang/rust-analyzer"; + license = [ lib.licenses.mit lib.licenses.asl20 ]; + maintainers = [ ]; + platforms = lib.platforms.all; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/rust-lang.rust-analyzer/update.sh b/nixpkgs/pkgs/applications/editors/vscode/extensions/rust-lang.rust-analyzer/update.sh new file mode 100755 index 000000000000..fbf62c3b9db4 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/rust-lang.rust-analyzer/update.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl jq libarchive +#shellcheck shell=bash +set -euo pipefail +cd "$(dirname "$0")" +nixpkgs=../../../../../../ +node_packages="$nixpkgs/pkgs/development/node-packages" +owner=rust-lang +repo=rust-analyzer +ver=$( + curl -s "https://api.github.com/repos/$owner/$repo/releases" | + jq 'map(select(.prerelease | not)) | .[0].tag_name' --raw-output +) +node_src="$(nix-build "$nixpkgs" -A rust-analyzer.src --no-out-link)/editors/code" + +# Check vscode compatibility +req_vscode_ver="$(jq '.engines.vscode' "$node_src/package.json" --raw-output)" +req_vscode_ver="${req_vscode_ver#^}" +cur_vscode_ver="$(nix-instantiate --eval --strict "$nixpkgs" -A vscode.version | tr -d '"')" +if [[ "$(nix-instantiate --eval --strict -E "(builtins.compareVersions \"$req_vscode_ver\" \"$cur_vscode_ver\")")" -gt 0 ]]; then + echo "vscode $cur_vscode_ver is incompatible with the extension requiring ^$req_vscode_ver" + exit 1 +fi + +extension_ver=$(curl "https://github.com/$owner/$repo/releases/download/$ver/rust-analyzer-linux-x64.vsix" -L | + bsdtar -xf - --to-stdout extension/package.json | # Use bsdtar to extract vsix(zip). + jq --raw-output '.version') +echo "Extension version: $extension_ver" + +# We need devDependencies to build vsix. +# `esbuild` is a binary package an is already in nixpkgs so we omit it here. +jq '{ name, version: $ver, dependencies: (.dependencies + .devDependencies | del(.esbuild)) }' "$node_src/package.json" \ + --arg ver "$extension_ver" \ + >"build-deps/package.json.new" + +old_deps="$(jq '.dependencies' build-deps/package.json)" +new_deps="$(jq '.dependencies' build-deps/package.json.new)" +if [[ "$old_deps" == "$new_deps" ]]; then + echo "package.json dependencies not changed, do simple version change" + + sed -E '/^ "rust-analyzer-build-deps/,+3 s/version = ".*"/version = "'"$extension_ver"'"/' \ + --in-place "$node_packages"/node-packages.nix + mv build-deps/package.json{.new,} +else + echo "package.json dependencies changed, updating nodePackages" + mv build-deps/package.json{.new,} + + ./"$node_packages"/generate.sh +fi + +echo "Remember to also update the releaseTag and hash in default.nix!" diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/sumneko.lua/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/sumneko.lua/default.nix new file mode 100644 index 000000000000..fe6e79be40dd --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/sumneko.lua/default.nix @@ -0,0 +1,29 @@ +{ lib +, vscode-utils +, lua-language-server +}: + +vscode-utils.buildVscodeMarketplaceExtension { + mktplcRef = { + name = "lua"; + publisher = "sumneko"; + version = "3.6.19"; + sha256 = "sha256-7f8zovJS1lNwrUryxgadrBbNRw/OwFqry57JWKY1D8E="; + }; + + # Running chmod in runtime will lock up extension + # indefinitely if the binary is in nix store. + patches = [ ./remove-chmod.patch ]; + + postInstall = '' + ln -sf ${lua-language-server}/bin/lua-language-server \ + $out/$installPrefix/server/bin/lua-language-server + ''; + + meta = { + description = "The Lua language server provides various language features for Lua to make development easier and faster."; + homepage = "https://marketplace.visualstudio.com/items?itemName=sumneko.lua"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.lblasc ]; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/sumneko.lua/remove-chmod.patch b/nixpkgs/pkgs/applications/editors/vscode/extensions/sumneko.lua/remove-chmod.patch new file mode 100644 index 000000000000..8fd44e9476b4 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/sumneko.lua/remove-chmod.patch @@ -0,0 +1,14 @@ +--- a/client/out/languageserver.js ++++ b/client/out/languageserver.js +@@ -145,11 +145,9 @@ + break; + case "linux": + command = this.context.asAbsolutePath(path.join('server', binDir ? binDir : 'bin-Linux', 'lua-language-server')); +- yield fs.promises.chmod(command, '777'); + break; + case "darwin": + command = this.context.asAbsolutePath(path.join('server', binDir ? binDir : 'bin-macOS', 'lua-language-server')); +- yield fs.promises.chmod(command, '777'); + break; + default: + throw new Error(`Unsupported operating system "${platform}"!`); diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/updateSettings.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/updateSettings.nix new file mode 100644 index 000000000000..443b40930279 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/updateSettings.nix @@ -0,0 +1,39 @@ +# Updates the vscode setting file base on a nix expression +# should run from the workspace root. +{ writeShellScriptBin +, lib +, jq +}: +##User Input +{ settings ? {} +# if marked as true will create an empty json file if does not exist +, createIfDoesNotExists ? true +, vscodeSettingsFile ? ".vscode/settings.json" +, userSettingsFolder ? "" +, symlinkFromUserSetting ? false +}: +let + + updateVSCodeSettingsCmd = '' + ( + echo 'updateSettings.nix: Updating ${vscodeSettingsFile}...' + oldSettings=$(cat ${vscodeSettingsFile}) + echo $oldSettings' ${builtins.toJSON settings}' | ${jq}/bin/jq -s add > ${vscodeSettingsFile} + )''; + + createEmptySettingsCmd = ''mkdir -p .vscode && echo "{}" > ${vscodeSettingsFile}''; + fileName = builtins.baseNameOf vscodeSettingsFile; + symlinkFromUserSettingCmd = lib.optionalString symlinkFromUserSetting + '' && mkdir -p "${userSettingsFolder}" && ln -sfv "$(pwd)/${vscodeSettingsFile}" "${userSettingsFolder}/" ''; +in + + writeShellScriptBin ''vscodeNixUpdate-${lib.removeSuffix ".json" (fileName)}'' + (lib.optionalString (settings != {}) + (if createIfDoesNotExists then '' + [ ! -f "${vscodeSettingsFile}" ] && ${createEmptySettingsCmd} + ${updateVSCodeSettingsCmd} ${symlinkFromUserSettingCmd} + '' + else ''[ -f "${vscodeSettingsFile}" ] && ${updateVSCodeSettingsCmd} ${symlinkFromUserSettingCmd} + '' + ) + ) diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/updateSettingsTest.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/updateSettingsTest.nix new file mode 100644 index 000000000000..097b9cad1661 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/updateSettingsTest.nix @@ -0,0 +1,6 @@ +with import <nixpkgs>{}; +callPackage (import ./updateSettings.nix) {} { + settings = { + a = "fdsdf"; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/update_installed_exts.sh b/nixpkgs/pkgs/applications/editors/vscode/extensions/update_installed_exts.sh new file mode 100755 index 000000000000..6fff7454493a --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/update_installed_exts.sh @@ -0,0 +1,90 @@ +#! /usr/bin/env nix-shell +#! nix-shell -i bash -p curl jq unzip +# shellcheck shell=bash +set -eu -o pipefail + +# can be added to your configuration with the following command and snippet: +# $ ./pkgs/applications/editors/vscode/extensions/update_installed_exts.sh > extensions.nix +# +# packages = with pkgs; +# (vscode-with-extensions.override { +# vscodeExtensions = map +# (extension: vscode-utils.buildVscodeMarketplaceExtension { +# mktplcRef = { +# inherit (extension) name publisher version sha256; +# }; +# }) +# (import ./extensions.nix).extensions; +# }) +# ] + +# Helper to just fail with a message and non-zero exit code. +function fail() { + echo "$1" >&2 + exit 1 +} + +# Helper to clean up after ourselves if we're killed by SIGINT. +function clean_up() { + TDIR="${TMPDIR:-/tmp}" + echo "Script killed, cleaning up tmpdirs: $TDIR/vscode_exts_*" >&2 + rm -Rf "$TDIR/vscode_exts_*" +} + +function get_vsixpkg() { + N="$1.$2" + + # Create a tempdir for the extension download. + EXTTMP=$(mktemp -d -t vscode_exts_XXXXXXXX) + + URL="https://$1.gallery.vsassets.io/_apis/public/gallery/publisher/$1/extension/$2/latest/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage" + + # Quietly but delicately curl down the file, blowing up at the first sign of trouble. + curl --silent --show-error --retry 3 --fail -X GET -o "$EXTTMP/$N.zip" "$URL" + # Unpack the file we need to stdout then pull out the version + VER=$(jq -r '.version' <(unzip -qc "$EXTTMP/$N.zip" "extension/package.json")) + # Calculate the SHA + SHA=$(nix-hash --flat --base32 --type sha256 "$EXTTMP/$N.zip") + + # Clean up. + rm -Rf "$EXTTMP" + # I don't like 'rm -Rf' lurking in my scripts but this seems appropriate. + + cat <<-EOF + { + name = "$2"; + publisher = "$1"; + version = "$VER"; + sha256 = "$SHA"; + } +EOF +} + +# See if we can find our `code` binary somewhere. +if [ $# -ne 0 ]; then + CODE=$1 +else + CODE=$(command -v code || command -v codium) +fi + +if [ -z "$CODE" ]; then + # Not much point continuing. + fail "VSCode executable not found" +fi + +# Try to be a good citizen and clean up after ourselves if we're killed. +trap clean_up SIGINT + +# Begin the printing of the nix expression that will house the list of extensions. +printf '{ extensions = [\n' + +# Note that we are only looking to update extensions that are already installed. +for i in $($CODE --list-extensions) +do + OWNER=$(echo "$i" | cut -d. -f1) + EXT=$(echo "$i" | cut -d. -f2) + + get_vsixpkg "$OWNER" "$EXT" +done +# Close off the nix expression. +printf '];\n}' diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/cmake-build-extension-only.patch b/nixpkgs/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/cmake-build-extension-only.patch new file mode 100644 index 000000000000..dab75e463e58 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/cmake-build-extension-only.patch @@ -0,0 +1,52 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6ae4dfb..519f544 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -16,13 +16,6 @@ endif() + set(VERSION "${VERSION}${VERSION_SUFFIX}") + message("Version ${VERSION}") + +-set(LLDB_PACKAGE $ENV{LLDB_PACKAGE} CACHE PATH "Zip archive containing LLDB files") +-if (LLDB_PACKAGE) +- message("Using LLDB_PACKAGE=${LLDB_PACKAGE}") +-else() +- message(FATAL_ERROR "LLDB_PACKAGE not set." ) +-endif() +- + if (CMAKE_SYSROOT) + set(CMAKE_C_FLAGS "--sysroot=${CMAKE_SYSROOT} ${CMAKE_C_FLAGS}") + set(CMAKE_CXX_FLAGS "--sysroot=${CMAKE_SYSROOT} ${CMAKE_CXX_FLAGS}") +@@ -93,16 +86,6 @@ configure_file(package.json ${CMAKE_CURRENT_BINARY_DIR}/package.json @ONLY) + configure_file(webpack.config.js ${CMAKE_CURRENT_BINARY_DIR}/webpack.config.js @ONLY) + file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/package-lock.json DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) + +-# Run 'npm install' +-execute_process( +- COMMAND ${NPM} ci # like install, but actually respects package-lock file. +- WORKING_DIRECTORY ${CMAKE_BINARY_DIR} +- RESULT_VARIABLE Result +-) +-if (NOT ${Result} EQUAL 0) +- message(FATAL_ERROR "npm intall failed: ${Result}") +-endif() +- + # Copy it back, so we can commit the lock file. + file(COPY ${CMAKE_CURRENT_BINARY_DIR}/package-lock.json DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}) + +@@ -154,6 +137,7 @@ add_custom_target(tests + + add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_BINARY_DIR}/README.md) + add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.md ${CMAKE_CURRENT_BINARY_DIR}/CHANGELOG.md) ++add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE ${CMAKE_CURRENT_BINARY_DIR}/LICENSE) + add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/images/lldb.png ${CMAKE_CURRENT_BINARY_DIR}/images/lldb.png) + add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/images/user.svg ${CMAKE_CURRENT_BINARY_DIR}/images/user.svg) + add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/images/users.svg ${CMAKE_CURRENT_BINARY_DIR}/images/users.svg) +@@ -170,6 +154,7 @@ add_custom_target(dev_debugging + set(PackagedFilesBootstrap + README.md + CHANGELOG.md ++ LICENSE + extension.js + images/* + syntaxes/* + diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/default.nix new file mode 100644 index 000000000000..4da501960459 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/default.nix @@ -0,0 +1,143 @@ +{ pkgs, lib, stdenv, fetchFromGitHub, runCommand, rustPlatform, makeWrapper, llvmPackages +, buildNpmPackage, cmake, nodejs, unzip, python3, pkg-config, libsecret, darwin +}: +assert lib.versionAtLeast python3.version "3.5"; +let + publisher = "vadimcn"; + pname = "vscode-lldb"; + version = "1.9.1"; + + vscodeExtUniqueId = "${publisher}.${pname}"; + vscodeExtPublisher = publisher; + vscodeExtName = pname; + + src = fetchFromGitHub { + owner = "vadimcn"; + repo = "vscode-lldb"; + rev = "v${version}"; + sha256 = "sha256-DqxdZtSW8TZaOFGXOZQ7a4tmgRj6iAWDppCNomdfVxY="; + }; + + # need to build a custom version of lldb and llvm for enhanced rust support + lldb = (import ./lldb.nix { inherit fetchFromGitHub runCommand llvmPackages; }); + + adapter = rustPlatform.buildRustPackage { + pname = "${pname}-adapter"; + inherit version src; + + cargoSha256 = "sha256-+hfNkr9cZbOcWdWKUWUqDj9a0PKjKeApFXYZzS1XokE="; + + nativeBuildInputs = [ makeWrapper ]; + + buildAndTestSubdir = "adapter"; + + buildFeatures = [ "weak-linkage" ]; + + cargoBuildFlags = [ + "--lib" + "--bin=codelldb" + ]; + + # Tests are linked to liblldb but it is not available here. + doCheck = false; + }; + + nodeDeps = buildNpmPackage { + pname = "${pname}-node-deps"; + inherit version src; + + npmDepsHash = "sha256-Cdlq1jxHSCfPjXhasClc6XzEUp3vlLgkStbhYtCyc7E="; + + nativeBuildInputs = [ + python3 + pkg-config + ]; + + buildInputs = [ + libsecret + ] ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ + Security + AppKit + ]); + + dontNpmBuild = true; + + installPhase = '' + runHook preInstall + + mkdir -p $out/lib + cp -r node_modules $out/lib + + runHook postInstall + ''; + }; + +in stdenv.mkDerivation { + pname = "vscode-extension-${publisher}-${pname}"; + inherit src version vscodeExtUniqueId vscodeExtPublisher vscodeExtName; + + installPrefix = "share/vscode/extensions/${vscodeExtUniqueId}"; + + nativeBuildInputs = [ cmake nodejs unzip makeWrapper ]; + + patches = [ ./cmake-build-extension-only.patch ]; + + postPatch = '' + # temporary patch for forgotten version updates + substituteInPlace CMakeLists.txt \ + --replace "1.9.0" ${version} + ''; + + postConfigure = '' + cp -r ${nodeDeps}/lib/node_modules . + ''; + + cmakeFlags = [ + # Do not append timestamp to version. + "-DVERSION_SUFFIX=" + ]; + makeFlags = [ "vsix_bootstrap" ]; + + preBuild = lib.optionalString stdenv.isDarwin '' + export HOME=$TMPDIR + ''; + + installPhase = '' + ext=$out/$installPrefix + runHook preInstall + + unzip ./codelldb-bootstrap.vsix 'extension/*' -d ./vsix-extracted + + mkdir -p $ext/{adapter,formatters} + mv -t $ext vsix-extracted/extension/* + cp -t $ext/adapter ${adapter}/{bin,lib}/* ../adapter/*.py + wrapProgram $ext/adapter/codelldb \ + --set-default LLDB_DEBUGSERVER_PATH "${lldb.out}/bin/lldb-server" + cp -t $ext/formatters ../formatters/*.py + ln -s ${lldb.lib} $ext/lldb + # Mark that all components are installed. + touch $ext/platform.ok + + runHook postInstall + ''; + + # `adapter` will find python binary and libraries at runtime. + postFixup = '' + wrapProgram $out/$installPrefix/adapter/codelldb \ + --prefix PATH : "${python3}/bin" \ + --prefix LD_LIBRARY_PATH : "${python3}/lib" + ''; + + passthru = { + inherit lldb adapter; + updateScript = ./update.sh; + }; + + meta = { + description = "A native debugger extension for VSCode based on LLDB"; + homepage = "https://github.com/vadimcn/vscode-lldb"; + license = [ lib.licenses.mit ]; + maintainers = [ lib.maintainers.nigelgbanks ]; + platforms = lib.platforms.all; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/fix-python-installation.patch b/nixpkgs/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/fix-python-installation.patch new file mode 100644 index 000000000000..e4ca6bb6299e --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/fix-python-installation.patch @@ -0,0 +1,13 @@ +diff --git a/bindings/python/CMakeLists.txt b/bindings/python/CMakeLists.txt +index 82a52da89a7e..5127dc1d8f41 100644 +--- a/bindings/python/CMakeLists.txt ++++ b/bindings/python/CMakeLists.txt +@@ -160,7 +160,7 @@ function(finish_swig_python swig_target lldb_python_bindings_dir lldb_python_tar + if(LLDB_BUILD_FRAMEWORK) + set(LLDB_PYTHON_INSTALL_PATH ${LLDB_FRAMEWORK_INSTALL_DIR}/LLDB.framework/Versions/${LLDB_FRAMEWORK_VERSION}/Resources/Python) + else() +- set(LLDB_PYTHON_INSTALL_PATH ${LLDB_PYTHON_RELATIVE_PATH}) ++ set(LLDB_PYTHON_INSTALL_PATH ${CMAKE_INSTALL_LIBDIR}/../${LLDB_PYTHON_RELATIVE_PATH}) + endif() + if (NOT CMAKE_CFG_INTDIR STREQUAL ".") + string(REPLACE ${CMAKE_CFG_INTDIR} "\$\{CMAKE_INSTALL_CONFIG_NAME\}" LLDB_PYTHON_INSTALL_PATH ${LLDB_PYTHON_INSTALL_PATH}) diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/lldb.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/lldb.nix new file mode 100644 index 000000000000..a01e538f93e6 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/lldb.nix @@ -0,0 +1,35 @@ +# Patched lldb for Rust language support. +{ fetchFromGitHub, runCommand, llvmPackages }: +let + llvmSrc = fetchFromGitHub { + owner = "vadimcn"; + repo = "llvm-project"; + # codelldb/14.x branch + rev = "4c267c83cbb55fedf2e0b89644dc1db320fdfde7"; + sha256 = "sha256-jM//ej6AxnRYj+8BAn4QrxHPT6HiDzK5RqHPSg3dCcw="; + }; +in (llvmPackages.lldb.overrideAttrs (oldAttrs: rec { + passthru = (oldAttrs.passthru or {}) // { + inherit llvmSrc; + }; + + patches = oldAttrs.patches ++ [ + # backport of https://github.com/NixOS/nixpkgs/commit/0d3002334850a819d1a5c8283c39f114af907cd4 + # remove when https://github.com/NixOS/nixpkgs/issues/166604 fixed + ./fix-python-installation.patch + ]; + + doInstallCheck = true; + + # installCheck for lldb_14 currently broken + # https://github.com/NixOS/nixpkgs/issues/166604#issuecomment-1086103692 + # ignore the oldAttrs installCheck + installCheckPhase = '' + versionOutput="$($out/bin/lldb --version)" + echo "'lldb --version' returns: $versionOutput" + echo "$versionOutput" | grep -q 'rust-enabled' + ''; +})).override({ + monorepoSrc = llvmSrc; + libllvm = llvmPackages.libllvm.override({ monorepoSrc = llvmSrc; }); +}) diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/update.sh b/nixpkgs/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/update.sh new file mode 100755 index 000000000000..d635a6f778df --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/vadimcn.vscode-lldb/update.sh @@ -0,0 +1,48 @@ +#! /usr/bin/env nix-shell +#! nix-shell ../../update-shell.nix -i bash -p wget prefetch-npm-deps + +set -eo pipefail +cd "$(dirname "${BASH_SOURCE[0]}")" + +echo " +FIXME: This script doesn't update patched lldb. Please manually check branches +of https://github.com/vadimcn/llvm-project and update lldb with correct version of LLVM. +" + +# Ideally, nixpkgs points to default.nix file of Nixpkgs official tree +nixpkgs=../../../../../.. +nixFile=./default.nix +owner=vadimcn +repo=vscode-lldb +version="$1" +if [[ $# -ne 1 ]]; then + # no version specified, find the newest one + version=$( + curl -s "https://api.github.com/repos/$owner/$repo/releases" | + jq 'map(select(.prerelease | not)) | .[0].tag_name' --raw-output | + sed 's/[\"v]//' + ) +fi +old_version=$(sed -nE 's/.*\bversion = "(.*)".*/\1/p' ./default.nix) +if grep -q 'cargoSha256 = ""' ./default.nix; then + old_version='broken' +fi +if [[ "$version" == "$old_version" ]]; then + echo "Up to date: $version" + exit +fi +echo "$old_version -> $version" + +# update hashes +sed -E 's/\bversion = ".*?"/version = "'$version'"/' --in-place "$nixFile" +srcHash=$(nix-prefetch fetchFromGitHub --owner vadimcn --repo vscode-lldb --rev "v$version") +sed -E 's#\bsha256 = ".*?"#sha256 = "'$srcHash'"#' --in-place "$nixFile" +cargoHash=$(nix-prefetch "{ sha256 }: (import $nixpkgs {}).vscode-extensions.vadimcn.vscode-lldb.adapter.cargoDeps.overrideAttrs (_: { outputHash = sha256; })") +sed -E 's#\bcargoSha256 = ".*?"#cargoSha256 = "'$cargoHash'"#' --in-place "$nixFile" + +pushd $TMPDIR +wget https://raw.githubusercontent.com/$owner/$repo/v${version}/package-lock.json +npmDepsHash=$(prefetch-npm-deps ./package-lock.json) +popd +sed -E 's#\bnpmDepsHash = ".*?"#npmDepsHash = "'$npmDepsHash'"#' --in-place "$nixFile" + diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/vscode-utils.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/vscode-utils.nix new file mode 100644 index 000000000000..0eba230ad8e0 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/vscode-utils.nix @@ -0,0 +1,140 @@ +{ stdenv, lib, buildEnv, writeShellScriptBin, fetchurl, vscode, unzip, jq }: +let + buildVscodeExtension = a@{ + name, + src, + # Same as "Unique Identifier" on the extension's web page. + # For the moment, only serve as unique extension dir. + vscodeExtPublisher, + vscodeExtName, + vscodeExtUniqueId, + configurePhase ? '' + runHook preConfigure + runHook postConfigure + '', + buildPhase ?'' + runHook preBuild + runHook postBuild + '', + dontPatchELF ? true, + dontStrip ? true, + nativeBuildInputs ? [], + passthru ? { }, + ... + }: + stdenv.mkDerivation ((removeAttrs a [ "vscodeExtUniqueId" ]) // { + + name = "vscode-extension-${name}"; + + passthru = passthru // { + inherit vscodeExtPublisher vscodeExtName vscodeExtUniqueId; + }; + + inherit configurePhase buildPhase dontPatchELF dontStrip; + + installPrefix = "share/vscode/extensions/${vscodeExtUniqueId}"; + + nativeBuildInputs = [ unzip ] ++ nativeBuildInputs; + + installPhase = '' + + runHook preInstall + + mkdir -p "$out/$installPrefix" + find . -mindepth 1 -maxdepth 1 | xargs -d'\n' mv -t "$out/$installPrefix/" + + runHook postInstall + ''; + + }); + + fetchVsixFromVscodeMarketplace = mktplcExtRef: + fetchurl (import ./mktplcExtRefToFetchArgs.nix mktplcExtRef); + + buildVscodeMarketplaceExtension = a@{ + name ? "", + src ? null, + vsix ? null, + mktplcRef, + ... + }: assert "" == name; assert null == src; + buildVscodeExtension ((removeAttrs a [ "mktplcRef" "vsix" ]) // { + name = "${mktplcRef.publisher}-${mktplcRef.name}-${mktplcRef.version}"; + version = mktplcRef.version; + src = if (vsix != null) + then vsix + else fetchVsixFromVscodeMarketplace mktplcRef; + vscodeExtPublisher = mktplcRef.publisher; + vscodeExtName = mktplcRef.name; + vscodeExtUniqueId = "${mktplcRef.publisher}.${mktplcRef.name}"; + }); + + mktplcRefAttrList = [ + "name" + "publisher" + "version" + "sha256" + "arch" + ]; + + mktplcExtRefToExtDrv = ext: + buildVscodeMarketplaceExtension (removeAttrs ext mktplcRefAttrList // { + mktplcRef = builtins.intersectAttrs (lib.genAttrs mktplcRefAttrList (_: null)) ext; + }); + + extensionFromVscodeMarketplace = mktplcExtRefToExtDrv; + extensionsFromVscodeMarketplace = mktplcExtRefList: + builtins.map extensionFromVscodeMarketplace mktplcExtRefList; + + vscodeWithConfiguration = import ./vscodeWithConfiguration.nix { + inherit lib extensionsFromVscodeMarketplace writeShellScriptBin; + vscodeDefault = vscode; + }; + + vscodeExts2nix = import ./vscodeExts2nix.nix { + inherit lib writeShellScriptBin; + vscodeDefault = vscode; + }; + + vscodeEnv = import ./vscodeEnv.nix { + inherit lib buildEnv writeShellScriptBin extensionsFromVscodeMarketplace jq; + vscodeDefault = vscode; + }; + + toExtensionJsonEntry = ext: rec { + identifier = { + id = ext.vscodeExtUniqueId; + uuid = ""; + }; + + version = ext.version; + + location = { + "$mid" = 1; + fsPath = ext.outPath + "/share/vscode/extensions/${ext.vscodeExtUniqueId}"; + path = location.fsPath; + scheme = "file"; + }; + + metadata = { + id = ""; + publisherId = ""; + publisherDisplayName = ext.vscodeExtPublisher; + targetPlatform = "undefined"; + isApplicationScoped = false; + updated = false; + isPreReleaseVersion = false; + installedTimestamp = 0; + preRelease = false; + }; + }; + + toExtensionJson = extensions: builtins.toJSON (map toExtensionJsonEntry extensions); +in +{ + inherit fetchVsixFromVscodeMarketplace buildVscodeExtension + buildVscodeMarketplaceExtension extensionFromVscodeMarketplace + extensionsFromVscodeMarketplace + vscodeWithConfiguration vscodeExts2nix vscodeEnv + toExtensionJsonEntry toExtensionJson; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/vscodeEnv.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/vscodeEnv.nix new file mode 100644 index 000000000000..db00ba13e3c8 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/vscodeEnv.nix @@ -0,0 +1,85 @@ +#Use vscodeWithConfiguration and vscodeExts2nix to create a vscode executable. When the executable exits, it updates the mutable extension file, which is imported when evaluated by Nix later. +{ lib +, buildEnv +, writeShellScriptBin +, extensionsFromVscodeMarketplace +, vscodeDefault +, jq +}: +##User input +{ vscode ? vscodeDefault +, nixExtensions ? [] +, vscodeExtsFolderName ? ".vscode-exts" +# will add to the command updateSettings (which will run on executing vscode) settings to override in settings.json file +, settings ? {} +, createSettingsIfDoesNotExists ? true +, launch ? {} +, createLaunchIfDoesNotExists ? true +# will add to the command updateKeybindings(which will run on executing vscode) keybindings to override in keybinding.json file +, keybindings ? {} +, createKeybindingsIfDoesNotExists ? true +, user-data-dir ? ''"''${TMP}''${name}"/vscode-data-dir'' +# if file exists will use it and import the extensions in it into this derivation else will use empty extensions list +# this file will be created/updated by vscodeExts2nix when vscode exists +, mutableExtensionsFile +}: +let + mutableExtensionsFilePath = toString mutableExtensionsFile; + mutableExtensions = lib.optionals (builtins.pathExists mutableExtensionsFile) (import mutableExtensionsFilePath); + vscodeWithConfiguration = import ./vscodeWithConfiguration.nix { + inherit lib writeShellScriptBin extensionsFromVscodeMarketplace; + vscodeDefault = vscode; + } + { + inherit nixExtensions mutableExtensions vscodeExtsFolderName user-data-dir; + }; + + updateSettings = import ./updateSettings.nix { inherit lib writeShellScriptBin jq; }; + userSettingsFolder = "${ user-data-dir }/User"; + + updateSettingsCmd = updateSettings { + settings = { + "extensions.autoCheckUpdates" = false; + "extensions.autoUpdate" = false; + "update.mode" = "none"; + } // settings; + inherit userSettingsFolder; + createIfDoesNotExists = createSettingsIfDoesNotExists; + symlinkFromUserSetting = (user-data-dir != ""); + }; + + updateLaunchCmd = updateSettings { + settings = launch; + createIfDoesNotExists = createLaunchIfDoesNotExists; + vscodeSettingsFile = ".vscode/launch.json"; + }; + + updateKeybindingsCmd = updateSettings { + settings = keybindings; + createIfDoesNotExists = createKeybindingsIfDoesNotExists; + vscodeSettingsFile = ".vscode/keybindings.json"; + inherit userSettingsFolder; + symlinkFromUserSetting = (user-data-dir != ""); + }; + + vscodeExts2nix = import ./vscodeExts2nix.nix { + inherit lib writeShellScriptBin; + vscodeDefault = vscodeWithConfiguration; + } + { + extensionsToIgnore = nixExtensions; + extensions = mutableExtensions; + }; + code = writeShellScriptBin "code" '' + ${updateSettingsCmd}/bin/vscodeNixUpdate-settings + ${updateLaunchCmd}/bin/vscodeNixUpdate-launch + ${updateKeybindingsCmd}/bin/vscodeNixUpdate-keybindings + ${vscodeWithConfiguration}/bin/code --wait "$@" + echo 'running vscodeExts2nix to update ${mutableExtensionsFilePath}...' + ${vscodeExts2nix}/bin/vscodeExts2nix > ${mutableExtensionsFilePath} + ''; +in +buildEnv { + name = "vscodeEnv"; + paths = [ code vscodeExts2nix updateSettingsCmd updateLaunchCmd updateKeybindingsCmd ]; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/vscodeEnvTest.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/vscodeEnvTest.nix new file mode 100644 index 000000000000..19a9edbf1afe --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/vscodeEnvTest.nix @@ -0,0 +1,11 @@ +with import <nixpkgs>{}; +callPackage (import ./vscodeEnv.nix) { + extensionsFromVscodeMarketplace = vscode-utils.extensionsFromVscodeMarketplace; + vscodeDefault = vscode; +} { + mutableExtensionsFile = ./extensions.nix; + settings = { + a = "fdsdf"; + t = "test"; + }; +} diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/vscodeExts2nix.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/vscodeExts2nix.nix new file mode 100644 index 000000000000..58cbe663c901 --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/vscodeExts2nix.nix @@ -0,0 +1,44 @@ +# based on the passed vscode will stdout a nix expression with the installed vscode extensions +{ lib +, vscodeDefault +, writeShellScriptBin +}: + +##User input +{ vscode ? vscodeDefault +, extensionsToIgnore ? [] +# will use those extensions to get sha256 if still exists when executed. +, extensions ? [] +}: +let + mktplcExtRefToFetchArgs = import ./mktplcExtRefToFetchArgs.nix; +in +writeShellScriptBin "vscodeExts2nix" '' + echo '[' + + for line in $(${vscode}/bin/code --list-extensions --show-versions \ + ${lib.optionalString (extensionsToIgnore != []) '' + | grep -v -i '^\(${lib.concatMapStringsSep "\\|" (e : "${e.publisher}.${e.name}") extensionsToIgnore}\)' + ''} + ) ; do + [[ $line =~ ([^.]*)\.([^@]*)@(.*) ]] + name=''${BASH_REMATCH[2]} + publisher=''${BASH_REMATCH[1]} + version=''${BASH_REMATCH[3]} + + extensions="${lib.concatMapStringsSep "." (e : "${e.publisher}${e.name}@${e.sha256}") extensions}" + reCurrentExt=$publisher$name"@([^.]*)" + if [[ $extensions =~ $reCurrentExt ]]; then + sha256=''${BASH_REMATCH[1]} + else + sha256=$( + nix-prefetch-url "${(mktplcExtRefToFetchArgs {publisher = ''"$publisher"''; name = ''"$name"''; version = ''"$version"'';}).url}" 2> /dev/null + ) + fi + + echo "{ name = \"''${name}\"; publisher = \"''${publisher}\"; version = \"''${version}\"; sha256 = \"''${sha256}\"; }" + done + + + echo ']' +'' diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/vscodeWithConfiguration.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/vscodeWithConfiguration.nix new file mode 100644 index 000000000000..39479d7c2f2c --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/vscodeWithConfiguration.nix @@ -0,0 +1,54 @@ +# wrapper over vscode to control extensions per project (extensions folder will be created in execution path) +{ lib +, writeShellScriptBin +, extensionsFromVscodeMarketplace +, vscodeDefault +}: +## User input +{ vscode ? vscodeDefault +# extensions to be symlinked into the project's extensions folder +, nixExtensions ? [] +# extensions to be copied into the project's extensions folder +, mutableExtensions ? [] +, vscodeExtsFolderName ? ".vscode-exts" +, user-data-dir ? ''"''${TMP}vscodeWithConfiguration/vscode-data-dir"'' +}: +let + nixExtsDrvs = extensionsFromVscodeMarketplace nixExtensions; + mutExtsDrvs = extensionsFromVscodeMarketplace mutableExtensions; + mutableExtsPaths = lib.forEach mutExtsDrvs ( e: + { + origin = "${e}/share/vscode/extensions/${e.vscodeExtUniqueId}"; + target = ''${vscodeExtsFolderName}/${e.vscodeExtUniqueId}-${(lib.findSingle (ext: "${ext.publisher}.${ext.name}" == e.vscodeExtUniqueId) "" "m" mutableExtensions ).version}''; + } + ); + + #removed not defined extensions + rmExtensions = lib.optionalString (nixExtensions++mutableExtensions != []) '' + find ${vscodeExtsFolderName} -mindepth 1 -maxdepth 1 ${ + lib.concatMapStringsSep " " (e : "! -iname ${e.publisher}.${e.name} ") nixExtensions + + + lib.concatMapStringsSep " " (e : "! -iname ${e.publisher}.${e.name}-${e.version} ") mutableExtensions + } -exec rm -rf {} \; + ''; + #copy mutable extension out of the nix store + cpExtensions = '' + ${lib.concatMapStringsSep "\n" (e : "ln -sfn ${e}/share/vscode/extensions/* ${vscodeExtsFolderName}/") nixExtsDrvs} + ${lib.concatMapStringsSep "\n" (ePath : '' + if [ ! -d ${ePath.target} ]; then + cp -a ${ePath.origin} ${ePath.target} + chmod -R u+rwx ${ePath.target} + fi + '') mutableExtsPaths} + ''; +in + writeShellScriptBin "code" '' + if ! [[ "$@" =~ "--list-extension" ]]; then + mkdir -p "${vscodeExtsFolderName}" + ${rmExtensions} + ${cpExtensions} + fi + ${vscode}/bin/code --extensions-dir "${vscodeExtsFolderName}" ${ + lib.optionalString (user-data-dir != "") "--user-data-dir ${user-data-dir}" + } "$@" + '' |