diff --git a/modules/programs/zed-editor.nix b/modules/programs/zed-editor.nix index 1f6ac5b..9b14389 100644 --- a/modules/programs/zed-editor.nix +++ b/modules/programs/zed-editor.nix @@ -1,33 +1,39 @@ -{ self, inputs, ... }: +{ self, ... }: let packageName = "zed-editor"; - - zedWrapper = inputs.wrappers.lib.wrapModule ({ config, lib, wlib, ... }: { - options = { - text-to-say = lib.mkOption { - type = lib.types.str; - description = "Text for the ascii cow to say."; - }; - }; - - config = { - binName = "my-pkg"; - package = config.pkgs.cowsay; - args = [ config.text-to-say ]; - }; - }); + vulkanIcd = "/usr/share/vulkan/icd.d/nvidia_icd.json"; + eglVendor = "/usr/share/glvnd/egl_vendor.d/10_nvidia.json"; in { - perSystem = { system, pkgs, lib, ... }: { - packages."${packageName}" = (zedWrapper.apply { - inherit pkgs; - text-to-say = "Hello from wrapped module!"; - }).wrapper; + 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."${packageName}" = { config, pkgs, lib, ... }: { - home.packages = [ - inputs.self.packages.${pkgs.stdenv.hostPlatform.system}."${packageName}" - ]; + 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; + }; }; } \ No newline at end of file