{ config, lib, pkgs, ... }: let cfg = config.sydnix.discord; in { options.sydnix.discord = { enable = lib.mkEnableOption "Discord"; fixWayland = lib.mkOption { description = '' Fix flickering on Wayland. ''; type = lib.types.bool; default = false; }; }; config = lib.mkIf cfg.enable (let # Fixes flickering and platform detection on Wayland. vesktop-wayland-wrapper = pkgs.symlinkJoin { name = "vesktop-wayland-wrapper"; paths = [ pkgs.callPackage pkgs.vesktop ]; buildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram $out/bin/vesktop \ --add-flags "--disable-gpu-compositing" # --add-flags "--disable-gpu-compositing --ozone-platform-hint=auto" ''; }; in { sydnix.impermanence.directories = let xdg-config-home = config.home.confighome or "${config.home.homeDirectory}/.config"; in [ # This directory should really be written in terms of # `config.programs.nixcord.vesktopConfigDir`, but it defaults to null # for unknown reasons. This is in conflict with the docs, which claim # it should be the path used here. (lib.removePrefix config.home.homeDirectory "${xdg-config-home}/vesktop") ]; programs.nixcord = { enable = true; discord = { # Install Vesktop without Discord. enable = false; # openASAR.enable = true; vencord.enable = false; vencord.package = pkgs.vencord; }; vesktop = { enable = true; # package = # if cfg.fixWayland # then vesktop-wayland-wrapper # else pkgs.vesktop; }; }; }); }