diff --git a/modules/services/window-managers/hyprland.nix b/modules/services/window-managers/hyprland.nix index 73602ec61..8e81c11f7 100644 --- a/modules/services/window-managers/hyprland.nix +++ b/modules/services/window-managers/hyprland.nix @@ -58,6 +58,8 @@ in { package = lib.mkPackageOption pkgs "hyprland" { }; + portalPackage = lib.mkPackageOption pkgs "xdg-desktop-portal-hyprland" { }; + finalPackage = lib.mkOption { type = lib.types.package; readOnly = true; @@ -69,6 +71,18 @@ in { ''; }; + finalPortalPackage = lib.mkOption { + type = lib.types.package; + readOnly = true; + default = cfg.portalPackage.override { hyprland = cfg.finalPackage; }; + defaultText = lib.literalMD '' + `wayland.windowManager.hyprland.portalPackage` with + `wayland.windowManager.hyprland.finalPackage` override''; + description = '' + The xdg-desktop-portal-hyprland package after overriding its hyprland input. + ''; + }; + plugins = lib.mkOption { type = with lib.types; listOf (either package path); default = [ ]; @@ -264,6 +278,12 @@ in { ''; }; + xdg.portal = { + enable = true; + extraPortals = [ cfg.finalPortalPackage ]; + configPackages = lib.mkDefault [ cfg.finalPackage ]; + }; + systemd.user.targets.hyprland-session = lib.mkIf cfg.systemd.enable { Unit = { Description = "Hyprland compositor session";