## Round Robin
##
## Given a list of services, run each in turn until it exits, then
## runs the next.

{
  lib,
  pkgs,
  config,
  ...
}:
let
  inherit (lib) mkOption types;
  inherit (pkgs) liminix;
  inherit (pkgs.liminix.services) longrun;
in
{
  options = {
    system.service.round-robin = mkOption {
      description = "run services one at a time and failover to next";
      type = liminix.lib.types.serviceDefn;
    };
  };
  config.system.service.round-robin = config.system.callService ./service.nix {
    services = mkOption {
      type = types.listOf liminix.lib.types.service;
    };
    name = mkOption {
      type = types.str;
    };
  };
}