zoom-us: allow to select xdg-desktop-portal packages (#403064)

authored by philiptaron.tngl.sh and committed by GitHub 063f43f2 df8f01e3

+139 -11
+1
nixos/modules/module-list.nix
··· 357 357 ./programs/ydotool.nix 358 358 ./programs/yubikey-touch-detector.nix 359 359 ./programs/zmap.nix 360 + ./programs/zoom-us.nix 360 361 ./programs/zoxide.nix 361 362 ./programs/zsh/oh-my-zsh.nix 362 363 ./programs/zsh/zsh-autoenv.nix
+63
nixos/modules/programs/zoom-us.nix
··· 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 Plasma 5 desktop environment if it's enabled on the system. 27 + plasma5XdgDesktopPortalSupport = 28 + prev.plasma5XdgDesktopPortalSupport or config.services.xserver.desktopManager.plasma5.enable; 29 + 30 + # Support LXQT desktop environment if it's enabled on the system. 31 + # There's also `config.services.xserver.desktopManager.lxqt.enable` 32 + lxqtXdgDesktopPortalSupport = prev.lxqtXdgDesktopPortalSupport or config.xdg.portal.lxqt.enable; 33 + 34 + # Support GNOME desktop environment if it's enabled on the system. 35 + gnomeXdgDesktopPortalSupport = 36 + prev.gnomeXdgDesktopPortalSupport or config.services.xserver.desktopManager.gnome.enable; 37 + 38 + # Support Hyprland desktop for Wayland if it's enabled on the system. 39 + hyprlandXdgDesktopPortalSupport = 40 + prev.hyprlandXdgDesktopPortalSupport or config.programs.hyprland.enable; 41 + 42 + # Support `wlroots` XDG desktop portal support if it's enabled. 43 + wlrXdgDesktopPortalSupport = prev.wlrXdgDesktopPortalSupport or config.xdg.portal.wlr.enable; 44 + 45 + # Support xapp XDG desktop portals if the Cinnamon desktop environment is enabled. 46 + # The site claims that it's also used for Xfce4 and MATE; consider adding those to the 47 + # default in the future. 48 + xappXdgDesktopPortalSupport = 49 + prev.xappXdgDesktopPortalSupport or config.services.xserver.desktopManager.cinnamon.enable; 50 + 51 + # Finally, if the `xdg.portal.enable` option is set somehow, use the `targetPkgs` function 52 + # to add those relevant packages in. 53 + targetPkgs = 54 + prev.targetPkgs or ( 55 + pkgs: 56 + lib.optionals config.xdg.portal.enable ( 57 + [ pkgs.xdg-desktop-portal ] ++ config.xdg.portal.extraPortals 58 + ) 59 + ); 60 + }) 61 + ) 62 + ); 63 + }
+1
nixos/tests/all-tests.nix
··· 1504 1504 zipline = runTest ./zipline.nix; 1505 1505 zoneminder = runTest ./zoneminder.nix; 1506 1506 zookeeper = runTest ./zookeeper.nix; 1507 + zoom-us = runTest ./zoom-us.nix; 1507 1508 zram-generator = runTest ./zram-generator.nix; 1508 1509 zrepl = runTest ./zrepl.nix; 1509 1510 zsh-history = runTest ./zsh-history.nix;
+18
nixos/tests/zoom-us.nix
··· 1 + { hostPkgs, lib, ... }: 2 + { 3 + name = "zoom-us"; 4 + 5 + nodes.machine = 6 + { pkgs, ... }: 7 + { 8 + imports = [ ./common/x11.nix ]; 9 + programs.zoom-us.enable = true; 10 + }; 11 + 12 + testScript = '' 13 + machine.succeed("which zoom") # fail early if this is missing 14 + machine.wait_for_x() 15 + machine.execute("zoom >&2 &") 16 + machine.wait_for_window("Zoom Workplace") 17 + ''; 18 + }
+56 -11
pkgs/by-name/zo/zoom-us/package.nix
··· 5 5 makeWrapper, 6 6 xar, 7 7 cpio, 8 - pulseaudioSupport ? true, 9 - xdgDesktopPortalSupport ? true, 10 8 callPackage, 9 + nixosTests, 11 10 buildFHSEnv, 11 + 12 + # Support pulseaudio by default 13 + pulseaudioSupport ? true, 14 + 15 + # Whether to support XDG portals at all 16 + xdgDesktopPortalSupport ? ( 17 + plasma6XdgDesktopPortalSupport 18 + || plasma5XdgDesktopPortalSupport 19 + || lxqtXdgDesktopPortalSupport 20 + || gnomeXdgDesktopPortalSupport 21 + || hyprlandXdgDesktopPortalSupport 22 + || wlrXdgDesktopPortalSupport 23 + || xappXdgDesktopPortalSupport 24 + ), 25 + 26 + # This is Plasma 6 (KDE) XDG portal support 27 + plasma6XdgDesktopPortalSupport ? false, 28 + 29 + # This is Plasma 5 (KDE) XDG portal support 30 + plasma5XdgDesktopPortalSupport ? false, 31 + 32 + # This is LXQT XDG portal support 33 + lxqtXdgDesktopPortalSupport ? false, 34 + 35 + # This is GNOME XDG portal support 36 + gnomeXdgDesktopPortalSupport ? false, 37 + 38 + # This is Hyprland XDG portal support 39 + hyprlandXdgDesktopPortalSupport ? false, 40 + 41 + # This is `wlroots` XDG portal support 42 + wlrXdgDesktopPortalSupport ? false, 43 + 44 + # This is Xapp XDG portal support, used for GTK and various Cinnamon/MATE/Xfce4 infrastructure. 45 + xappXdgDesktopPortalSupport ? false, 46 + 47 + # This function can be overridden to add in extra packages 48 + targetPkgs ? pkgs: [ ], 49 + 50 + # This list can be overridden to add in extra packages 51 + # that are independent of the underlying package attrset 52 + targetPkgsFixed ? [ ], 53 + 12 54 }: 13 55 14 56 let ··· 100 142 101 143 passthru.updateScript = ./update.sh; 102 144 passthru.tests.startwindow = callPackage ./test.nix { }; 145 + passthru.tests.nixos-module = nixosTests.zoom-us; 103 146 104 147 meta = { 105 148 homepage = "https://zoom.us/"; ··· 179 222 pkgs.libpulseaudio 180 223 pkgs.pulseaudio 181 224 ] 182 - ++ lib.optionals xdgDesktopPortalSupport [ 183 - pkgs.kdePackages.xdg-desktop-portal-kde 184 - pkgs.lxqt.xdg-desktop-portal-lxqt 185 - pkgs.plasma5Packages.xdg-desktop-portal-kde 186 - pkgs.xdg-desktop-portal 225 + ++ lib.optional xdgDesktopPortalSupport pkgs.xdg-desktop-portal 226 + ++ lib.optional plasma6XdgDesktopPortalSupport pkgs.kdePackages.xdg-desktop-portal-kde 227 + ++ lib.optional plasma5XdgDesktopPortalSupport pkgs.plasma5Packages.xdg-desktop-portal-kde 228 + ++ lib.optional lxqtXdgDesktopPortalSupport pkgs.lxqt.xdg-desktop-portal-lxqt 229 + ++ lib.optionals gnomeXdgDesktopPortalSupport [ 187 230 pkgs.xdg-desktop-portal-gnome 188 231 pkgs.xdg-desktop-portal-gtk 189 - pkgs.xdg-desktop-portal-hyprland 190 - pkgs.xdg-desktop-portal-wlr 191 - pkgs.xdg-desktop-portal-xapp 192 - ]; 232 + ] 233 + ++ lib.optional hyprlandXdgDesktopPortalSupport pkgs.xdg-desktop-portal-hyprland 234 + ++ lib.optional wlrXdgDesktopPortalSupport pkgs.xdg-desktop-portal-wlr 235 + ++ lib.optional xappXdgDesktopPortalSupport pkgs.xdg-desktop-portal-xapp 236 + ++ targetPkgs pkgs 237 + ++ targetPkgsFixed; 193 238 194 239 # We add the `unpacked` zoom archive to the FHS env 195 240 # and also bind-mount its `/opt` directory.