{ config, lib, ... }: let cfg = config.nixfiles.modules.alloy; in { options.nixfiles.modules.alloy.enable = lib.mkEnableOption "Alloy"; config = lib.mkIf cfg.enable { services.alloy.enable = true; environment.etc."alloy/config.alloy".text = '' logging { level = "warn" format = "logfmt" } prometheus.remote_write "default" { endpoint { url = "https://${config.nixfiles.modules.mimir.domain}/api/v1/push" } } prometheus.exporter.self "default" { } prometheus.scrape "self" { targets = prometheus.exporter.self.default.targets forward_to = [prometheus.relabel.default.receiver] } prometheus.exporter.unix "default" { } prometheus.scrape "unix" { targets = prometheus.exporter.unix.default.targets forward_to = [prometheus.relabel.default.receiver] } prometheus.relabel "default" { rule { action = "replace" regex = "([^:]+):[0-9]+" replacement = "$1" source_labels = ["__address__"] target_label = "instance" } forward_to = [prometheus.remote_write.default.receiver] } loki.write "default" { endpoint { url = "https://${config.nixfiles.modules.loki.domain}/loki/api/v1/push" } } discovery.relabel "journal" { targets = [] rule { source_labels = ["__journal__systemd_unit"] target_label = "unit" } rule { source_labels = ["__journal_priority_keyword"] target_label = "level" } rule { action = "labeldrop" regex = "service_name" } rule { action = "drop" source_labels = ["unit"] regex = "^acme.*" } rule { action = "drop" source_labels = ["unit"] regex = "^home-manager.*" } rule { action = "drop" source_labels = ["unit"] regex = ".*\\.scope$" } rule { action = "drop" source_labels = ["unit"] regex = "^user@.*" } rule { action = "drop" source_labels = ["unit"] regex = "^serial-getty@.*" } rule { action = "drop" source_labels = ["unit"] regex = "^nixos-rebuild.*" } } loki.source.journal "default" { forward_to = [loki.write.default.receiver] relabel_rules = discovery.relabel.journal.rules } ''; }; }