4d19ca4703
GitOrigin-RevId: a7117efb3725e6197dd95424136f79147aa35e5b
106 lines
3.5 KiB
Nix
106 lines
3.5 KiB
Nix
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let cfg = config.programs.senpai;
|
|
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 = types.attrsOf types.anything;
|
|
options = {
|
|
address = mkOption {
|
|
type = types.str;
|
|
description = ''
|
|
The address (`host[:port]`) of the IRC server. senpai uses TLS
|
|
connections by default unless you specify tls option to be false.
|
|
TLS connections default to port 6697, plain-text use port 6667.
|
|
|
|
UR`ircs://`, `irc://`, and `irc+insecure://` URLs are supported,
|
|
in which case only the hostname and port parts will be used. If
|
|
the scheme is `ircs/irc+insecure`, tls will be overriden and set
|
|
to true/false accordingly.
|
|
'';
|
|
};
|
|
|
|
nickname = 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.
|
|
'';
|
|
};
|
|
|
|
password-cmd = mkOption {
|
|
type = types.nullOr (types.listOf types.str);
|
|
default = null;
|
|
example = [ "gopass" "show" "irc/guest" ];
|
|
description = ''
|
|
Alternatively to providing your SASL authentication password
|
|
directly in plaintext, you can specify a command to be run to
|
|
fetch the password at runtime. This is useful if you store your
|
|
passwords in a separate (probably encrypted) file using `gpg` or a
|
|
command line password manager such as `pass` or `gopass`. If a
|
|
password-cmd is provided, the value of password will be ignored
|
|
and the first line of the output of `password-cmd` will be used
|
|
for login.
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
example = literalExpression ''
|
|
{
|
|
address = "libera.chat:6697";
|
|
nickname = "nicholas";
|
|
password = "verysecurepassword";
|
|
}
|
|
'';
|
|
description = ''
|
|
Configuration for senpai. For a complete list of options, see
|
|
{manpage}`senpai(5)`.
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
assertions = with cfg.config; [
|
|
{
|
|
assertion = !isNull password-cmd -> isNull password;
|
|
message = "senpai: password-cmd overrides password!";
|
|
}
|
|
{
|
|
assertion = !cfg.config ? addr;
|
|
message = "senpai: addr is deprecated, use address instead";
|
|
}
|
|
{
|
|
assertion = !cfg.config ? nick;
|
|
message = "senpai: nick is deprecated, use nickname instead";
|
|
}
|
|
{
|
|
assertion = !cfg.config ? no-tls;
|
|
message = "senpai: no-tls is deprecated, use tls instead";
|
|
}
|
|
];
|
|
home.packages = [ cfg.package ];
|
|
xdg.configFile."senpai/senpai.scfg".text =
|
|
lib.hm.generators.toSCFG { } cfg.config;
|
|
};
|
|
|
|
meta.maintainers = [ hm.maintainers.malvo ];
|
|
}
|