diff --git a/modules/hyprland/default.nix b/modules/hyprland/default.nix index eab7aaa..571c1ff 100644 --- a/modules/hyprland/default.nix +++ b/modules/hyprland/default.nix @@ -40,19 +40,6 @@ in { trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; }; - xdg.portal = { - enable = true; - - extraPortals = with pkgs; [ - kdePackages.xdg-desktop-portal-kde - ]; - - config.common.default = [ - "hyprland" - "kde" - ]; - }; - home-manager.users.${config.main-user} = { imports = [ hyprland.homeManagerModules.default ]; @@ -81,6 +68,34 @@ in { ${config.hyprland-session.extraConfig} ''; }; + + + # MUST be specified under home manager or home manager will silently replace + # configs at the system level. + xdg.portal = { + enable = true; + + extraPortals = lib.mkForce (with pkgs; [ + xdg-desktop-portal-hyprland + kdePackages.xdg-desktop-portal-kde + ]); + + configPackages = lib.mkForce []; + config.common = { + default = [ "hyprland" ]; + "org.freedesktop.impl.portal.FileChooser" = [ "kde" ]; + }; + }; + + # Without this the portal blocks on desktop portals not being ready... + systemd.user.services.plasma-xdg-desktop-portal-kde.Service = { + ExecStart = "${pkgs.kdePackages.xdg-desktop-portal-kde}/libexec/xdg-desktop-portal-kde"; + BusName = "org.freedesktop.impl.portal.desktop.kde"; + Restart = "no"; + Environment = [ + "QT_QPA_PLATFORMTHEME=" + ]; + }; }; }; }