nixos/shadowsocks: ensure password be set

Co-authored-by: Pascal Wittmann <mail@pascal-wittmann.de>

oluceps c2c632ff 0dd6aae0

Changed files
+10 -4
nixos
modules
services
networking
+10 -4
nixos/modules/services/networking/shadowsocks.nix
···
###### implementation
config = mkIf cfg.enable {
-
assertions = singleton
-
{ assertion = cfg.password == null || cfg.passwordFile == null;
-
message = "Cannot use both password and passwordFile for shadowsocks-libev";
-
};
+
assertions = [
+
{
+
# xor, make sure either password or passwordFile be set.
+
# shadowsocks-libev not support plain/none encryption method
+
# which indicated that password must set.
+
assertion = let noPasswd = cfg.password == null; noPasswdFile = cfg.passwordFile == null;
+
in (noPasswd && !noPasswdFile) || (!noPasswd && noPasswdFile);
+
message = "Option `password` or `passwordFile` must be set and cannot be set simultaneously";
+
}
+
];
systemd.services.shadowsocks-libev = {
description = "shadowsocks-libev Daemon";