{ lib, ... }: let inherit (lib) types mkOption; in with types; { options = { runtime-environments = mkOption { description = "Collection of runtime environments into which applications can be deployed"; type = attrsOf (attrTag { nixos = mkOption { description = "A single NixOS machine"; type = submodule { options = { module = mkOption { description = "The NixOS module describing the base configuration for that machine"; type = deferredModule; }; }; }; }; }); }; applications = mkOption { description = "Collection of Fediversity applications"; type = attrsOf (submoduleWith { modules = [ { options = { module = mkOption { description = "The NixOS module for that application, for configuring that application"; type = deferredModule; }; }; } ]; }); }; }; }