| 
									
										
										
										
											2025-09-02 19:56:27 +03:00
										 |  |  | import { execSync } from "child_process"; | 
					
						
							| 
									
										
										
										
											2025-09-02 10:45:42 +03:00
										 |  |  | import { readFileSync } from "fs"; | 
					
						
							|  |  |  | import { platform } from "os"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export function isNixOS() { | 
					
						
							|  |  |  |     if (platform() !== "linux") return false; | 
					
						
							|  |  |  |     const osReleaseFile = readFileSync("/etc/os-release", "utf-8"); | 
					
						
							|  |  |  |     return osReleaseFile.includes("ID=nixos"); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-02 19:56:27 +03:00
										 |  |  | function resetPath() { | 
					
						
							| 
									
										
										
										
											2025-09-02 10:45:42 +03:00
										 |  |  |     // On Unix-like systems, PATH is usually inherited from login shell
 | 
					
						
							|  |  |  |     // but npm prepends node_modules/.bin. Let's remove it:
 | 
					
						
							|  |  |  |     const origPath = process.env.PATH || ""; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // npm usually adds something like ".../node_modules/.bin"
 | 
					
						
							|  |  |  |     process.env.PATH = origPath | 
					
						
							|  |  |  |         .split(":") | 
					
						
							|  |  |  |         .filter(p => !p.includes("node_modules/.bin")) | 
					
						
							|  |  |  |         .join(":"); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2025-09-02 19:56:27 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | export function getElectronPath() { | 
					
						
							|  |  |  |     if (isNixOS()) { | 
					
						
							|  |  |  |         resetPath();             | 
					
						
							|  |  |  |         return execSync("nix eval --raw nixpkgs#electron_37").toString("utf-8") + "/bin/electron"; | 
					
						
							|  |  |  |     } else { | 
					
						
							|  |  |  |         return "electron"; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |