diff --git a/pkgs/by-name/co/copilot-language-server/package-lock.json b/pkgs/by-name/co/copilot-language-server/package-lock.json new file mode 100644 index 000000000000..f4da1e9b8493 --- /dev/null +++ b/pkgs/by-name/co/copilot-language-server/package-lock.json @@ -0,0 +1,44 @@ +{ + "name": "@github/copilot-language-server", + "version": "1.273.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@github/copilot-language-server", + "version": "1.273.0", + "license": "https://docs.github.com/en/site-policy/github-terms/github-terms-for-additional-products-and-features", + "dependencies": { + "vscode-languageserver-protocol": "^3.17.5" + }, + "bin": { + "copilot-language-server": "dist/language-server.js" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT" + } + } +} diff --git a/pkgs/by-name/co/copilot-language-server/package.nix b/pkgs/by-name/co/copilot-language-server/package.nix new file mode 100644 index 000000000000..0cd5871096d4 --- /dev/null +++ b/pkgs/by-name/co/copilot-language-server/package.nix @@ -0,0 +1,49 @@ +{ + lib, + buildNpmPackage, + fetchurl, +}: + +buildNpmPackage rec { + pname = "copilot-language-server"; + version = "1.273.0"; + + src = fetchurl { + url = "https://registry.npmjs.org/@github/copilot-language-server/-/copilot-language-server-${version}.tgz"; + hash = "sha256-S3LhyNg8sSJPl+vnMir4AbyerORz0b1S7JyjCeoXW2E="; + }; + + npmDepsHash = "sha256-ikITGNY6a6SKOSTBU9q4sQMX51mOxMix+a1Bt+h9wGw="; + + postPatch = '' + ln -s ${./package-lock.json} package-lock.json + ''; + + postInstall = '' + ln -s $out/lib/node_modules/@github/copilot-language-server/dist $out/lib/node_modules/@github/dist + ''; + + dontNpmBuild = true; + + passthru.updateScript = ./update.sh; + + meta = { + description = "Use GitHub Copilot with any editor or IDE via the Language Server Protocol"; + homepage = "https://github.com/features/copilot"; + license = { + deprecated = false; + free = false; + fullName = "GitHub Copilot Product Specific Terms"; + redistributable = false; + shortName = "GitHub Copilot License"; + url = "https://github.com/customer-terms/github-copilot-product-specific-terms"; + }; + mainProgram = "copilot-language-server"; + platforms = [ + "x86_64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; + maintainers = with lib.maintainers; [ arunoruto ]; + }; +} diff --git a/pkgs/by-name/co/copilot-language-server/update.sh b/pkgs/by-name/co/copilot-language-server/update.sh new file mode 100755 index 000000000000..e708412b35f8 --- /dev/null +++ b/pkgs/by-name/co/copilot-language-server/update.sh @@ -0,0 +1,30 @@ +#! /usr/bin/env nix-shell +#! nix-shell -i bash -p gnused nix nodejs prefetch-npm-deps wget + +set -euo pipefail +pushd "$(dirname "${BASH_SOURCE[0]}")" + +version=$(npm view @github/copilot-language-server version) +tarball="copilot-language-server-$version.tgz" +url="https://registry.npmjs.org/@github/copilot-language-server/-/$tarball" + +if [[ "$UPDATE_NIX_OLD_VERSION" == "$version" ]]; then + echo "Already up to date!" + exit 0 +fi + +sed -i 's#version = "[^"]*"#version = "'"$version"'"#' package.nix + +sha256=$(nix-prefetch-url "$url") +src_hash=$(nix-hash --to-sri --type sha256 "$sha256") +sed -i 's#hash = "[^"]*"#hash = "'"$src_hash"'"#' package.nix + +rm -f package-lock.json package.json *.tgz +wget "$url" +tar xf "$tarball" --strip-components=1 package/package.json +npm i --package-lock-only --ignore-scripts +npm_hash=$(prefetch-npm-deps package-lock.json) +sed -i 's#npmDepsHash = "[^"]*"#npmDepsHash = "'"$npm_hash"'"#' package.nix +rm -f package.json *.tgz + +popd