Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow configuring the path of the codeium language server in VSCode #70

Open
marius851000 opened this issue Jul 18, 2024 · 6 comments
Open

Comments

@marius851000
Copy link

Hello. I am interested in using codeium in VSCodium on NixOS.

I manage my VSCodium extensions using NixOS, which mean their path a non-writeable, and so, it can’t download the Language Server. In addition, it doesn’t a global linker.

However, NixOS provide a codeium package, providing a patched language server (by modifying some elf header hard-linking a linker, something quite common when working on non-compiled-from-source programs).

That mean that, for getting codeium on NixOS with NixOS-managed extension, there needs to be:

  1. A way to specify a path to the language server (I could circumvent that by linking the executable in the binary expected by extension, but might need update every time there is an LS update on the server)
  2. A way to not perform the CRC check (as the patching of the language server does indeed change it).

ps: the name of the binary in NixOS (in the PATH) is codeium_language_server. If those two things mentioned previously are possible, I could potentially make a NixOS package.

@marius851000
Copy link
Author

marius851000 commented Jul 18, 2024

  1. Also make the chmod operation non-fatal/do not make the chmod when the file is already executable (the FS where the extension is stored is read-only)

@marius851000
Copy link
Author

marius851000 commented Jul 18, 2024

That put aside (by patching the extension.js file to disable that CRC check and to not execute the chmod), it work well. It’s definitivelly not good enought for me to make a package of it (especially the 1st point, and I would like to avoid having to patch obfuscated js too, which I believe is against the TOS), but I’ll keep using that for my personal use.

Thanks

@srghma
Copy link

srghma commented Oct 7, 2024

@marius851000 could You please make manual how exactly You disabled CRC check and other things

@srghma

This comment was marked as off-topic.

@srghma
Copy link

srghma commented Oct 7, 2024

doesnt work, "fetch not defined"?

diff --git a/dist/extension.js b/dist/extension.js
index ebc762c..2867208 100644
--- a/dist/extension.js
+++ b/dist/extension.js
@@ -61398,9 +61398,9 @@
                                                 return e.apply(this, arguments)
                                             }
                                         }(), e.next = 3, (0, l.forEachRepository)((function(e) {
-                                            e.onDidCommit((function() {
-                                                return r(e)
-                                            }))
+                                            // e.onDidCommit((function() {
+                                            //     return r(e)
+                                            // }))
                                         }));
                                     case 3:
                                     case "end":
@@ -105141,15 +105141,20 @@
                                     }
                                     return i = "Unsupported platform: ".concat(S.platform(), "-").concat(S.arch()), (0, G.sentryCaptureException)(new Error(i)), t.setStatus(F.CodeiumState.ERROR, i), e.abrupt("return", void 0);
                                 case 6:
-                                    if (a = n[re[o]], (s = "" !== a && !(0, L.hasDevExtension)(!0)) || j.logger.info("Skipping CRC check"), u = T.default.join(__dirname, n.sha, o), !(0, _.existsSync)(u)) {
-                                        e.next = 22;
-                                        break
-                                    }
-                                    if (s) {
-                                        e.next = 13;
-                                        break
+                                    // Get the platform-specific value and construct the file path
+                                    a = n[re[o]];
+                                    u = T.default.join(__dirname, n.sha, o);
+
+                                    // If the file exists, return the path immediately, skipping the CRC check
+                                    if ((0, _.existsSync)(u)) {
+                                        return e.abrupt("return", u);
                                     }
-                                    return e.abrupt("return", u);
+
+                                    // Proceed with further logic if the file does not exist
+                                    j.logger.info("File does not exist, proceeding with download...");
+
+                                    // Continue with the rest of the logic for downloading the file
+                                    e.next = 22;
                                 case 13:
                                     return e.next = 15, (0, J.computeFilePathCrc)(u);
                                 case 15:
@@ -105345,7 +105350,7 @@
                                     }
                                     return (0, G.sentryCaptureException)(new Error("Language server binary not found: ".concat(s))), e.abrupt("return");
                                 case 14:
-                                    if ((0, _.chmodSync)(s, "755"), f = ["--api_server_url", r.apiServerUrl, "--manager_dir", i, "--enable_chat_web_server", "--enable_lsp"], (0, L.hasEnterpriseExtension)() || f.push("--inference_api_server_url", r.inferenceApiServerUrl), (0, L.hasDevExtension)(!0) && f.push("--dev_mode"), r.detectProxy || f.push("--detect_proxy=false"), p = !0, d = !1, !(0, L.hasEnterpriseExtension)()) {
+                                    if (f = ["--api_server_url", r.apiServerUrl, "--manager_dir", i, "--enable_chat_web_server", "--enable_lsp"], (0, L.hasEnterpriseExtension)() || f.push("--inference_api_server_url", r.inferenceApiServerUrl), (0, L.hasDevExtension)(!0) && f.push("--dev_mode"), r.detectProxy || f.push("--detect_proxy=false"), p = !0, d = !1, !(0, L.hasEnterpriseExtension)()) {
                                         e.next = 31;
                                         break
                                     }
@@ -196131,4 +196136,4 @@
     var r = n(n.s = 53918);
     module.exports = r
 })();
-//# sourceMappingURL=extension.js.map
\ No newline at end of file
+//# sourceMappingURL=extension.js.map

@srghma
Copy link

srghma commented Oct 7, 2024

installing :b pkgs.vscode-fhs worked

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants