{ config, lib, ... }: let cfg = config.nixfiles.modules.redis; in { options.nixfiles.modules.redis.enable = lib.mkEnableOption "Redis"; config = lib.mkIf cfg.enable { ark.directories = [ "/var/lib/redis-default" ]; services = { redis = { servers.default = { enable = true; bind = "127.0.0.1"; port = 6379; }; vmOverCommit = true; }; prometheus.exporters = { redis = { enable = true; listenAddress = "127.0.0.1"; port = 9121; extraFlags = with config.services.redis.servers.default; [ "--redis.addr=redis://${bind}:${toString port}" "--redis.user=${user}" ]; }; }; }; systemd.services.alloy.reloadTriggers = [ config.environment.etc."alloy/redis.alloy".source ]; environment.etc."alloy/redis.alloy".text = with config.services.prometheus.exporters.redis; '' prometheus.scrape "redis" { targets = [ { __address__ = "${listenAddress}:${toString port}", instance = "${config.networking.hostName}", }, ] forward_to = [prometheus.relabel.default.receiver] } ''; }; }