{ config, lib, pkgs, ... }: with lib; let cfg = config.programs.discocss; in { meta.maintainers = with maintainers; [ kranzes ]; options = { programs.discocss = { enable = mkEnableOption "discocss, a tiny Discord CSS injector for Linux and MacOS"; package = mkPackageOption pkgs "discocss" { }; discordPackage = mkPackageOption pkgs "discord" { }; discordAlias = mkOption { type = types.bool; default = true; description = "Whether to alias discocss to discord."; }; css = mkOption { type = types.str; default = ""; description = "The custom CSS for discocss to use."; }; }; }; config = mkIf cfg.enable { assertions = [{ assertion = cfg.discordAlias -> !(any (p: p.name == cfg.discordPackage.name) config.home.packages); message = "To use discocss with discordAlias you have to remove discord from home.packages, or set discordAlias to false."; }]; home.packages = [ (cfg.package.override { discordAlias = cfg.discordAlias; discord = cfg.discordPackage; }) ]; xdg.configFile."discocss/custom.css".text = cfg.css; }; }