{
  pkgs,
  lib,
  fleetFlake,
  config,
  ...
}: {
  users.users.garmin-collector = {
    isSystemUser = true;
    group = "garmin-collector";
    extraGroups = ["garmin-collector"];
    home = "/var/lib/garmin-collector";
  };

  users.groups.garmin-collector = {};

  systemd.services.garmin-collector = {
    description = "Garmin collector pushing to Prometheus Pushgateway";
    wantedBy = ["multi-user.target"];
    environment = {
      PUSHGATEWAY_ADDRESS = config.services.prometheus.pushgateway.web.listen-address;
    };
    serviceConfig = {
      Group = "garmin-collector";
      User = "garmin-collector";
      WorkingDirectory = "/var/lib/garmin-collector";
      ExecStart = ''
        ${lib.getExe fleetFlake.packages.${pkgs.system}.garmin-collector}
      '';
      EnvironmentFile = config.age.secrets.garmin-collector-environment.path;
    };
  };

  systemd.timers."garmin-collector" = {
    wantedBy = ["timers.target"];
    timerConfig = {
      OnBootSec = "5m";
      OnUnitActiveSec = "4h";
      Unit = "garmin-collector.service";
    };
  };

  environment.persistence."/persist".directories = [
    "/var/lib/garmin-collector"
  ];
}