diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 205453ac..2a4325ee 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -167,6 +167,8 @@ /modules/programs/scmpuff.nix @cpcloud /tests/modules/programs/scmpuff @cpcloud +/modules/programs/senpai.nix @malte-v + /modules/programs/ssh.nix @rycee /modules/programs/starship.nix @marsam diff --git a/modules/lib/maintainers.nix b/modules/lib/maintainers.nix index e41645b1..a69a9bb6 100644 --- a/modules/lib/maintainers.nix +++ b/modules/lib/maintainers.nix @@ -87,4 +87,10 @@ githubId = 12465195; name = "Bruno BELANYI"; }; + malvo = { + email = "malte@malvo.org"; + github = "malte-v"; + githubId = 34393802; + name = "Malte Voos"; + }; } diff --git a/modules/modules.nix b/modules/modules.nix index b04005e9..977c3a77 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -126,6 +126,7 @@ let (loadModule ./programs/rofi-pass.nix { }) (loadModule ./programs/rtorrent.nix { }) (loadModule ./programs/scmpuff.nix { }) + (loadModule ./programs/senpai.nix { }) (loadModule ./programs/skim.nix { }) (loadModule ./programs/starship.nix { }) (loadModule ./programs/sbt.nix { }) diff --git a/modules/programs/senpai.nix b/modules/programs/senpai.nix new file mode 100644 index 00000000..6e5a4a0a --- /dev/null +++ b/modules/programs/senpai.nix @@ -0,0 +1,73 @@ +{ 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 = literalExample "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 = literalExample '' + { + 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 ]; +}