2023-08-23 13:34:58 +08:00
|
|
|
inputs:
|
|
|
|
{
|
2023-09-01 21:05:26 +08:00
|
|
|
options.nixos.services.redis = let inherit (inputs.lib) mkOption types; in
|
|
|
|
{
|
|
|
|
instances = mkOption
|
|
|
|
{
|
|
|
|
type = types.attrsOf (types.submodule (submoduleInputs: { options =
|
|
|
|
{
|
|
|
|
user = mkOption { type = types.nonEmptyStr; default = submoduleInputs.config._module.args.name; };
|
|
|
|
passwordFile = mkOption { type = types.nullOr types.nonEmptyStr; default = null; };
|
|
|
|
port = mkOption { type = types.ints.unsigned; };
|
|
|
|
};}));
|
|
|
|
default = {};
|
|
|
|
};
|
|
|
|
};
|
2024-05-30 13:04:39 +08:00
|
|
|
config = let inherit (inputs.config.nixos.services) redis; in
|
|
|
|
{
|
2024-05-30 13:48:07 +08:00
|
|
|
services.redis.servers = builtins.listToAttrs (builtins.map
|
2024-05-30 13:04:39 +08:00
|
|
|
(server:
|
|
|
|
{
|
|
|
|
inherit (server) name;
|
|
|
|
value =
|
2023-09-01 21:05:26 +08:00
|
|
|
{
|
2024-05-30 13:04:39 +08:00
|
|
|
enable = true;
|
|
|
|
bind = null;
|
|
|
|
port = server.value.port;
|
|
|
|
user = server.value.user;
|
|
|
|
# unixSocket = null; # bug
|
|
|
|
unixSocketPerm = 600;
|
|
|
|
requirePassFile =
|
|
|
|
if server.value.passwordFile == null then inputs.config.sops.secrets."redis/${server.name}".path
|
|
|
|
else server.value.passwordFile;
|
|
|
|
};
|
|
|
|
})
|
2024-05-30 13:48:07 +08:00
|
|
|
(inputs.localLib.attrsToList redis.instances));
|
|
|
|
sops.secrets = builtins.listToAttrs (builtins.map
|
2024-05-30 13:04:39 +08:00
|
|
|
(server: { name = "redis/${server.name}"; value.owner = inputs.config.users.users.${server.value.user}.name; })
|
2024-05-30 13:48:07 +08:00
|
|
|
(builtins.filter (server: server.value.passwordFile == null) (inputs.localLib.attrsToList redis.instances)));
|
2024-06-18 15:57:12 +08:00
|
|
|
systemd.services = builtins.listToAttrs (builtins.map
|
|
|
|
(server: { name = "redis-${server}"; value.serviceConfig.TimeoutStartSec = 0; })
|
|
|
|
(builtins.attrNames redis.instances));
|
2024-05-30 13:04:39 +08:00
|
|
|
};
|
2023-08-23 13:34:58 +08:00
|
|
|
}
|