From 693840c01b9bef9e54100239cef937e53d4661bf Mon Sep 17 00:00:00 2001 From: Tim Steinbach Date: Wed, 26 Mar 2025 09:44:18 -0400 Subject: [PATCH] vscode: Fix version checks when using Cursor (#6680) The version check for VSCode fails when using Cursor. Cursor has its own versioning and is currently at 0.45.14 (based on VSCode version 1.96.2). The version checks for generating the `extensions.json` in the module look at the package version, which causes them not to be generated for Cursor. --- modules/programs/vscode.nix | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/modules/programs/vscode.nix b/modules/programs/vscode.nix index 69b7e1812..2fee53ac1 100644 --- a/modules/programs/vscode.nix +++ b/modules/programs/vscode.nix @@ -389,25 +389,26 @@ in { mkMerge (concatMap toPaths (flatten (mapAttrsToList (n: v: v.extensions) cfg.profiles)) ++ optional - (versionAtLeast vscodeVersion "1.74.0" && defaultProfile != { }) { - # Whenever our immutable extensions.json changes, force VSCode to regenerate - # extensions.json with both mutable and immutable extensions. - "${extensionPath}/.extensions-immutable.json" = { - text = extensionJson defaultProfile.extensions; - onChange = '' - run rm $VERBOSE_ARG -f ${extensionPath}/{extensions.json,.init-default-profile-extensions} - verboseEcho "Regenerating VSCode extensions.json" - run ${getExe cfg.package} --list-extensions > /dev/null - ''; - }; - }) + ((versionAtLeast vscodeVersion "1.74.0" || vscodePname == "cursor") + && defaultProfile != { }) { + # Whenever our immutable extensions.json changes, force VSCode to regenerate + # extensions.json with both mutable and immutable extensions. + "${extensionPath}/.extensions-immutable.json" = { + text = extensionJson defaultProfile.extensions; + onChange = '' + run rm $VERBOSE_ARG -f ${extensionPath}/{extensions.json,.init-default-profile-extensions} + verboseEcho "Regenerating VSCode extensions.json" + run ${getExe cfg.package} --list-extensions > /dev/null + ''; + }; + }) else { "${extensionPath}".source = let combinedExtensionsDrv = pkgs.buildEnv { name = "vscode-extensions"; paths = (flatten (mapAttrsToList (n: v: v.extensions) cfg.profiles)) - ++ optional - (versionAtLeast vscodeVersion "1.74.0" && defaultProfile != { }) + ++ optional ((versionAtLeast vscodeVersion "1.74.0" || vscodePname + == "cursor") && defaultProfile != { }) (extensionJsonFile "default" (extensionJson defaultProfile.extensions)); };