{ lib, config, pkgs, ... }: with lib; let cfg = config.modules.software.distractions.discord; vanillaDiscordPackage = pkgs.discord-canary.override { withOpenASAR = true; withVencord = true; }; finalPackage = if cfg.equibop then pkgs.equibop else if cfg.vesktop then pkgs.vesktop else vanillaDiscordPackage; in { options.modules.software.distractions.discord = { enable = mkEnableOption "Enable Discord, a social messaging app"; vesktop = mkEnableOption "Use Vesktop, an alternative Electron client with Vencord preinstalled"; equibop = mkEnableOption "Use Equibop, a fork of Vesktop with Equicord preinstalled"; }; config = mkIf cfg.enable { assertions = [ { assertion = !(cfg.vesktop && cfg.equibop); message = "You must either enable Vesktop or Equibop, not both"; } ]; user.packages = [ finalPackage ]; }; }