{ config, lib, pkgs, ... }: let inherit (lib.modules) mkForce mkIf; inherit (lib.options) mkEnableOption; inherit (lib.lists) optional; in { imports = [ ./variables.nix ]; xdg.portal = { enable = true; # Sets environment variable NIXOS_XDG_OPEN_USE_PORTAL to 1. # This will make xdg-open use the portal to open programs, # which resolves bugs involving programs opening inside FHS envs # or with unexpected env vars set from wrappers. # See #160923 for more info. xdgOpenUsePortal = true; extraPortals = [ pkgs.xdg-desktop-portal-gtk pkgs.kdePackages.xdg-desktop-portal-kde ] ++ ( optional config.programs.niri.enable pkgs.xdg-desktop-portal-gnome ) ++ ( optional config.programs.hyprland.enable pkgs.xdg-desktop-portal-hyprland ); config = { hyprland.default = mkIf config.programs.hyprland.enable ["*"]; niri = { default = [ "gnome" "gtk" "kde" ]; # Portal API reference: # https://docs.flatpak.org/en/latest/portal-api-reference.html # "org.freedesktop.impl.portal.Access" = ["kde"]; # "org.freedesktop.impl.portal.Notification" = ["kde"]; "org.freedesktop.impl.portal.FileChooser" = ["kde"]; }; }; configPackages = [ # pkgs.niri ]; }; }