{ options, config, lib, pkgs, ... }: with lib; let cfg = config.aa.services.promtail; loki = config.services.loki; in { options.aa.services.promtail = with types; { enable = mkEnableOption "promtail"; }; config = mkIf cfg.enable { services.promtail = { enable = true; configuration = { server = { http_listen_port = 28183; grpc_listen_port = 0; }; positions = { filename = "/tmp/positions.yaml"; }; clients = [ { # TODO: Don't hardcode this? url = "http://node:3030/loki/api/v1/push"; } ]; scrape_configs = [ { job_name = "journal"; journal = { max_age = "12h"; labels = { job = "systemd-journal"; host = config.networking.hostName; }; }; relabel_configs = [ { source_labels = ["__journal__systemd_unit"]; target_label = "unit"; } ]; } ]; }; }; # networking.firewall = { # allowedTCPPorts = [80 443]; # }; }; }