1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8{
9 options.programs.zoom-us = {
10 enable = lib.mkEnableOption "zoom.us video conferencing application";
11 package = lib.mkPackageOption pkgs "zoom-us" { };
12 };
13
14 config.environment.systemPackages = lib.mkIf config.programs.zoom-us.enable (
15 lib.singleton (
16 # The pattern here is to use the already-overridden value, or provide a default based on the
17 # configuration elsewhere.
18 config.programs.zoom-us.package.override (prev: {
19 # Support pulseaudio if it's enabled on the system.
20 pulseaudioSupport = prev.pulseaudioSupport or config.services.pulseaudio.enable;
21
22 # Support Plasma 6 desktop environment if it's enabled on the system.
23 plasma6XdgDesktopPortalSupport =
24 prev.plasma6XdgDesktopPortalSupport or config.services.desktopManager.plasma6.enable;
25
26 # Support LXQT desktop environment if it's enabled on the system.
27 # There's also `config.services.xserver.desktopManager.lxqt.enable`
28 lxqtXdgDesktopPortalSupport = prev.lxqtXdgDesktopPortalSupport or config.xdg.portal.lxqt.enable;
29
30 # Support GNOME desktop environment if it's enabled on the system.
31 gnomeXdgDesktopPortalSupport =
32 prev.gnomeXdgDesktopPortalSupport or config.services.desktopManager.gnome.enable;
33
34 # Support Hyprland desktop for Wayland if it's enabled on the system.
35 hyprlandXdgDesktopPortalSupport =
36 prev.hyprlandXdgDesktopPortalSupport or config.programs.hyprland.enable;
37
38 # Support `wlroots` XDG desktop portal support if it's enabled.
39 wlrXdgDesktopPortalSupport = prev.wlrXdgDesktopPortalSupport or config.xdg.portal.wlr.enable;
40
41 # Support xapp XDG desktop portals if the Cinnamon desktop environment is enabled.
42 # The site claims that it's also used for Xfce4 and MATE; consider adding those to the
43 # default in the future.
44 xappXdgDesktopPortalSupport =
45 prev.xappXdgDesktopPortalSupport or config.services.xserver.desktopManager.cinnamon.enable;
46
47 # Finally, if the `xdg.portal.enable` option is set somehow, use the `targetPkgs` function
48 # to add those relevant packages in.
49 targetPkgs =
50 prev.targetPkgs or (
51 pkgs:
52 lib.optionals config.xdg.portal.enable (
53 [ pkgs.xdg-desktop-portal ] ++ config.xdg.portal.extraPortals
54 )
55 );
56 })
57 )
58 );
59}