{ self, ... }: let packageName = "zed-editor"; vulkanIcd = "/usr/share/vulkan/icd.d/nvidia_icd.json"; eglVendor = "/usr/share/glvnd/egl_vendor.d/10_nvidia.json"; in { perSystem = { pkgs, ... }: { packages."${packageName}" = pkgs.symlinkJoin { name = "zed-editor-host-gpu"; paths = [ pkgs.zed-editor ]; nativeBuildInputs = [ pkgs.makeWrapper ]; meta = pkgs.zed-editor.meta // { mainProgram = "zeditor"; }; postBuild = '' for exe in $out/bin/*; do wrapProgram "$exe" \ --unset WAYLAND_DISPLAY \ --unset GDK_BACKEND \ --set VK_DRIVER_FILES ${vulkanIcd} \ --set VK_ICD_FILENAMES ${vulkanIcd} \ --set __EGL_VENDOR_LIBRARY_FILENAMES ${eglVendor} \ --set __GLX_VENDOR_LIBRARY_NAME nvidia done ''; }; }; flake.modules.homeManager.zed-editor = { pkgs, ... }: { home.packages = [ pkgs.vulkan-tools ]; programs.zed-editor = { enable = true; package = self.packages.${pkgs.stdenv.hostPlatform.system}."${packageName}"; installRemoteServer = true; }; }; }