nixfiles/home/package-sets/communication.nix

60 lines
1.5 KiB
Nix

{
pkgs,
lib,
config,
osConfig ? {},
inputs,
...
}: let
cfg = config.nixfiles.packageSets.communication;
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-flutter
tor-browser
onionshare
]
++ [
irssi
];
};
}