{ pkgs, lib, config, osConfig ? {}, inputs, ... }: let cfg = config.nixfiles.packageSets.communication; rustdesk-pkg = if (lib.strings.hasInfix "23.11" lib.version) then inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.rustdesk-flutter else pkgs.rustdesk-flutter; vesktop-ozone-cmd = let extraFlags = lib.optionalString config.nixfiles.workarounds.nvidiaPrimary " --disable-gpu"; in "env NIXOS_OZONE_WL=1 vesktop${extraFlags}"; waitNet = pkgs.writeShellScript "wait-network" '' until ${pkgs.curl}/bin/curl -fs https://www.google.com &>/dev/null; do sleep 5 ((counter++)) && ((counter>=60)) && break done exec "$@" ''; in { options.nixfiles.packageSets.communication = { enable = lib.mkEnableOption "communication package set"; }; config = lib.mkIf cfg.enable { xdg.desktopEntries.vesktop = lib.mkIf config.nixfiles.meta.graphical { categories= ["Network" "InstantMessaging" "Chat"]; exec=vesktop-ozone-cmd + " %U"; genericName="Internet Messenger"; icon="vesktop"; name="Vesktop"; type="Application"; settings = { StartupWMClass="Vesktop"; Keywords="discord;vencord;electron;chat"; }; }; nixfiles.common.wm.autostart = lib.optionals config.nixfiles.meta.graphical [ (waitNet + " " + vesktop-ozone-cmd + " --start-minimized") ]; home.packages = with pkgs; lib.optionals config.nixfiles.meta.graphical [ element-desktop telegram-desktop signal-desktop thunderbird vesktop rustdesk-pkg ] ++ [ irssi ]; }; }