From afb5fd962cdd122b70a7c0f3ad78c8ec6a75766b Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Mon, 7 Jun 2021 07:31:25 +1000 Subject: [PATCH] irssi: add ssl_cert option for servers (#2043) * irssi: add ssl_cert option for servers I was following these instructions https://www.oftc.net/NickServ/CertFP/ and found that the `/server add -ssl_cert` option was needed. This patch therefore adds an optional `programs.irssi.networks..server.ssl.certificateFile` path. Perhaps this could also be done with a `settings` attribute, but that would probably require most of this module to be reworked. * irsii: Add example-settings test case --- modules/programs/irssi.nix | 12 ++++++ tests/default.nix | 1 + tests/modules/programs/irsii/default.nix | 1 + .../irsii/example-settings-expected.config | 43 +++++++++++++++++++ .../programs/irsii/example-settings.nix | 31 +++++++++++++ 5 files changed, 88 insertions(+) create mode 100644 tests/modules/programs/irsii/default.nix create mode 100644 tests/modules/programs/irsii/example-settings-expected.config create mode 100644 tests/modules/programs/irsii/example-settings.nix diff --git a/modules/programs/irssi.nix b/modules/programs/irssi.nix index fc8fa8e61..af9e16fc7 100644 --- a/modules/programs/irssi.nix +++ b/modules/programs/irssi.nix @@ -35,6 +35,9 @@ let use_ssl = "${boolStr v.server.ssl.enable}"; ssl_verify = "${boolStr v.server.ssl.verify}"; autoconnect = "${boolStr v.server.autoConnect}"; + ${lib.optionalString (v.server.ssl.certificateFile != null) '' + ssl_cert = "${v.server.ssl.certificateFile}"; + ''} } '')); @@ -118,6 +121,15 @@ let default = true; description = "Whether the SSL certificate should be verified."; }; + + certificateFile = mkOption { + type = types.nullOr types.path; + default = null; + description = '' + Path to a file containing the certificate used for + client authentication to the server. + ''; + }; }; autoConnect = mkOption { diff --git a/tests/default.nix b/tests/default.nix index 5fb71a218..1bbf8e898 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -55,6 +55,7 @@ import nmt { ./modules/programs/gpg ./modules/programs/htop ./modules/programs/i3status + ./modules/programs/irsii ./modules/programs/kakoune ./modules/programs/kitty ./modules/programs/lf diff --git a/tests/modules/programs/irsii/default.nix b/tests/modules/programs/irsii/default.nix new file mode 100644 index 000000000..ff8fe12a7 --- /dev/null +++ b/tests/modules/programs/irsii/default.nix @@ -0,0 +1 @@ +{ irsii-example-settings = ./example-settings.nix; } diff --git a/tests/modules/programs/irsii/example-settings-expected.config b/tests/modules/programs/irsii/example-settings-expected.config new file mode 100644 index 000000000..8c54243bc --- /dev/null +++ b/tests/modules/programs/irsii/example-settings-expected.config @@ -0,0 +1,43 @@ +settings = { + core = { + settings_autosave = "no"; + }; +}; + +aliases = { + +}; + +chatnets = { +oftc = { + type = "IRC"; + nick = "nick"; + autosendcmd = ""; +}; + +}; + +servers = ( +{ + chatnet = "oftc"; + address = "irc.oftc.net"; + port = "6697"; + use_ssl = "yes"; + ssl_verify = "yes"; + autoconnect = "yes"; + ssl_cert = "/home/hm-user/.irssi/certs/nick.pem"; + +} + +); + +channels = ( +{ + chatnet = "oftc"; + name = "home-manager"; + autojoin = "yes"; +} + +); + + diff --git a/tests/modules/programs/irsii/example-settings.nix b/tests/modules/programs/irsii/example-settings.nix new file mode 100644 index 000000000..d7b9ff1e6 --- /dev/null +++ b/tests/modules/programs/irsii/example-settings.nix @@ -0,0 +1,31 @@ +{ config, lib, pkgs, ... }: + +with lib; + +{ + config = { + programs.irssi = { + enable = true; + networks.oftc = { + nick = "nick"; + server = { + address = "irc.oftc.net"; + port = 6697; + autoConnect = true; + ssl.certificateFile = + "${config.home.homeDirectory}/.irssi/certs/nick.pem"; + }; + channels.home-manager.autoJoin = true; + }; + }; + + nmt.script = '' + assertFileContent \ + home-files/.irssi/config \ + ${./example-settings-expected.config} + ''; + + nixpkgs.overlays = + [ (self: super: { irsii = pkgs.writeScriptBin "dummy-irsii" ""; }) ]; + }; +}