/** Deployment options as to be presented in the front end. These are converted to JSON schema in order to generate front-end forms etc. For this to work, options must not have types `functionTo` or `package`, and must not access `config` for their default values. */ { lib, ... }: let inherit (lib) types mkOption; in { options = { enable = lib.mkEnableOption "Fediversity configuration"; domain = mkOption { type = with types; enum [ "fediversity.net" ]; description = '' Apex domain under which the services will be deployed. ''; default = "fediversity.net"; }; pixelfed = { enable = lib.mkEnableOption "Pixelfed"; }; peertube = { enable = lib.mkEnableOption "Peertube"; }; mastodon = { enable = lib.mkEnableOption "Mastodon"; }; initialUser = mkOption { description = '' Some services require an initial user to access them. This option sets the credentials for such an initial user. ''; type = types.submodule { options = { displayName = mkOption { type = types.str; description = "Display name of the user"; }; username = mkOption { type = types.str; description = "Username for login"; }; email = mkOption { type = types.str; description = "User's email address"; }; password = mkOption { type = types.str; description = "Password for login"; }; }; }; }; }; }