diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/editors/vscode/vscode.nix')
-rw-r--r-- | nixpkgs/pkgs/applications/editors/vscode/vscode.nix | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/editors/vscode/vscode.nix b/nixpkgs/pkgs/applications/editors/vscode/vscode.nix new file mode 100644 index 000000000000..1c430546d21a --- /dev/null +++ b/nixpkgs/pkgs/applications/editors/vscode/vscode.nix @@ -0,0 +1,103 @@ +{ stdenv +, lib +, callPackage +, fetchurl +, nixosTests +, srcOnly +, isInsiders ? false +# sourceExecutableName is the name of the binary in the source archive over +# which we have no control and it is needed to run the insider version as +# documented in https://nixos.wiki/wiki/Visual_Studio_Code#Insiders_Build +# On MacOS the insider binary is still called code instead of code-insiders as +# of 2023-08-06. +, sourceExecutableName ? "code" + lib.optionalString (isInsiders && stdenv.isLinux) "-insiders" +, commandLineArgs ? "" +, useVSCodeRipgrep ? stdenv.isDarwin +}: + +let + inherit (stdenv.hostPlatform) system; + throwSystem = throw "Unsupported system: ${system}"; + + plat = { + x86_64-linux = "linux-x64"; + x86_64-darwin = "darwin"; + aarch64-linux = "linux-arm64"; + aarch64-darwin = "darwin-arm64"; + armv7l-linux = "linux-armhf"; + }.${system} or throwSystem; + + archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz"; + + sha256 = { + x86_64-linux = "1sasd183cf264a8am93ck35b485p5vl2bfzzxzpf65rvcmvhn7fh"; + x86_64-darwin = "01nfh5izc53sxfw27i0byn0l6q4qwp7y9zs0g9a3rx3qglm47qr8"; + aarch64-linux = "183583xnjv18ksy8bbkjfkxx3zy22anj14hi8bavhgix9bzk3wrb"; + aarch64-darwin = "1whjm4z922qq1yh4vliiab777n0la6sc45n2qf7q9pvxjj1f83wj"; + armv7l-linux = "171diqiv9yb9c5klihndsgk7qp7y80cc6bq8r4hnw1b834k0ywfp"; + }.${system} or throwSystem; +in + callPackage ./generic.nix rec { + # Please backport all compatible updates to the stable release. + # This is important for the extension ecosystem. + version = "1.87.1"; + pname = "vscode" + lib.optionalString isInsiders "-insiders"; + + # This is used for VS Code - Remote SSH test + rev = "1e790d77f81672c49be070e04474901747115651"; + + executableName = "code" + lib.optionalString isInsiders "-insiders"; + longName = "Visual Studio Code" + lib.optionalString isInsiders " - Insiders"; + shortName = "Code" + lib.optionalString isInsiders " - Insiders"; + inherit commandLineArgs useVSCodeRipgrep sourceExecutableName; + + src = fetchurl { + name = "VSCode_${version}_${plat}.${archive_fmt}"; + url = "https://update.code.visualstudio.com/${version}/${plat}/stable"; + inherit sha256; + }; + + # We don't test vscode on CI, instead we test vscodium + tests = {}; + + sourceRoot = ""; + + # As tests run without networking, we need to download this for the Remote SSH server + vscodeServer = srcOnly { + name = "vscode-server-${rev}.tar.gz"; + src = fetchurl { + name = "vscode-server-${rev}.tar.gz"; + url = "https://update.code.visualstudio.com/commit:${rev}/server-linux-x64/stable"; + sha256 = "19k2n1zlfvy1dczrslrdzhvpa27nc0mcg2x4bmp5yvvv5bpv3bbd"; + }; + }; + + tests = { inherit (nixosTests) vscode-remote-ssh; }; + + updateScript = ./update-vscode.sh; + + # Editing the `code` binary within the app bundle causes the bundle's signature + # to be invalidated, which prevents launching starting with macOS Ventura, because VS Code is notarized. + # See https://eclecticlight.co/2022/06/17/app-security-changes-coming-in-ventura/ for more information. + dontFixup = stdenv.isDarwin; + + meta = with lib; { + description = '' + Open source source code editor developed by Microsoft for Windows, + Linux and macOS + ''; + mainProgram = "code"; + longDescription = '' + Open source source code editor developed by Microsoft for Windows, + Linux and macOS. It includes support for debugging, embedded Git + control, syntax highlighting, intelligent code completion, snippets, + and code refactoring. It is also customizable, so users can change the + editor's theme, keyboard shortcuts, and preferences + ''; + homepage = "https://code.visualstudio.com/"; + downloadPage = "https://code.visualstudio.com/Updates"; + license = licenses.unfree; + maintainers = with maintainers; [ eadwu synthetica bobby285271 Enzime ]; + platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" "armv7l-linux" ]; + }; + } |