{
	config,
	container,
	lib,
	...
}: let
	cfg = config.container.module.redis;
in {
	options.container.module.redis = {
		enable = lib.mkEnableOption "the Redis server.";
		address = lib.mkOption {
			default = "10.1.0.38";
			type    = lib.types.str;
		};
		port = lib.mkOption {
			default = 6379;
			type    = lib.types.int;
		};
	};

	config = lib.mkIf cfg.enable {
		containers.redis = container.mkContainer cfg {
			config = { ... }: container.mkContainerConfig cfg {
				services.redis.servers.main = {
					enable = true;
					port   = cfg.port;
					bind   = cfg.address;
					extraParams = [
						"--protected-mode no"
					];
				};
			};
		};
	};
}