{ config, lib, pkgs, ... }: with lib; let cfg = config.programs.senpai; cfgFmt = pkgs.formats.yaml { }; in { options.programs.senpai = { enable = mkEnableOption "senpai"; package = mkOption { type = types.package; default = pkgs.senpai; defaultText = literalExpression "pkgs.senpai"; description = "The senpai package to use."; }; config = mkOption { type = types.submodule { freeformType = cfgFmt.type; options = { addr = mkOption { type = types.str; description = '' The address (host[:port]) of the IRC server. senpai uses TLS connections by default unless you specify no-tls option. TLS connections default to port 6697, plain-text use port 6667. ''; }; nick = mkOption { type = types.str; description = '' Your nickname, sent with a NICK IRC message. It mustn't contain spaces or colons (:). ''; }; password = mkOption { type = types.nullOr types.str; default = null; description = '' Your password, used for SASL authentication. Note that it will reside world-readable in the Nix store. ''; }; no-tls = mkOption { type = types.bool; default = false; description = "Disables TLS encryption."; }; }; }; example = literalExpression '' { addr = "libera.chat:6697"; nick = "nicholas"; password = "verysecurepassword"; } ''; description = '' Configuration for senpai. For a complete list of options, see senpai 5. ''; }; }; config = mkIf cfg.enable { home.packages = [ cfg.package ]; xdg.configFile."senpai/senpai.yaml".source = cfgFmt.generate "senpai.yaml" cfg.config; }; meta.maintainers = [ hm.maintainers.malvo ]; }