# The few host-identity values the cc-ci modules need but must not hard-code, so that the same
# modules can build the canonical Hetzner host, a throwaway rebuild VM, or a combined host that
# also runs the cc-ci orchestrator (2026-09: recipe-maintainers/cc-ci-orchestrator imports
# `nixosModules.cc-ci-server` from this repo and runs both on one box).
{ lib, ... }:
{
  options.cc-ci = {
    publicIPv4 = lib.mkOption {
      type = lib.types.str;
      example = "91.98.47.73";
      description = ''
        The host's public IPv4 address. acme-dns binds its authoritative listener to it and
        publishes it as the `ns-acme` glue record. Must match the Gandi A record for
        ns-acme.commoninternet.net and the address the cc-ci DNS names point at.
      '';
    };

    sopsFile = lib.mkOption {
      type = lib.types.path;
      default = ../../secrets/secrets.yaml;
      defaultText = lib.literalExpression "../../secrets/secrets.yaml";
      example = "/etc/cc-ci/secrets/secrets.yaml";
      description = ''
        The sops-encrypted secrets.yaml (recipe-maintainers/cc-ci-secrets). The default is the
        `secrets/` git submodule inside this repo, which only exists when this flake is built from
        a `--recursive` clone (`git+file:///root/cc-ci?submodules=1`). A consumer that imports
        cc-ci as a plain flake input (no submodule) sets this to an absolute path on the host
        instead — e.g. the `/etc/cc-ci` deployed checkout's `secrets/secrets.yaml` — which
        sops-nix then reads at activation time rather than copying into the store.
      '';
    };
  };
}
