{ pkgs, config, lib, ... }: let inherit (config.grimmShared) enable portals sound screens ; inherit (lib) mkIf mkEnableOption mapAttrs' foldl' min getExe isInt nameValuePair ; in { config = mkIf (enable && portals) { xdg.icons.enable = true; xdg.sounds.enable = lib.mkIf sound.enable true; xdg.portal = { enable = true; xdgOpenUsePortal = true; extraPortals = with pkgs; [ xdg-desktop-portal-wlr xdg-desktop-portal-kde xdg-desktop-portal-gtk ]; wlr.enable = true; wlr.settings = mapAttrs' ( name: value: nameValuePair ("screencast_" + name) { output_name = value.id; max_fps = if isInt value.fps then value.fps else (foldl' min 2147483647 value.fps); chooser_type = "simple"; chooser_cmd = "${getExe pkgs.slurp} -f %o -or"; } ) screens; }; environment.sessionVariables = { XDG_CONFIG_HOME = "$HOME/.config"; }; environment.systemPackages = with pkgs; [ xwaylandvideobridge confwhich ]; }; options.grimmShared.portals = mkEnableOption "Enables portals for wlr, gtk and kde as well as fixes fonts"; }