Add modules.desktop.portals, enabled by the desktop aggregator, pinning the XDG desktop portal routing explicitly: the three interfaces the Hyprland portal implements (screencast, screenshot, global shortcuts) go to Hyprland, and GTK is the default for file dialogs and appearance. The backend packages already arrive with the Hyprland compositor integration, so this module owns only the routing, which was previously empty and rode on the config file the Hyprland package happens to ship. Making it a first-class module so in-app screen sharing does not depend on that incidental default.
29 lines
1.3 KiB
Nix
29 lines
1.3 KiB
Nix
{ config, lib, ... }:
|
|
# The desktop aggregator: one flag brings up the whole graphical session.
|
|
let
|
|
cfg = config.modules.desktop;
|
|
in
|
|
{
|
|
options.modules.desktop.enable = lib.mkEnableOption "the keyboard-driven Hyprland desktop";
|
|
|
|
# Each piece is turned on at default priority, so a host can still override
|
|
# any one of them while the single flag above enables the whole desktop.
|
|
config = lib.mkIf cfg.enable {
|
|
modules.desktop.clipboard.enable = lib.mkDefault true;
|
|
modules.desktop.hyprland.enable = lib.mkDefault true;
|
|
modules.desktop.hyprlock.enable = lib.mkDefault true;
|
|
modules.desktop.hypridle.enable = lib.mkDefault true;
|
|
modules.desktop.login.enable = lib.mkDefault true;
|
|
modules.desktop.mako.enable = lib.mkDefault true;
|
|
modules.desktop.portals.enable = lib.mkDefault true;
|
|
modules.desktop.recording.enable = lib.mkDefault true;
|
|
modules.desktop.rofi.enable = lib.mkDefault true;
|
|
modules.desktop.screenshot.enable = lib.mkDefault true;
|
|
modules.desktop.terminal.enable = lib.mkDefault true;
|
|
modules.desktop.userdirs.enable = lib.mkDefault true;
|
|
modules.desktop.theming.enable = lib.mkDefault true;
|
|
modules.desktop.waybar.enable = lib.mkDefault true;
|
|
modules.desktop.audio.enable = lib.mkDefault true;
|
|
};
|
|
}
|