diff --git a/pkgs/clan-app/ui/app/app/api/API.json b/pkgs/clan-app/ui/app/app/api/API.json deleted file mode 100644 index 112bf11a7..000000000 --- a/pkgs/clan-app/ui/app/app/api/API.json +++ /dev/null @@ -1,5591 +0,0 @@ -{ - "$comment": "An object containing API methods. ", - "type": "object", - "additionalProperties": false, - "required": [ - "cancel_task", - "list_tasks", - "open_file", - "get_directory", - "show_block_devices", - "show_machine_hardware_config", - "show_machine_hardware_platform", - "generate_machine_hardware_info", - "list_modules", - "get_disk_schemas", - "set_machine_disk_schema", - "show_mdns", - "load_inventory_json", - "patch_inventory_with", - "get_inventory_with_writeable_keys", - "set_inventory", - "get_inventory", - "set_machine", - "list_machines", - "get_machine_details", - "check_machine_online", - "get_generators_closure", - "generate_vars_for_machine", - "create_clan", - "show_clan_meta", - "update_clan_meta", - "maybe_get_admin_public_key", - "list_possible_languages", - "list_possible_keymaps", - "flash_machine", - "create_machine", - "delete_machine", - "install_machine", - "deploy_machine", - "get_vars", - "get_generators", - "set_prompts", - "get_var", - "keygen" - ], - "properties": { - "cancel_task": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "null" - } - }, - "required": ["status", "op_key"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["task_id"], - "additionalProperties": false, - "properties": { - "task_id": { - "type": "string" - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "list_tasks": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": [], - "additionalProperties": false, - "properties": { - "op_key": { - "type": "string" - } - } - } - } - }, - "open_file": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "null" - } - ] - } - }, - "required": ["status", "op_key"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["file_request"], - "additionalProperties": false, - "properties": { - "file_request": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "open_file", - "select_folder", - "save", - "open_multiple_files" - ] - }, - "title": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "filters": { - "oneOf": [ - { - "type": "object", - "properties": { - "title": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "mime_types": { - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "null" - } - ] - }, - "patterns": { - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "null" - } - ] - }, - "suffixes": { - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "null" - } - ] - } - }, - "required": [], - "additionalProperties": false - }, - { - "type": "null" - } - ] - }, - "initial_file": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "initial_folder": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["mode"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "get_directory": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "object", - "properties": { - "path": { - "type": "string" - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "path": { - "type": "string" - }, - "file_type": { - "type": "string", - "enum": ["file", "directory", "symlink"] - } - }, - "required": ["file_type", "path"], - "additionalProperties": false - } - } - }, - "required": ["path"], - "additionalProperties": false - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["flake"], - "additionalProperties": false, - "properties": { - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "show_block_devices": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "object", - "properties": { - "blockdevices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "id_link": { - "type": "string" - }, - "path": { - "type": "string" - }, - "rm": { - "type": "string" - }, - "size": { - "type": "string" - }, - "ro": { - "type": "boolean" - }, - "mountpoints": { - "type": "array", - "items": { - "type": "string" - } - }, - "type_": { - "type": "string", - "enum": ["disk"] - } - }, - "required": [ - "type_", - "mountpoints", - "name", - "ro", - "rm", - "id_link", - "path", - "size" - ], - "additionalProperties": false - } - } - }, - "required": ["blockdevices"], - "additionalProperties": false - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": [], - "additionalProperties": false, - "properties": { - "op_key": { - "type": "string" - } - } - } - } - }, - "show_machine_hardware_config": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "string", - "enum": ["nixos-facter", "nixos-generate-config", "none"] - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["machine"], - "additionalProperties": false, - "properties": { - "machine": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "nix_options": { - "type": "array", - "items": { - "type": "string" - } - }, - "cached_deployment": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "object", - "additionalProperties": true - } - ] - }, - "override_target_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "override_build_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "private_key": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "host_key_check": { - "type": "string", - "enum": [0, 1, 2, 3] - } - }, - "required": ["flake", "name"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "show_machine_hardware_platform": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["status", "op_key"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["machine"], - "additionalProperties": false, - "properties": { - "machine": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "nix_options": { - "type": "array", - "items": { - "type": "string" - } - }, - "cached_deployment": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "object", - "additionalProperties": true - } - ] - }, - "override_target_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "override_build_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "private_key": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "host_key_check": { - "type": "string", - "enum": [0, 1, 2, 3] - } - }, - "required": ["flake", "name"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "generate_machine_hardware_info": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "string", - "enum": ["nixos-facter", "nixos-generate-config", "none"] - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["opts"], - "additionalProperties": false, - "properties": { - "opts": { - "type": "object", - "properties": { - "machine": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "nix_options": { - "type": "array", - "items": { - "type": "string" - } - }, - "cached_deployment": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "object", - "additionalProperties": true - } - ] - }, - "override_target_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "override_build_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "private_key": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "host_key_check": { - "type": "string", - "enum": [0, 1, 2, 3] - } - }, - "required": ["flake", "name"], - "additionalProperties": false - }, - "backend": { - "type": "string", - "enum": ["nixos-facter", "nixos-generate-config", "none"] - }, - "password": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["machine", "backend"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "list_modules": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "object", - "properties": { - "modulesPerSource": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "manifest": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "categories": { - "type": "array", - "items": { - "type": "string" - } - }, - "features": { - "type": "object", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "name", - "description", - "categories", - "features" - ], - "additionalProperties": false - }, - "roles": { - "type": "object", - "additionalProperties": { - "type": "null" - } - } - }, - "required": ["manifest", "roles"], - "additionalProperties": false - } - } - }, - "localModules": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "manifest": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "categories": { - "type": "array", - "items": { - "type": "string" - } - }, - "features": { - "type": "object", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "name", - "description", - "categories", - "features" - ], - "additionalProperties": false - }, - "roles": { - "type": "object", - "additionalProperties": { - "type": "null" - } - } - }, - "required": ["manifest", "roles"], - "additionalProperties": false - } - } - }, - "required": ["modulesPerSource", "localModules"], - "additionalProperties": false - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["base_path"], - "additionalProperties": false, - "properties": { - "base_path": { - "type": "string" - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "get_disk_schemas": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "readme": { - "type": "string" - }, - "frontmatter": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "categories": { - "type": "array", - "items": { - "type": "string" - } - }, - "features": { - "type": "array", - "items": { - "type": "string" - } - }, - "constraints": { - "type": "object", - "additionalProperties": true - } - }, - "required": ["description"], - "additionalProperties": false - }, - "placeholders": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "options": { - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "null" - } - ] - }, - "required": { - "type": "boolean" - } - }, - "required": ["label", "required"], - "additionalProperties": false - } - } - }, - "required": [ - "placeholders", - "readme", - "frontmatter", - "name" - ], - "additionalProperties": false - } - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["machine"], - "additionalProperties": false, - "properties": { - "machine": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "nix_options": { - "type": "array", - "items": { - "type": "string" - } - }, - "cached_deployment": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "object", - "additionalProperties": true - } - ] - }, - "override_target_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "override_build_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "private_key": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "host_key_check": { - "type": "string", - "enum": [0, 1, 2, 3] - } - }, - "required": ["flake", "name"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "set_machine_disk_schema": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "null" - } - }, - "required": ["status", "op_key"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["machine", "schema_name", "placeholders"], - "additionalProperties": false, - "properties": { - "machine": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "nix_options": { - "type": "array", - "items": { - "type": "string" - } - }, - "cached_deployment": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "object", - "additionalProperties": true - } - ] - }, - "override_target_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "override_build_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "private_key": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "host_key_check": { - "type": "string", - "enum": [0, 1, 2, 3] - } - }, - "required": ["flake", "name"], - "additionalProperties": false - }, - "schema_name": { - "type": "string" - }, - "placeholders": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "force": { - "type": "boolean" - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "show_mdns": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "object", - "properties": { - "services": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "interface": { - "type": "string" - }, - "protocol": { - "type": "string" - }, - "name": { - "type": "string" - }, - "type_": { - "type": "string" - }, - "domain": { - "type": "string" - }, - "host": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "ip": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "port": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "txt": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "type_", - "name", - "interface", - "domain", - "protocol" - ], - "additionalProperties": false - } - } - }, - "required": ["services"], - "additionalProperties": false - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": [], - "additionalProperties": false, - "properties": { - "op_key": { - "type": "string" - } - } - } - } - }, - "load_inventory_json": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "object", - "properties": { - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "deploy": { - "type": "object", - "properties": { - "targetHost": { - "type": "string" - } - }, - "required": [], - "additionalProperties": false - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "machineClass": { - "type": "string", - "enum": ["nixos", "darwin"] - }, - "name": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [], - "additionalProperties": false - } - }, - "meta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - } - }, - "required": ["name"], - "additionalProperties": false - }, - "modules": { - "type": "object", - "additionalProperties": true - }, - "services": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": true - } - }, - "tags": { - "type": "object", - "additionalProperties": true - } - }, - "required": [], - "additionalProperties": false - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["flake"], - "additionalProperties": false, - "properties": { - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "patch_inventory_with": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "null" - } - }, - "required": ["status", "op_key"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["flake", "section", "content"], - "additionalProperties": false, - "properties": { - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "section": { - "type": "string" - }, - "content": { - "type": "object", - "additionalProperties": true - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "get_inventory_with_writeable_keys": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "object", - "properties": { - "writeables": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "data_eval": { - "type": "object", - "properties": { - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "deploy": { - "type": "object", - "properties": { - "targetHost": { - "type": "string" - } - }, - "required": [], - "additionalProperties": false - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "machineClass": { - "type": "string", - "enum": ["nixos", "darwin"] - }, - "name": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [], - "additionalProperties": false - } - }, - "meta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - } - }, - "required": ["name"], - "additionalProperties": false - }, - "modules": { - "type": "object", - "additionalProperties": true - }, - "services": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": true - } - }, - "tags": { - "type": "object", - "additionalProperties": true - } - }, - "required": [], - "additionalProperties": false - }, - "data_disk": { - "type": "object", - "properties": { - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "deploy": { - "type": "object", - "properties": { - "targetHost": { - "type": "string" - } - }, - "required": [], - "additionalProperties": false - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "machineClass": { - "type": "string", - "enum": ["nixos", "darwin"] - }, - "name": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [], - "additionalProperties": false - } - }, - "meta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - } - }, - "required": ["name"], - "additionalProperties": false - }, - "modules": { - "type": "object", - "additionalProperties": true - }, - "services": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": true - } - }, - "tags": { - "type": "object", - "additionalProperties": true - } - }, - "required": [], - "additionalProperties": false - } - }, - "required": ["data_disk", "writeables", "data_eval"], - "additionalProperties": false - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["flake"], - "additionalProperties": false, - "properties": { - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "set_inventory": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "null" - } - }, - "required": ["status", "op_key"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["inventory", "flake", "message"], - "additionalProperties": false, - "properties": { - "inventory": { - "type": "object", - "properties": { - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "deploy": { - "type": "object", - "properties": { - "targetHost": { - "type": "string" - } - }, - "required": [], - "additionalProperties": false - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "machineClass": { - "type": "string", - "enum": ["nixos", "darwin"] - }, - "name": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [], - "additionalProperties": false - } - }, - "meta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - } - }, - "required": ["name"], - "additionalProperties": false - }, - "modules": { - "type": "object", - "additionalProperties": true - }, - "services": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": true - } - }, - "tags": { - "type": "object", - "additionalProperties": true - } - }, - "required": [], - "additionalProperties": false - }, - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "message": { - "type": "string" - }, - "commit": { - "type": "boolean" - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "get_inventory": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "object", - "properties": { - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "deploy": { - "type": "object", - "properties": { - "targetHost": { - "type": "string" - } - }, - "required": [], - "additionalProperties": false - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "machineClass": { - "type": "string", - "enum": ["nixos", "darwin"] - }, - "name": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [], - "additionalProperties": false - } - }, - "meta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - } - }, - "required": ["name"], - "additionalProperties": false - }, - "modules": { - "type": "object", - "additionalProperties": true - }, - "services": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": true - } - }, - "tags": { - "type": "object", - "additionalProperties": true - } - }, - "required": [], - "additionalProperties": false - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["flake"], - "additionalProperties": false, - "properties": { - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "set_machine": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "null" - } - }, - "required": ["status", "op_key"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["flake", "machine_name", "machine"], - "additionalProperties": false, - "properties": { - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "machine_name": { - "type": "string" - }, - "machine": { - "type": "object", - "properties": { - "deploy": { - "type": "object", - "properties": { - "targetHost": { - "type": "string" - } - }, - "required": [], - "additionalProperties": false - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "machineClass": { - "type": "string", - "enum": ["nixos", "darwin"] - }, - "name": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "list_machines": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "deploy": { - "type": "object", - "properties": { - "targetHost": { - "type": "string" - } - }, - "required": [], - "additionalProperties": false - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "machineClass": { - "type": "string", - "enum": ["nixos", "darwin"] - }, - "name": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [], - "additionalProperties": false - } - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["flake"], - "additionalProperties": false, - "properties": { - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "get_machine_details": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "object", - "properties": { - "machine": { - "type": "object", - "properties": { - "deploy": { - "type": "object", - "properties": { - "targetHost": { - "type": "string" - } - }, - "required": [], - "additionalProperties": false - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "machineClass": { - "type": "string", - "enum": ["nixos", "darwin"] - }, - "name": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [], - "additionalProperties": false - }, - "hw_config": { - "oneOf": [ - { - "type": "string", - "enum": [ - "nixos-facter", - "nixos-generate-config", - "none" - ] - }, - { - "type": "null" - } - ] - }, - "disk_schema": { - "oneOf": [ - { - "type": "object", - "properties": { - "schema_name": { - "type": "string" - }, - "placeholders": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "required": ["schema_name", "placeholders"], - "additionalProperties": false - }, - { - "type": "null" - } - ] - } - }, - "required": ["machine"], - "additionalProperties": false - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["machine"], - "additionalProperties": false, - "properties": { - "machine": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "nix_options": { - "type": "array", - "items": { - "type": "string" - } - }, - "cached_deployment": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "object", - "additionalProperties": true - } - ] - }, - "override_target_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "override_build_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "private_key": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "host_key_check": { - "type": "string", - "enum": [0, 1, 2, 3] - } - }, - "required": ["flake", "name"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "check_machine_online": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "string", - "enum": ["Online", "Offline"] - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["machine"], - "additionalProperties": false, - "properties": { - "machine": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "nix_options": { - "type": "array", - "items": { - "type": "string" - } - }, - "cached_deployment": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "object", - "additionalProperties": true - } - ] - }, - "override_target_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "override_build_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "private_key": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "host_key_check": { - "type": "string", - "enum": [0, 1, 2, 3] - } - }, - "required": ["flake", "name"], - "additionalProperties": false - }, - "opts": { - "oneOf": [ - { - "type": "object", - "properties": { - "timeout": { - "type": "integer" - }, - "retries": { - "type": "integer" - } - }, - "required": [], - "additionalProperties": false - }, - { - "type": "null" - } - ] - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "get_generators_closure": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "secret": { - "type": "boolean" - }, - "deploy": { - "type": "boolean" - }, - "owner": { - "type": "string" - }, - "group": { - "type": "string" - }, - "mode": { - "type": "integer" - }, - "needed_for": { - "type": "string" - } - }, - "required": ["id", "name"], - "additionalProperties": false - } - }, - "share": { - "type": "boolean" - }, - "prompts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "prompt_type": { - "type": "string", - "enum": ["line", "hidden", "multiline"] - }, - "persist": { - "type": "boolean" - }, - "previous_value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["prompt_type", "description", "name"], - "additionalProperties": false - } - }, - "dependencies": { - "type": "array", - "items": { - "type": "string" - } - }, - "migrate_fact": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["name"], - "additionalProperties": false - } - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["machine_name", "base_dir"], - "additionalProperties": false, - "properties": { - "machine_name": { - "type": "string" - }, - "base_dir": { - "type": "string" - }, - "regenerate": { - "type": "boolean" - }, - "include_previous_values": { - "type": "boolean" - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "generate_vars_for_machine": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "boolean" - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": [ - "machine_name", - "generators", - "all_prompt_values", - "base_dir" - ], - "additionalProperties": false, - "properties": { - "machine_name": { - "type": "string" - }, - "generators": { - "type": "array", - "items": { - "type": "string" - } - }, - "all_prompt_values": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "base_dir": { - "type": "string" - }, - "no_sandbox": { - "type": "boolean" - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "create_clan": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "object", - "properties": { - "flake_update": { - "oneOf": [ - { - "type": "object", - "properties": { - "stdout": { - "type": "string" - }, - "stderr": { - "type": "string" - }, - "env": { - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - { - "type": "null" - } - ] - }, - "cwd": { - "type": "string" - }, - "command_list": { - "type": "array", - "items": { - "type": "string" - } - }, - "returncode": { - "type": "integer" - }, - "msg": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "cwd", - "stderr", - "command_list", - "returncode", - "stdout" - ], - "additionalProperties": false - }, - { - "type": "null" - } - ] - }, - "git_init": { - "oneOf": [ - { - "type": "object", - "properties": { - "stdout": { - "type": "string" - }, - "stderr": { - "type": "string" - }, - "env": { - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - { - "type": "null" - } - ] - }, - "cwd": { - "type": "string" - }, - "command_list": { - "type": "array", - "items": { - "type": "string" - } - }, - "returncode": { - "type": "integer" - }, - "msg": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "cwd", - "stderr", - "command_list", - "returncode", - "stdout" - ], - "additionalProperties": false - }, - { - "type": "null" - } - ] - }, - "git_add": { - "oneOf": [ - { - "type": "object", - "properties": { - "stdout": { - "type": "string" - }, - "stderr": { - "type": "string" - }, - "env": { - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - { - "type": "null" - } - ] - }, - "cwd": { - "type": "string" - }, - "command_list": { - "type": "array", - "items": { - "type": "string" - } - }, - "returncode": { - "type": "integer" - }, - "msg": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "cwd", - "stderr", - "command_list", - "returncode", - "stdout" - ], - "additionalProperties": false - }, - { - "type": "null" - } - ] - }, - "git_config_username": { - "oneOf": [ - { - "type": "object", - "properties": { - "stdout": { - "type": "string" - }, - "stderr": { - "type": "string" - }, - "env": { - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - { - "type": "null" - } - ] - }, - "cwd": { - "type": "string" - }, - "command_list": { - "type": "array", - "items": { - "type": "string" - } - }, - "returncode": { - "type": "integer" - }, - "msg": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "cwd", - "stderr", - "command_list", - "returncode", - "stdout" - ], - "additionalProperties": false - }, - { - "type": "null" - } - ] - }, - "git_config_email": { - "oneOf": [ - { - "type": "object", - "properties": { - "stdout": { - "type": "string" - }, - "stderr": { - "type": "string" - }, - "env": { - "oneOf": [ - { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - { - "type": "null" - } - ] - }, - "cwd": { - "type": "string" - }, - "command_list": { - "type": "array", - "items": { - "type": "string" - } - }, - "returncode": { - "type": "integer" - }, - "msg": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "cwd", - "stderr", - "command_list", - "returncode", - "stdout" - ], - "additionalProperties": false - }, - { - "type": "null" - } - ] - } - }, - "required": [], - "additionalProperties": false - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["opts"], - "additionalProperties": false, - "properties": { - "opts": { - "type": "object", - "properties": { - "dest": { - "type": "string" - }, - "template_name": { - "type": "string" - }, - "src_flake": { - "oneOf": [ - { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - { - "type": "null" - } - ] - }, - "input_prio": { - "oneOf": [ - { - "type": "object", - "properties": { - "input_names": { - "type": "array", - "items": { - "type": "string" - } - }, - "prioritize_self": { - "type": "boolean" - } - }, - "required": ["input_names"], - "additionalProperties": false - }, - { - "type": "null" - } - ] - }, - "setup_git": { - "type": "boolean" - }, - "initial": { - "oneOf": [ - { - "type": "object", - "properties": { - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "deploy": { - "type": "object", - "properties": { - "targetHost": { - "type": "string" - } - }, - "required": [], - "additionalProperties": false - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "machineClass": { - "type": "string", - "enum": ["nixos", "darwin"] - }, - "name": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [], - "additionalProperties": false - } - }, - "meta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - } - }, - "required": ["name"], - "additionalProperties": false - }, - "modules": { - "type": "object", - "additionalProperties": true - }, - "services": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": true - } - }, - "tags": { - "type": "object", - "additionalProperties": true - } - }, - "required": [], - "additionalProperties": false - }, - { - "type": "null" - } - ] - }, - "update_clan": { - "type": "boolean" - } - }, - "required": ["dest", "template_name"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "show_clan_meta": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - } - }, - "required": ["name"], - "additionalProperties": false - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["flake"], - "additionalProperties": false, - "properties": { - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "update_clan_meta": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "object", - "properties": { - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "deploy": { - "type": "object", - "properties": { - "targetHost": { - "type": "string" - } - }, - "required": [], - "additionalProperties": false - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "machineClass": { - "type": "string", - "enum": ["nixos", "darwin"] - }, - "name": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [], - "additionalProperties": false - } - }, - "meta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - } - }, - "required": ["name"], - "additionalProperties": false - }, - "modules": { - "type": "object", - "additionalProperties": true - }, - "services": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": true - } - }, - "tags": { - "type": "object", - "additionalProperties": true - } - }, - "required": [], - "additionalProperties": false - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["options"], - "additionalProperties": false, - "properties": { - "options": { - "type": "object", - "properties": { - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "meta": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - } - }, - "required": ["name"], - "additionalProperties": false - } - }, - "required": ["flake", "meta"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "maybe_get_admin_public_key": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "oneOf": [ - { - "type": "object", - "properties": { - "pubkey": { - "type": "string" - }, - "username": { - "type": "string" - }, - "key_type": { - "type": "string", - "enum": [1, 2] - } - }, - "required": ["key_type", "username", "pubkey"], - "additionalProperties": false - }, - { - "type": "null" - } - ] - } - }, - "required": ["status", "op_key"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": [], - "additionalProperties": false, - "properties": { - "op_key": { - "type": "string" - } - } - } - } - }, - "list_possible_languages": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": [], - "additionalProperties": false, - "properties": { - "op_key": { - "type": "string" - } - } - } - } - }, - "list_possible_keymaps": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": [], - "additionalProperties": false, - "properties": { - "op_key": { - "type": "string" - } - } - } - } - }, - "flash_machine": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "null" - } - }, - "required": ["status", "op_key"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": [ - "machine", - "mode", - "disks", - "system_config", - "dry_run", - "write_efi_boot_entries", - "debug" - ], - "additionalProperties": false, - "properties": { - "machine": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "nix_options": { - "type": "array", - "items": { - "type": "string" - } - }, - "cached_deployment": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "object", - "additionalProperties": true - } - ] - }, - "override_target_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "override_build_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "private_key": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "host_key_check": { - "type": "string", - "enum": [0, 1, 2, 3] - } - }, - "required": ["flake", "name"], - "additionalProperties": false - }, - "mode": { - "type": "string" - }, - "disks": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "device": { - "type": "string" - } - }, - "required": ["device", "name"], - "additionalProperties": false - } - }, - "system_config": { - "type": "object", - "properties": { - "language": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "keymap": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "ssh_keys_path": { - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "null" - } - ] - } - }, - "required": [], - "additionalProperties": false - }, - "dry_run": { - "type": "boolean" - }, - "write_efi_boot_entries": { - "type": "boolean" - }, - "debug": { - "type": "boolean" - }, - "extra_args": { - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "null" - } - ] - }, - "graphical": { - "type": "boolean" - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "create_machine": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "null" - } - }, - "required": ["status", "op_key"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["opts"], - "additionalProperties": false, - "properties": { - "opts": { - "type": "object", - "properties": { - "clan_dir": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "machine": { - "type": "object", - "properties": { - "deploy": { - "type": "object", - "properties": { - "targetHost": { - "type": "string" - } - }, - "required": [], - "additionalProperties": false - }, - "description": { - "type": "string" - }, - "icon": { - "type": "string" - }, - "machineClass": { - "type": "string", - "enum": ["nixos", "darwin"] - }, - "name": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [], - "additionalProperties": false - }, - "target_host": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "input_prio": { - "oneOf": [ - { - "type": "object", - "properties": { - "input_names": { - "type": "array", - "items": { - "type": "string" - } - }, - "prioritize_self": { - "type": "boolean" - } - }, - "required": ["input_names"], - "additionalProperties": false - }, - { - "type": "null" - } - ] - }, - "template_name": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["machine", "clan_dir"], - "additionalProperties": false - }, - "commit": { - "type": "boolean" - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "delete_machine": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "null" - } - }, - "required": ["status", "op_key"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["machine"], - "additionalProperties": false, - "properties": { - "machine": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "nix_options": { - "type": "array", - "items": { - "type": "string" - } - }, - "cached_deployment": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "object", - "additionalProperties": true - } - ] - }, - "override_target_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "override_build_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "private_key": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "host_key_check": { - "type": "string", - "enum": [0, 1, 2, 3] - } - }, - "required": ["flake", "name"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "install_machine": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "null" - } - }, - "required": ["status", "op_key"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["opts"], - "additionalProperties": false, - "properties": { - "opts": { - "type": "object", - "properties": { - "machine": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "nix_options": { - "type": "array", - "items": { - "type": "string" - } - }, - "cached_deployment": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "object", - "additionalProperties": true - } - ] - }, - "override_target_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "override_build_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "private_key": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "host_key_check": { - "type": "string", - "enum": [0, 1, 2, 3] - } - }, - "required": ["flake", "name"], - "additionalProperties": false - }, - "kexec": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "debug": { - "type": "boolean" - }, - "no_reboot": { - "type": "boolean" - }, - "phases": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "build_on": { - "oneOf": [ - { - "type": "string", - "enum": ["auto", "local", "remote"] - }, - { - "type": "null" - } - ] - }, - "nix_options": { - "type": "array", - "items": { - "type": "string" - } - }, - "update_hardware_config": { - "type": "string", - "enum": ["nixos-facter", "nixos-generate-config", "none"] - }, - "password": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "identity_file": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "use_tor": { - "type": "boolean" - } - }, - "required": ["machine"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "deploy_machine": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "null" - } - }, - "required": ["status", "op_key"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["machine"], - "additionalProperties": false, - "properties": { - "machine": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "flake": { - "type": "object", - "properties": { - "identifier": { - "type": "string" - }, - "inputs_from": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hash": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "store_path": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["identifier"], - "additionalProperties": false - }, - "nix_options": { - "type": "array", - "items": { - "type": "string" - } - }, - "cached_deployment": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "object", - "additionalProperties": true - } - ] - }, - "override_target_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "override_build_host": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "private_key": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "host_key_check": { - "type": "string", - "enum": [0, 1, 2, 3] - } - }, - "required": ["flake", "name"], - "additionalProperties": false - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "get_vars": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "secret": { - "type": "boolean" - }, - "deploy": { - "type": "boolean" - }, - "owner": { - "type": "string" - }, - "group": { - "type": "string" - }, - "mode": { - "type": "integer" - }, - "needed_for": { - "type": "string" - } - }, - "required": ["id", "name"], - "additionalProperties": false - } - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["base_dir", "machine_name"], - "additionalProperties": false, - "properties": { - "base_dir": { - "type": "string" - }, - "machine_name": { - "type": "string" - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "get_generators": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "files": { - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "secret": { - "type": "boolean" - }, - "deploy": { - "type": "boolean" - }, - "owner": { - "type": "string" - }, - "group": { - "type": "string" - }, - "mode": { - "type": "integer" - }, - "needed_for": { - "type": "string" - } - }, - "required": ["id", "name"], - "additionalProperties": false - } - }, - "share": { - "type": "boolean" - }, - "prompts": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "prompt_type": { - "type": "string", - "enum": ["line", "hidden", "multiline"] - }, - "persist": { - "type": "boolean" - }, - "previous_value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["prompt_type", "description", "name"], - "additionalProperties": false - } - }, - "dependencies": { - "type": "array", - "items": { - "type": "string" - } - }, - "migrate_fact": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": ["name"], - "additionalProperties": false - } - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["base_dir", "machine_name"], - "additionalProperties": false, - "properties": { - "base_dir": { - "type": "string" - }, - "machine_name": { - "type": "string" - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "set_prompts": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "null" - } - }, - "required": ["status", "op_key"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["base_dir", "machine_name", "updates"], - "additionalProperties": false, - "properties": { - "base_dir": { - "type": "string" - }, - "machine_name": { - "type": "string" - }, - "updates": { - "type": "array", - "items": { - "type": "object", - "properties": { - "generator": { - "type": "string" - }, - "prompt_values": { - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "required": ["generator", "prompt_values"], - "additionalProperties": false - } - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "get_var": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "secret": { - "type": "boolean" - }, - "deploy": { - "type": "boolean" - }, - "owner": { - "type": "string" - }, - "group": { - "type": "string" - }, - "mode": { - "type": "integer" - }, - "needed_for": { - "type": "string" - } - }, - "required": ["id", "name"], - "additionalProperties": false - } - }, - "required": ["status", "op_key", "data"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["base_dir", "machine_name", "var_id"], - "additionalProperties": false, - "properties": { - "base_dir": { - "type": "string" - }, - "machine_name": { - "type": "string" - }, - "var_id": { - "type": "string" - }, - "op_key": { - "type": "string" - } - } - } - } - }, - "keygen": { - "type": "object", - "required": ["arguments", "return"], - "additionalProperties": false, - "properties": { - "return": { - "oneOf": [ - { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["success"], - "description": "The status of the response." - }, - "data": { - "type": "null" - } - }, - "required": ["status", "op_key"], - "additionalProperties": false - }, - { - "$ref": "#/$defs/error" - } - ] - }, - "arguments": { - "type": "object", - "required": ["flake_dir"], - "additionalProperties": false, - "properties": { - "flake_dir": { - "type": "string" - }, - "user": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "force": { - "type": "boolean" - }, - "op_key": { - "type": "string" - } - } - } - } - } - }, - "$defs": { - "error": { - "type": "object", - "properties": { - "op_key": { - "type": "string" - }, - "status": { - "type": "string", - "enum": ["error"] - }, - "errors": { - "type": "array", - "items": { - "type": "object", - "properties": { - "message": { - "type": "string" - }, - "description": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "location": { - "oneOf": [ - { - "type": "array", - "items": { - "type": "string" - } - }, - { - "type": "null" - } - ] - } - }, - "required": ["message"], - "additionalProperties": false - } - } - }, - "required": ["errors", "status", "op_key"], - "additionalProperties": false - } - } -} diff --git a/pkgs/clan-app/ui/app/app/api/API.ts b/pkgs/clan-app/ui/app/app/api/API.ts deleted file mode 100644 index 21366fab8..000000000 --- a/pkgs/clan-app/ui/app/app/api/API.ts +++ /dev/null @@ -1,1455 +0,0 @@ -/* eslint-disable */ -/** - * This file was automatically generated by json-schema-to-typescript. - * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, - * and run json-schema-to-typescript to regenerate this file. - */ - -export interface API { - cancel_task: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data?: null; - } - | Error; - arguments: { - task_id: string; - op_key?: string; - }; - }; - list_tasks: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: string[]; - } - | Error; - arguments: { - op_key?: string; - }; - }; - open_file: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data?: string[] | null; - } - | Error; - arguments: { - file_request: { - mode: "open_file" | "select_folder" | "save" | "open_multiple_files"; - title?: string | null; - filters?: { - title?: string | null; - mime_types?: string[] | null; - patterns?: string[] | null; - suffixes?: string[] | null; - } | null; - initial_file?: string | null; - initial_folder?: string | null; - }; - op_key?: string; - }; - }; - get_directory: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - path: string; - files?: { - path: string; - file_type: "file" | "directory" | "symlink"; - }[]; - }; - } - | Error; - arguments: { - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - op_key?: string; - }; - }; - show_block_devices: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - blockdevices: { - name: string; - id_link: string; - path: string; - rm: string; - size: string; - ro: boolean; - mountpoints: string[]; - type_: "disk"; - }[]; - }; - } - | Error; - arguments: { - op_key?: string; - }; - }; - show_machine_hardware_config: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: "nixos-facter" | "nixos-generate-config" | "none"; - } - | Error; - arguments: { - machine: { - name: string; - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - nix_options?: string[]; - cached_deployment?: null | { - [k: string]: unknown; - }; - override_target_host?: null | string; - override_build_host?: null | string; - private_key?: string | null; - host_key_check?: 0 | 1 | 2 | 3; - }; - op_key?: string; - }; - }; - show_machine_hardware_platform: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data?: string | null; - } - | Error; - arguments: { - machine: { - name: string; - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - nix_options?: string[]; - cached_deployment?: null | { - [k: string]: unknown; - }; - override_target_host?: null | string; - override_build_host?: null | string; - private_key?: string | null; - host_key_check?: 0 | 1 | 2 | 3; - }; - op_key?: string; - }; - }; - generate_machine_hardware_info: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: "nixos-facter" | "nixos-generate-config" | "none"; - } - | Error; - arguments: { - opts: { - machine: { - name: string; - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - nix_options?: string[]; - cached_deployment?: null | { - [k: string]: unknown; - }; - override_target_host?: null | string; - override_build_host?: null | string; - private_key?: string | null; - host_key_check?: 0 | 1 | 2 | 3; - }; - backend: "nixos-facter" | "nixos-generate-config" | "none"; - password?: string | null; - }; - op_key?: string; - }; - }; - list_modules: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - modulesPerSource: { - [k: string]: { - [k: string]: { - manifest: { - name: string; - description: string; - categories: string[]; - features: { - [k: string]: boolean; - }; - }; - roles: { - [k: string]: null; - }; - }; - }; - }; - localModules: { - [k: string]: { - manifest: { - name: string; - description: string; - categories: string[]; - features: { - [k: string]: boolean; - }; - }; - roles: { - [k: string]: null; - }; - }; - }; - }; - } - | Error; - arguments: { - base_path: string; - op_key?: string; - }; - }; - get_disk_schemas: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - [k: string]: { - name: string; - readme: string; - frontmatter: { - description: string; - categories?: string[]; - features?: string[]; - constraints?: { - [k: string]: unknown; - }; - }; - placeholders: { - [k: string]: { - label: string; - options?: string[] | null; - required: boolean; - }; - }; - }; - }; - } - | Error; - arguments: { - machine: { - name: string; - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - nix_options?: string[]; - cached_deployment?: null | { - [k: string]: unknown; - }; - override_target_host?: null | string; - override_build_host?: null | string; - private_key?: string | null; - host_key_check?: 0 | 1 | 2 | 3; - }; - op_key?: string; - }; - }; - set_machine_disk_schema: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data?: null; - } - | Error; - arguments: { - machine: { - name: string; - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - nix_options?: string[]; - cached_deployment?: null | { - [k: string]: unknown; - }; - override_target_host?: null | string; - override_build_host?: null | string; - private_key?: string | null; - host_key_check?: 0 | 1 | 2 | 3; - }; - schema_name: string; - placeholders: { - [k: string]: string; - }; - force?: boolean; - op_key?: string; - }; - }; - show_mdns: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - services: { - [k: string]: { - interface: string; - protocol: string; - name: string; - type_: string; - domain: string; - host?: string | null; - ip?: string | null; - port?: string | null; - txt?: string | null; - }; - }; - }; - } - | Error; - arguments: { - op_key?: string; - }; - }; - load_inventory_json: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - machines?: { - [k: string]: { - deploy?: { - targetHost?: string; - }; - description?: string; - icon?: string; - machineClass?: "nixos" | "darwin"; - name?: string; - tags?: string[]; - }; - }; - meta?: { - name: string; - description?: string; - icon?: string; - }; - modules?: { - [k: string]: unknown; - }; - services?: { - [k: string]: { - [k: string]: unknown; - }; - }; - tags?: { - [k: string]: unknown; - }; - }; - } - | Error; - arguments: { - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - op_key?: string; - }; - }; - patch_inventory_with: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data?: null; - } - | Error; - arguments: { - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - section: string; - content: { - [k: string]: unknown; - }; - op_key?: string; - }; - }; - get_inventory_with_writeable_keys: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - writeables: { - [k: string]: string[]; - }; - data_eval: { - machines?: { - [k: string]: { - deploy?: { - targetHost?: string; - }; - description?: string; - icon?: string; - machineClass?: "nixos" | "darwin"; - name?: string; - tags?: string[]; - }; - }; - meta?: { - name: string; - description?: string; - icon?: string; - }; - modules?: { - [k: string]: unknown; - }; - services?: { - [k: string]: { - [k: string]: unknown; - }; - }; - tags?: { - [k: string]: unknown; - }; - }; - data_disk: { - machines?: { - [k: string]: { - deploy?: { - targetHost?: string; - }; - description?: string; - icon?: string; - machineClass?: "nixos" | "darwin"; - name?: string; - tags?: string[]; - }; - }; - meta?: { - name: string; - description?: string; - icon?: string; - }; - modules?: { - [k: string]: unknown; - }; - services?: { - [k: string]: { - [k: string]: unknown; - }; - }; - tags?: { - [k: string]: unknown; - }; - }; - }; - } - | Error; - arguments: { - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - op_key?: string; - }; - }; - set_inventory: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data?: null; - } - | Error; - arguments: { - inventory: { - machines?: { - [k: string]: { - deploy?: { - targetHost?: string; - }; - description?: string; - icon?: string; - machineClass?: "nixos" | "darwin"; - name?: string; - tags?: string[]; - }; - }; - meta?: { - name: string; - description?: string; - icon?: string; - }; - modules?: { - [k: string]: unknown; - }; - services?: { - [k: string]: { - [k: string]: unknown; - }; - }; - tags?: { - [k: string]: unknown; - }; - }; - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - message: string; - commit?: boolean; - op_key?: string; - }; - }; - get_inventory: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - machines?: { - [k: string]: { - deploy?: { - targetHost?: string; - }; - description?: string; - icon?: string; - machineClass?: "nixos" | "darwin"; - name?: string; - tags?: string[]; - }; - }; - meta?: { - name: string; - description?: string; - icon?: string; - }; - modules?: { - [k: string]: unknown; - }; - services?: { - [k: string]: { - [k: string]: unknown; - }; - }; - tags?: { - [k: string]: unknown; - }; - }; - } - | Error; - arguments: { - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - op_key?: string; - }; - }; - set_machine: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data?: null; - } - | Error; - arguments: { - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - machine_name: string; - machine: { - deploy?: { - targetHost?: string; - }; - description?: string; - icon?: string; - machineClass?: "nixos" | "darwin"; - name?: string; - tags?: string[]; - }; - op_key?: string; - }; - }; - list_machines: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - [k: string]: { - deploy?: { - targetHost?: string; - }; - description?: string; - icon?: string; - machineClass?: "nixos" | "darwin"; - name?: string; - tags?: string[]; - }; - }; - } - | Error; - arguments: { - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - op_key?: string; - }; - }; - get_machine_details: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - machine: { - deploy?: { - targetHost?: string; - }; - description?: string; - icon?: string; - machineClass?: "nixos" | "darwin"; - name?: string; - tags?: string[]; - }; - hw_config?: - | ("nixos-facter" | "nixos-generate-config" | "none") - | null; - disk_schema?: { - schema_name: string; - placeholders: { - [k: string]: string; - }; - } | null; - }; - } - | Error; - arguments: { - machine: { - name: string; - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - nix_options?: string[]; - cached_deployment?: null | { - [k: string]: unknown; - }; - override_target_host?: null | string; - override_build_host?: null | string; - private_key?: string | null; - host_key_check?: 0 | 1 | 2 | 3; - }; - op_key?: string; - }; - }; - check_machine_online: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: "Online" | "Offline"; - } - | Error; - arguments: { - machine: { - name: string; - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - nix_options?: string[]; - cached_deployment?: null | { - [k: string]: unknown; - }; - override_target_host?: null | string; - override_build_host?: null | string; - private_key?: string | null; - host_key_check?: 0 | 1 | 2 | 3; - }; - opts?: { - timeout?: number; - retries?: number; - } | null; - op_key?: string; - }; - }; - get_generators_closure: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - name: string; - files?: { - id: string; - name: string; - secret?: boolean; - deploy?: boolean; - owner?: string; - group?: string; - mode?: number; - needed_for?: string; - }[]; - share?: boolean; - prompts?: { - name: string; - description: string; - prompt_type: "line" | "hidden" | "multiline"; - persist?: boolean; - previous_value?: string | null; - }[]; - dependencies?: string[]; - migrate_fact?: string | null; - }[]; - } - | Error; - arguments: { - machine_name: string; - base_dir: string; - regenerate?: boolean; - include_previous_values?: boolean; - op_key?: string; - }; - }; - generate_vars_for_machine: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: boolean; - } - | Error; - arguments: { - machine_name: string; - generators: string[]; - all_prompt_values: { - [k: string]: { - [k: string]: string; - }; - }; - base_dir: string; - no_sandbox?: boolean; - op_key?: string; - }; - }; - create_clan: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - flake_update?: { - stdout: string; - stderr: string; - env?: { - [k: string]: string; - } | null; - cwd: string; - command_list: string[]; - returncode: number; - msg?: string | null; - } | null; - git_init?: { - stdout: string; - stderr: string; - env?: { - [k: string]: string; - } | null; - cwd: string; - command_list: string[]; - returncode: number; - msg?: string | null; - } | null; - git_add?: { - stdout: string; - stderr: string; - env?: { - [k: string]: string; - } | null; - cwd: string; - command_list: string[]; - returncode: number; - msg?: string | null; - } | null; - git_config_username?: { - stdout: string; - stderr: string; - env?: { - [k: string]: string; - } | null; - cwd: string; - command_list: string[]; - returncode: number; - msg?: string | null; - } | null; - git_config_email?: { - stdout: string; - stderr: string; - env?: { - [k: string]: string; - } | null; - cwd: string; - command_list: string[]; - returncode: number; - msg?: string | null; - } | null; - }; - } - | Error; - arguments: { - opts: { - dest: string; - template_name: string; - src_flake?: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - } | null; - input_prio?: { - input_names: string[]; - prioritize_self?: boolean; - } | null; - setup_git?: boolean; - initial?: { - machines?: { - [k: string]: { - deploy?: { - targetHost?: string; - }; - description?: string; - icon?: string; - machineClass?: "nixos" | "darwin"; - name?: string; - tags?: string[]; - }; - }; - meta?: { - name: string; - description?: string; - icon?: string; - }; - modules?: { - [k: string]: unknown; - }; - services?: { - [k: string]: { - [k: string]: unknown; - }; - }; - tags?: { - [k: string]: unknown; - }; - } | null; - update_clan?: boolean; - }; - op_key?: string; - }; - }; - show_clan_meta: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - name: string; - description?: string; - icon?: string; - }; - } - | Error; - arguments: { - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - op_key?: string; - }; - }; - update_clan_meta: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - machines?: { - [k: string]: { - deploy?: { - targetHost?: string; - }; - description?: string; - icon?: string; - machineClass?: "nixos" | "darwin"; - name?: string; - tags?: string[]; - }; - }; - meta?: { - name: string; - description?: string; - icon?: string; - }; - modules?: { - [k: string]: unknown; - }; - services?: { - [k: string]: { - [k: string]: unknown; - }; - }; - tags?: { - [k: string]: unknown; - }; - }; - } - | Error; - arguments: { - options: { - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - meta: { - name: string; - description?: string; - icon?: string; - }; - }; - op_key?: string; - }; - }; - maybe_get_admin_public_key: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data?: { - pubkey: string; - username: string; - key_type: 1 | 2; - } | null; - } - | Error; - arguments: { - op_key?: string; - }; - }; - list_possible_languages: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: string[]; - } - | Error; - arguments: { - op_key?: string; - }; - }; - list_possible_keymaps: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: string[]; - } - | Error; - arguments: { - op_key?: string; - }; - }; - flash_machine: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data?: null; - } - | Error; - arguments: { - machine: { - name: string; - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - nix_options?: string[]; - cached_deployment?: null | { - [k: string]: unknown; - }; - override_target_host?: null | string; - override_build_host?: null | string; - private_key?: string | null; - host_key_check?: 0 | 1 | 2 | 3; - }; - mode: string; - disks: { - name: string; - device: string; - }[]; - system_config: { - language?: string | null; - keymap?: string | null; - ssh_keys_path?: string[] | null; - }; - dry_run: boolean; - write_efi_boot_entries: boolean; - debug: boolean; - extra_args?: string[] | null; - graphical?: boolean; - op_key?: string; - }; - }; - create_machine: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data?: null; - } - | Error; - arguments: { - opts: { - clan_dir: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - machine: { - deploy?: { - targetHost?: string; - }; - description?: string; - icon?: string; - machineClass?: "nixos" | "darwin"; - name?: string; - tags?: string[]; - }; - target_host?: string | null; - input_prio?: { - input_names: string[]; - prioritize_self?: boolean; - } | null; - template_name?: string | null; - }; - commit?: boolean; - op_key?: string; - }; - }; - delete_machine: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data?: null; - } - | Error; - arguments: { - machine: { - name: string; - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - nix_options?: string[]; - cached_deployment?: null | { - [k: string]: unknown; - }; - override_target_host?: null | string; - override_build_host?: null | string; - private_key?: string | null; - host_key_check?: 0 | 1 | 2 | 3; - }; - op_key?: string; - }; - }; - install_machine: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data?: null; - } - | Error; - arguments: { - opts: { - machine: { - name: string; - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - nix_options?: string[]; - cached_deployment?: null | { - [k: string]: unknown; - }; - override_target_host?: null | string; - override_build_host?: null | string; - private_key?: string | null; - host_key_check?: 0 | 1 | 2 | 3; - }; - kexec?: string | null; - debug?: boolean; - no_reboot?: boolean; - phases?: string | null; - build_on?: ("auto" | "local" | "remote") | null; - nix_options?: string[]; - update_hardware_config?: - | "nixos-facter" - | "nixos-generate-config" - | "none"; - password?: string | null; - identity_file?: string | null; - use_tor?: boolean; - }; - op_key?: string; - }; - }; - deploy_machine: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data?: null; - } - | Error; - arguments: { - machine: { - name: string; - flake: { - identifier: string; - inputs_from?: string | null; - hash?: string | null; - store_path?: string | null; - }; - nix_options?: string[]; - cached_deployment?: null | { - [k: string]: unknown; - }; - override_target_host?: null | string; - override_build_host?: null | string; - private_key?: string | null; - host_key_check?: 0 | 1 | 2 | 3; - }; - op_key?: string; - }; - }; - get_vars: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - id: string; - name: string; - secret?: boolean; - deploy?: boolean; - owner?: string; - group?: string; - mode?: number; - needed_for?: string; - }[]; - } - | Error; - arguments: { - base_dir: string; - machine_name: string; - op_key?: string; - }; - }; - get_generators: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - name: string; - files?: { - id: string; - name: string; - secret?: boolean; - deploy?: boolean; - owner?: string; - group?: string; - mode?: number; - needed_for?: string; - }[]; - share?: boolean; - prompts?: { - name: string; - description: string; - prompt_type: "line" | "hidden" | "multiline"; - persist?: boolean; - previous_value?: string | null; - }[]; - dependencies?: string[]; - migrate_fact?: string | null; - }[]; - } - | Error; - arguments: { - base_dir: string; - machine_name: string; - op_key?: string; - }; - }; - set_prompts: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data?: null; - } - | Error; - arguments: { - base_dir: string; - machine_name: string; - updates: { - generator: string; - prompt_values: { - [k: string]: string; - }; - }[]; - op_key?: string; - }; - }; - get_var: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data: { - id: string; - name: string; - secret?: boolean; - deploy?: boolean; - owner?: string; - group?: string; - mode?: number; - needed_for?: string; - }; - } - | Error; - arguments: { - base_dir: string; - machine_name: string; - var_id: string; - op_key?: string; - }; - }; - keygen: { - return: - | { - op_key: string; - /** - * The status of the response. - */ - status: "success"; - data?: null; - } - | Error; - arguments: { - flake_dir: string; - user?: string | null; - force?: boolean; - op_key?: string; - }; - }; -} -export interface Error { - op_key: string; - status: "error"; - errors: { - message: string; - description?: string | null; - location?: string[] | null; - }[]; -} diff --git a/pkgs/clan-app/ui/app/app/api/Inventory.ts b/pkgs/clan-app/ui/app/app/api/Inventory.ts deleted file mode 100644 index be2ae58ef..000000000 --- a/pkgs/clan-app/ui/app/app/api/Inventory.ts +++ /dev/null @@ -1,5484 +0,0 @@ -/* eslint-disable */ -/** - * This file was automatically generated by json-schema-to-typescript. - * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, - * and run json-schema-to-typescript to regenerate this file. - */ - -export type AdminConfig = AdminConfigRoleDefault; -export type AdminConfig1 = AdminConfigRoleDefault1; -export type AutoUpgradeConfig = AutoUpgradeConfigRoleDefault; -export type AutoUpgradeConfig1 = AutoUpgradeConfigRoleDefault1; -export type BorgbackupConfig = - | BorgbackupConfigRoleClient - | BorgbackupConfigRoleServer; -export type BorgbackupConfig1 = - | BorgbackupConfigRoleClient1 - | BorgbackupConfigRoleServer1; -export type DataMesherConfig = - | DataMesherConfigRoleAdmin - | DataMesherConfigRolePeer - | DataMesherConfigRoleSigner; -export type DataMesherConfig1 = - | DataMesherConfigRoleAdmin1 - | DataMesherConfigRolePeer1 - | DataMesherConfigRoleSigner1; -export type DiskIdConfig = DiskIdConfigRoleDefault; -export type DiskIdConfig1 = DiskIdConfigRoleDefault1; -export type ImporterConfig = ImporterConfigRoleDefault; -export type ImporterConfig1 = ImporterConfigRoleDefault1; -export type IwdConfig = IwdConfigRoleDefault; -export type IwdConfig1 = IwdConfigRoleDefault1; -export type MachineIdConfig = MachineIdConfigRoleDefault; -export type MachineIdConfig1 = MachineIdConfigRoleDefault1; -export type MumbleConfig = MumbleConfigRoleServer; -export type MumbleConfig1 = MumbleConfigRoleServer1; -export type MyceliumConfig = MyceliumConfigRolePeer; -export type MyceliumConfig1 = MyceliumConfigRolePeer1; -export type PackagesConfig = PackagesConfigRoleDefault; -export type PackagesConfig1 = PackagesConfigRoleDefault1; -export type RootPasswordConfig = RootPasswordConfigRoleDefault; -export type RootPasswordConfig1 = RootPasswordConfigRoleDefault1; -export type SingleDiskConfig = SingleDiskConfigRoleDefault; -export type SingleDiskConfig1 = SingleDiskConfigRoleDefault1; -export type SshdConfig = SshdConfigRoleClient | SshdConfigRoleServer; -export type SshdConfig1 = SshdConfigRoleClient1 | SshdConfigRoleServer1; -export type StateVersionConfig = StateVersionConfigRoleDefault; -export type StateVersionConfig1 = StateVersionConfigRoleDefault1; -export type SyncthingConfig = - | SyncthingConfigRoleIntroducer - | SyncthingConfigRolePeer; -export type SyncthingConfig1 = - | SyncthingConfigRoleIntroducer1 - | SyncthingConfigRolePeer1; -export type UserPasswordConfig = UserPasswordConfigRoleDefault; -export type UserPasswordConfig1 = UserPasswordConfigRoleDefault1; -export type WifiConfig = WifiConfigRoleDefault; -export type WifiConfig1 = WifiConfigRoleDefault1; -export type ZerotierConfig = - | ZerotierConfigRoleController - | ZerotierConfigRoleMoon - | ZerotierConfigRolePeer; -export type ZerotierConfig1 = - | ZerotierConfigRoleController1 - | ZerotierConfigRoleMoon1 - | ZerotierConfigRolePeer1; - -export interface Schema { - /** - * Machines in the inventory. - * - * Each machine declared here can be referencd via its `attributeName` by the `inventory.service`s `roles`. - * - */ - machines?: { - [k: string]: { - deploy: { - /** - * Configuration for the deployment of the machine - */ - targetHost?: null | string; - }; - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * The module system that should be used to construct the machine - * - * Set this to `darwin` for macOS machines - * - */ - machineClass?: "nixos" | "darwin"; - /** - * Name of the machine or service - * - */ - name?: string; - /** - * List of tags for the machine. - * - * The machine can be referenced by its tags in `inventory.services` - * - * ???+ Example - * ```nix - * inventory.machines.machineA.tags = [ "tag1" "tag2" ]; - * ``` - * - * ```nix - * services.borgbackup."instance_1".roles.client.tags = [ "tag1" ]; - * ``` - * - * !!! Note - * Tags can be used to determine the membership of the machine in the services. - * Without changing the service configuration, the machine can be added to a service by adding the correct tags to the machine. - * - * - */ - tags?: string[]; - }; - }; - meta: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the clan. - * - * Needs to be (globally) unique, as this determines the folder name where the flake gets downloaded to. - * - * Should only contain alphanumeric characters, `_` and `-`. - * - */ - name: string; - }; - /** - * A mapping of module names to their path. - * - * Each module can be referenced by its `attributeName` in the `inventory.services` attribute set. - * - * !!! Important - * Each module MUST fulfill the following requirements to be usable with the inventory: - * - * - The module MUST have a `README.md` file with a `description`. - * - The module MUST have at least `features = [ "inventory" ]` in the frontmatter section. - * - The module MUST have a subfolder `roles` with at least one `{roleName}.nix` file. - * - * For further information see: [Module Authoring Guide](../../authoring/clanServices/index.md). - * - * ???+ example - * ```nix - * buildClan { - * # 1. Add the module to the available inventory modules - * inventory.modules = { - * custom-module = ./modules/my_module; - * }; - * # 2. Use the module in the inventory - * inventory.services = { - * custom-module.instance_1 = { - * roles.default.machines = [ "machineA" ]; - * }; - * }; - * }; - * ``` - * - */ - modules: { - [k: string]: - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null; - }; - services?: { - admin?: { - [k: string]: { - config?: AdminConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: AdminConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: AdminRoles; - }; - }; - "auto-upgrade"?: { - [k: string]: { - config?: AutoUpgradeConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: AutoUpgradeConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: AutoUpgradeRoles; - }; - }; - borgbackup?: { - [k: string]: { - config?: BorgbackupConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: BorgbackupConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: BorgbackupRoles; - }; - }; - "data-mesher"?: { - [k: string]: { - config?: DataMesherConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: DataMesherConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: DataMesherRoles; - }; - }; - "disk-id"?: { - [k: string]: { - config?: DiskIdConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: DiskIdConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: DiskIdRoles; - }; - }; - importer?: { - [k: string]: { - config?: ImporterConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: ImporterConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: ImporterRoles; - }; - }; - iwd?: { - [k: string]: { - config?: IwdConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: IwdConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: IwdRoles; - }; - }; - "machine-id"?: { - [k: string]: { - config?: MachineIdConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: MachineIdConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: MachineIdRoles; - }; - }; - mumble?: { - [k: string]: { - config?: MumbleConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: MumbleConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: MumbleRoles; - }; - }; - mycelium?: { - [k: string]: { - config?: MyceliumConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: MyceliumConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: MyceliumRoles; - }; - }; - packages?: { - [k: string]: { - config?: PackagesConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: PackagesConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: PackagesRoles; - }; - }; - "root-password"?: { - [k: string]: { - config?: RootPasswordConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: RootPasswordConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: RootPasswordRoles; - }; - }; - "single-disk"?: { - [k: string]: { - config?: SingleDiskConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: SingleDiskConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: SingleDiskRoles; - }; - }; - sshd?: { - [k: string]: { - config?: SshdConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: SshdConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: SshdRoles; - }; - }; - "state-version"?: { - [k: string]: { - config?: StateVersionConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: StateVersionConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: StateVersionRoles; - }; - }; - syncthing?: { - [k: string]: { - config?: SyncthingConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: SyncthingConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: SyncthingRoles; - }; - }; - "user-password"?: { - [k: string]: { - config?: UserPasswordConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: UserPasswordConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: UserPasswordRoles; - }; - }; - wifi?: { - [k: string]: { - config?: WifiConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: WifiConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: WifiRoles; - }; - }; - zerotier?: { - [k: string]: { - config?: ZerotierConfig; - /** - * Enable or disable the complete service. - * - * If the service is disabled, it will not be added to any machine. - * - * !!! Note - * This flag is primarily used to temporarily disable a service. - * I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled. - * - */ - enabled?: boolean; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - machines?: { - [k: string]: { - config?: ZerotierConfig1; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - [k: string]: unknown; - }; - }; - meta?: { - /** - * Optional freeform description - * - */ - description?: null | string; - /** - * Under construction, will be used for the UI - * - */ - icon?: null | string; - /** - * Name of the machine or service - * - */ - name?: string; - }; - roles?: ZerotierRoles; - }; - }; - }; - /** - * Tags of the inventory are used to group machines together. - * - * It is recommended to use [`machine.tags`](#inventory.machines.tags) to define the tags of the machines. - * - * This can be used to define custom tags that are either statically set or dynamically computed. - * - * #### Static Tags - * - * ???+ example "Static Tag Example" - * ```nix - * inventory.tags = { - * foo = [ "machineA" "machineB" ]; - * }; - * ``` - * - * The tag `foo` will always be added to `machineA` and `machineB`. - * - * #### Dynamic Tags - * - * It is possible to compute tags based on the machines properties or based on other tags. - * - * !!! danger - * This is a powerful feature and should be used with caution. - * - * It is possible to cause infinite recursion by computing tags based on the machines properties or based on other tags. - * - * ???+ example "Dynamic Tag Example" - * - * allButFoo is a computed tag. It will be added to all machines except 'foo' - * - * `all` is a predefined tag. See the docs of [`tags.all`](#inventory.tags.all). - * - * ```nix - * # inventory.tags ↓ ↓ inventory.machines - * inventory.tags = {config, machines...}: { - * # ↓↓↓ The "all" tag - * allButFoo = builtins.filter (name: name != "foo") config.all; - * }; - * ``` - * - * !!! warning - * Do NOT compute `tags` from `machine.tags` this will cause infinite recursion. - * - */ - tags?: { - [k: string]: string[]; - }; -} -export interface AdminConfigRoleDefault { - /** - * The allowed public keys for ssh access to the admin user - */ - allowedKeys?: { - [k: string]: string; - }; -} -export interface AdminConfigRoleDefault1 { - /** - * The allowed public keys for ssh access to the admin user - */ - allowedKeys?: { - [k: string]: string; - }; -} -export interface AdminRoles { - default?: { - config?: AdminConfigRoleDefault2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface AdminConfigRoleDefault2 { - /** - * The allowed public keys for ssh access to the admin user - */ - allowedKeys?: { - [k: string]: string; - }; -} -export interface AutoUpgradeConfigRoleDefault { - /** - * Flake reference - */ - flake: string; -} -export interface AutoUpgradeConfigRoleDefault1 { - /** - * Flake reference - */ - flake: string; -} -export interface AutoUpgradeRoles { - default?: { - config?: AutoUpgradeConfigRoleDefault2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface AutoUpgradeConfigRoleDefault2 { - /** - * Flake reference - */ - flake: string; -} -export interface BorgbackupConfigRoleClient { - /** - * destinations where the machine should be backuped to - * - */ - destinations?: { - [k: string]: { - /** - * the name of the backup job - */ - name?: string; - /** - * the borgbackup repository to backup to - */ - repo: string; - /** - * the rsh to use for the backup - */ - rsh: string; - }; - }; - /** - * Directories/Files to exclude from the backup. - * Use * as a wildcard. - * - */ - exclude?: string[]; -} -export interface BorgbackupConfigRoleServer { - /** - * The directory where the borgbackup repositories are stored. - * - */ - directory?: string; -} -export interface BorgbackupConfigRoleClient1 { - /** - * destinations where the machine should be backuped to - * - */ - destinations?: { - [k: string]: { - /** - * the name of the backup job - */ - name?: string; - /** - * the borgbackup repository to backup to - */ - repo: string; - /** - * the rsh to use for the backup - */ - rsh: string; - }; - }; - /** - * Directories/Files to exclude from the backup. - * Use * as a wildcard. - * - */ - exclude?: string[]; -} -export interface BorgbackupConfigRoleServer1 { - /** - * The directory where the borgbackup repositories are stored. - * - */ - directory?: string; -} -export interface BorgbackupRoles { - client?: { - config?: BorgbackupConfigRoleClient2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; - server?: { - config?: BorgbackupConfigRoleServer2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface BorgbackupConfigRoleClient2 { - /** - * destinations where the machine should be backuped to - * - */ - destinations?: { - [k: string]: { - /** - * the name of the backup job - */ - name?: string; - /** - * the borgbackup repository to backup to - */ - repo: string; - /** - * the rsh to use for the backup - */ - rsh: string; - }; - }; - /** - * Directories/Files to exclude from the backup. - * Use * as a wildcard. - * - */ - exclude?: string[]; -} -export interface BorgbackupConfigRoleServer2 { - /** - * The directory where the borgbackup repositories are stored. - * - */ - directory?: string; -} -export interface DataMesherConfigRoleAdmin { - /** - * A list of bootstrap nodes that act as an initial gateway when joining - * the cluster. - * - */ - bootstrapNodes?: null | string[]; - network: { - /** - * The TTL for hosts in the network, in the form of a Go time.Duration - */ - hostTTL?: string; - /** - * The interface over which cluster communication should be performed. - * All the ip addresses associate with this interface will be part of - * our host claim, including both ipv4 and ipv6. - * - * This should be set to an internal/VPN interface. - * - */ - interface: string; - /** - * Port to listen on for cluster communication. - * - */ - port?: number; - /** - * Top level domain to use for the network - */ - tld?: string; - }; -} -export interface DataMesherConfigRolePeer { - /** - * A list of bootstrap nodes that act as an initial gateway when joining - * the cluster. - * - */ - bootstrapNodes?: null | string[]; - network: { - /** - * The interface over which cluster communication should be performed. - * All the ip addresses associate with this interface will be part of - * our host claim, including both ipv4 and ipv6. - * - * This should be set to an internal/VPN interface. - * - */ - interface: string; - /** - * Port to listen on for cluster communication. - * - */ - port?: number; - }; -} -export interface DataMesherConfigRoleSigner { - /** - * A list of bootstrap nodes that act as an initial gateway when joining - * the cluster. - * - */ - bootstrapNodes?: null | string[]; - network: { - /** - * The interface over which cluster communication should be performed. - * All the ip addresses associate with this interface will be part of - * our host claim, including both ipv4 and ipv6. - * - * This should be set to an internal/VPN interface. - * - */ - interface: string; - /** - * Port to listen on for cluster communication. - * - */ - port?: number; - }; -} -export interface DataMesherConfigRoleAdmin1 { - /** - * A list of bootstrap nodes that act as an initial gateway when joining - * the cluster. - * - */ - bootstrapNodes?: null | string[]; - network: { - /** - * The TTL for hosts in the network, in the form of a Go time.Duration - */ - hostTTL?: string; - /** - * The interface over which cluster communication should be performed. - * All the ip addresses associate with this interface will be part of - * our host claim, including both ipv4 and ipv6. - * - * This should be set to an internal/VPN interface. - * - */ - interface: string; - /** - * Port to listen on for cluster communication. - * - */ - port?: number; - /** - * Top level domain to use for the network - */ - tld?: string; - }; -} -export interface DataMesherConfigRolePeer1 { - /** - * A list of bootstrap nodes that act as an initial gateway when joining - * the cluster. - * - */ - bootstrapNodes?: null | string[]; - network: { - /** - * The interface over which cluster communication should be performed. - * All the ip addresses associate with this interface will be part of - * our host claim, including both ipv4 and ipv6. - * - * This should be set to an internal/VPN interface. - * - */ - interface: string; - /** - * Port to listen on for cluster communication. - * - */ - port?: number; - }; -} -export interface DataMesherConfigRoleSigner1 { - /** - * A list of bootstrap nodes that act as an initial gateway when joining - * the cluster. - * - */ - bootstrapNodes?: null | string[]; - network: { - /** - * The interface over which cluster communication should be performed. - * All the ip addresses associate with this interface will be part of - * our host claim, including both ipv4 and ipv6. - * - * This should be set to an internal/VPN interface. - * - */ - interface: string; - /** - * Port to listen on for cluster communication. - * - */ - port?: number; - }; -} -export interface DataMesherRoles { - admin?: { - config?: DataMesherConfigRoleAdmin2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; - peer?: { - config?: DataMesherConfigRolePeer2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; - signer?: { - config?: DataMesherConfigRoleSigner2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface DataMesherConfigRoleAdmin2 { - /** - * A list of bootstrap nodes that act as an initial gateway when joining - * the cluster. - * - */ - bootstrapNodes?: null | string[]; - network: { - /** - * The TTL for hosts in the network, in the form of a Go time.Duration - */ - hostTTL?: string; - /** - * The interface over which cluster communication should be performed. - * All the ip addresses associate with this interface will be part of - * our host claim, including both ipv4 and ipv6. - * - * This should be set to an internal/VPN interface. - * - */ - interface: string; - /** - * Port to listen on for cluster communication. - * - */ - port?: number; - /** - * Top level domain to use for the network - */ - tld?: string; - }; -} -export interface DataMesherConfigRolePeer2 { - /** - * A list of bootstrap nodes that act as an initial gateway when joining - * the cluster. - * - */ - bootstrapNodes?: null | string[]; - network: { - /** - * The interface over which cluster communication should be performed. - * All the ip addresses associate with this interface will be part of - * our host claim, including both ipv4 and ipv6. - * - * This should be set to an internal/VPN interface. - * - */ - interface: string; - /** - * Port to listen on for cluster communication. - * - */ - port?: number; - }; -} -export interface DataMesherConfigRoleSigner2 { - /** - * A list of bootstrap nodes that act as an initial gateway when joining - * the cluster. - * - */ - bootstrapNodes?: null | string[]; - network: { - /** - * The interface over which cluster communication should be performed. - * All the ip addresses associate with this interface will be part of - * our host claim, including both ipv4 and ipv6. - * - * This should be set to an internal/VPN interface. - * - */ - interface: string; - /** - * Port to listen on for cluster communication. - * - */ - port?: number; - }; -} -export interface DiskIdConfigRoleDefault {} -export interface DiskIdConfigRoleDefault1 {} -export interface DiskIdRoles { - default?: { - config?: DiskIdConfigRoleDefault2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface DiskIdConfigRoleDefault2 {} -export interface ImporterConfigRoleDefault {} -export interface ImporterConfigRoleDefault1 {} -export interface ImporterRoles { - default?: { - config?: ImporterConfigRoleDefault2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface ImporterConfigRoleDefault2 {} -export interface IwdConfigRoleDefault { - /** - * Wifi networks to predefine - */ - networks?: { - [k: string]: { - /** - * Automatically try to join this wifi network - */ - AutoConnect?: boolean; - /** - * The name of the wifi network - */ - ssid?: string; - }; - }; -} -export interface IwdConfigRoleDefault1 { - /** - * Wifi networks to predefine - */ - networks?: { - [k: string]: { - /** - * Automatically try to join this wifi network - */ - AutoConnect?: boolean; - /** - * The name of the wifi network - */ - ssid?: string; - }; - }; -} -export interface IwdRoles { - default?: { - config?: IwdConfigRoleDefault2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface IwdConfigRoleDefault2 { - /** - * Wifi networks to predefine - */ - networks?: { - [k: string]: { - /** - * Automatically try to join this wifi network - */ - AutoConnect?: boolean; - /** - * The name of the wifi network - */ - ssid?: string; - }; - }; -} -export interface MachineIdConfigRoleDefault {} -export interface MachineIdConfigRoleDefault1 {} -export interface MachineIdRoles { - default?: { - config?: MachineIdConfigRoleDefault2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface MachineIdConfigRoleDefault2 {} -export interface MumbleConfigRoleServer {} -export interface MumbleConfigRoleServer1 {} -export interface MumbleRoles { - server?: { - config?: MumbleConfigRoleServer2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface MumbleConfigRoleServer2 {} -export interface MyceliumConfigRolePeer { - /** - * Add hosted Public nodes - */ - addHostedPublicNodes?: boolean; - /** - * Open the firewall for mycelium - */ - openFirewall?: boolean; -} -export interface MyceliumConfigRolePeer1 { - /** - * Add hosted Public nodes - */ - addHostedPublicNodes?: boolean; - /** - * Open the firewall for mycelium - */ - openFirewall?: boolean; -} -export interface MyceliumRoles { - peer?: { - config?: MyceliumConfigRolePeer2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface MyceliumConfigRolePeer2 { - /** - * Add hosted Public nodes - */ - addHostedPublicNodes?: boolean; - /** - * Open the firewall for mycelium - */ - openFirewall?: boolean; -} -export interface PackagesConfigRoleDefault { - /** - * The packages to install on the machine - */ - packages: string[]; -} -export interface PackagesConfigRoleDefault1 { - /** - * The packages to install on the machine - */ - packages: string[]; -} -export interface PackagesRoles { - default?: { - config?: PackagesConfigRoleDefault2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface PackagesConfigRoleDefault2 { - /** - * The packages to install on the machine - */ - packages: string[]; -} -export interface RootPasswordConfigRoleDefault {} -export interface RootPasswordConfigRoleDefault1 {} -export interface RootPasswordRoles { - default?: { - config?: RootPasswordConfigRoleDefault2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface RootPasswordConfigRoleDefault2 {} -export interface SingleDiskConfigRoleDefault { - /** - * The primary disk device to install the system on - */ - device?: null | string; -} -export interface SingleDiskConfigRoleDefault1 { - /** - * The primary disk device to install the system on - */ - device?: null | string; -} -export interface SingleDiskRoles { - default?: { - config?: SingleDiskConfigRoleDefault2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface SingleDiskConfigRoleDefault2 { - /** - * The primary disk device to install the system on - */ - device?: null | string; -} -export interface SshdConfigRoleClient { - certificate: { - /** - * List of domains to include in the certificate. This option will prepend the machine name in front of each domain before adding it to the certificate. - */ - searchDomains?: string[]; - }; -} -export interface SshdConfigRoleServer { - certificate: { - /** - * List of domains to include in the certificate. This option will prepend the machine name in front of each domain before adding it to the certificate. - */ - searchDomains?: string[]; - }; - hostKeys: { - rsa: { - /** - * Whether to enable Generate RSA host key. - */ - enable?: boolean; - }; - }; -} -export interface SshdConfigRoleClient1 { - certificate: { - /** - * List of domains to include in the certificate. This option will prepend the machine name in front of each domain before adding it to the certificate. - */ - searchDomains?: string[]; - }; -} -export interface SshdConfigRoleServer1 { - certificate: { - /** - * List of domains to include in the certificate. This option will prepend the machine name in front of each domain before adding it to the certificate. - */ - searchDomains?: string[]; - }; - hostKeys: { - rsa: { - /** - * Whether to enable Generate RSA host key. - */ - enable?: boolean; - }; - }; -} -export interface SshdRoles { - client?: { - config?: SshdConfigRoleClient2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; - server?: { - config?: SshdConfigRoleServer2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface SshdConfigRoleClient2 { - certificate: { - /** - * List of domains to include in the certificate. This option will prepend the machine name in front of each domain before adding it to the certificate. - */ - searchDomains?: string[]; - }; -} -export interface SshdConfigRoleServer2 { - certificate: { - /** - * List of domains to include in the certificate. This option will prepend the machine name in front of each domain before adding it to the certificate. - */ - searchDomains?: string[]; - }; - hostKeys: { - rsa: { - /** - * Whether to enable Generate RSA host key. - */ - enable?: boolean; - }; - }; -} -export interface StateVersionConfigRoleDefault {} -export interface StateVersionConfigRoleDefault1 {} -export interface StateVersionRoles { - default?: { - config?: StateVersionConfigRoleDefault2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface StateVersionConfigRoleDefault2 {} -export interface SyncthingConfigRoleIntroducer { - /** - * Auto accept incoming device requests. - * Should only be used on the introducer. - * - */ - autoAcceptDevices?: boolean; - /** - * Auto share the following Folders by their ID's with introduced devices. - * Should only be used on the introducer. - * - */ - autoShares?: string[]; - /** - * The ID of the machine. - * It is generated automatically by default. - * - */ - id: null | string; - /** - * The introducer for the machine. - * - */ - introducer?: null | string; -} -export interface SyncthingConfigRolePeer { - /** - * Auto accept incoming device requests. - * Should only be used on the introducer. - * - */ - autoAcceptDevices?: boolean; - /** - * Auto share the following Folders by their ID's with introduced devices. - * Should only be used on the introducer. - * - */ - autoShares?: string[]; - /** - * The ID of the machine. - * It is generated automatically by default. - * - */ - id: null | string; - /** - * The introducer for the machine. - * - */ - introducer?: null | string; -} -export interface SyncthingConfigRoleIntroducer1 { - /** - * Auto accept incoming device requests. - * Should only be used on the introducer. - * - */ - autoAcceptDevices?: boolean; - /** - * Auto share the following Folders by their ID's with introduced devices. - * Should only be used on the introducer. - * - */ - autoShares?: string[]; - /** - * The ID of the machine. - * It is generated automatically by default. - * - */ - id: null | string; - /** - * The introducer for the machine. - * - */ - introducer?: null | string; -} -export interface SyncthingConfigRolePeer1 { - /** - * Auto accept incoming device requests. - * Should only be used on the introducer. - * - */ - autoAcceptDevices?: boolean; - /** - * Auto share the following Folders by their ID's with introduced devices. - * Should only be used on the introducer. - * - */ - autoShares?: string[]; - /** - * The ID of the machine. - * It is generated automatically by default. - * - */ - id: null | string; - /** - * The introducer for the machine. - * - */ - introducer?: null | string; -} -export interface SyncthingRoles { - introducer?: { - config?: SyncthingConfigRoleIntroducer2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; - peer?: { - config?: SyncthingConfigRolePeer2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface SyncthingConfigRoleIntroducer2 { - /** - * Auto accept incoming device requests. - * Should only be used on the introducer. - * - */ - autoAcceptDevices?: boolean; - /** - * Auto share the following Folders by their ID's with introduced devices. - * Should only be used on the introducer. - * - */ - autoShares?: string[]; - /** - * The ID of the machine. - * It is generated automatically by default. - * - */ - id: null | string; - /** - * The introducer for the machine. - * - */ - introducer?: null | string; -} -export interface SyncthingConfigRolePeer2 { - /** - * Auto accept incoming device requests. - * Should only be used on the introducer. - * - */ - autoAcceptDevices?: boolean; - /** - * Auto share the following Folders by their ID's with introduced devices. - * Should only be used on the introducer. - * - */ - autoShares?: string[]; - /** - * The ID of the machine. - * It is generated automatically by default. - * - */ - id: null | string; - /** - * The introducer for the machine. - * - */ - introducer?: null | string; -} -export interface UserPasswordConfigRoleDefault { - /** - * Whether the user should be prompted. - */ - prompt?: boolean; - /** - * The user the password should be generated for. - */ - user: string; -} -export interface UserPasswordConfigRoleDefault1 { - /** - * Whether the user should be prompted. - */ - prompt?: boolean; - /** - * The user the password should be generated for. - */ - user: string; -} -export interface UserPasswordRoles { - default?: { - config?: UserPasswordConfigRoleDefault2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface UserPasswordConfigRoleDefault2 { - /** - * Whether the user should be prompted. - */ - prompt?: boolean; - /** - * The user the password should be generated for. - */ - user: string; -} -export interface WifiConfigRoleDefault {} -export interface WifiConfigRoleDefault1 {} -export interface WifiRoles { - default?: { - config?: WifiConfigRoleDefault2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface WifiConfigRoleDefault2 {} -export interface ZerotierConfigRoleController { - /** - * Hosts that should be excluded - */ - excludeHosts: string[]; - /** - * Extra zerotier network Ids that should be accepted - */ - networkIds?: string[]; - /** - * Extra zerotier network Ips that should be accepted - */ - networkIps?: string[]; -} -export interface ZerotierConfigRoleMoon { - /** - * Hosts that should be excluded - */ - excludeHosts: string[]; - moon: { - /** - * Make this machine a moon. - * Other machines can join this moon by adding this moon in their config. - * It will be reachable under the given stable endpoints. - * - */ - stableEndpoints: string[]; - }; - /** - * Extra zerotier network Ids that should be accepted - */ - networkIds?: string[]; - /** - * Extra zerotier network Ips that should be accepted - */ - networkIps?: string[]; -} -export interface ZerotierConfigRolePeer { - /** - * Hosts that should be excluded - */ - excludeHosts: string[]; - /** - * Extra zerotier network Ids that should be accepted - */ - networkIds?: string[]; - /** - * Extra zerotier network Ips that should be accepted - */ - networkIps?: string[]; -} -export interface ZerotierConfigRoleController1 { - /** - * Hosts that should be excluded - */ - excludeHosts: string[]; - /** - * Extra zerotier network Ids that should be accepted - */ - networkIds?: string[]; - /** - * Extra zerotier network Ips that should be accepted - */ - networkIps?: string[]; -} -export interface ZerotierConfigRoleMoon1 { - /** - * Hosts that should be excluded - */ - excludeHosts: string[]; - moon: { - /** - * Make this machine a moon. - * Other machines can join this moon by adding this moon in their config. - * It will be reachable under the given stable endpoints. - * - */ - stableEndpoints: string[]; - }; - /** - * Extra zerotier network Ids that should be accepted - */ - networkIds?: string[]; - /** - * Extra zerotier network Ips that should be accepted - */ - networkIps?: string[]; -} -export interface ZerotierConfigRolePeer1 { - /** - * Hosts that should be excluded - */ - excludeHosts: string[]; - /** - * Extra zerotier network Ids that should be accepted - */ - networkIds?: string[]; - /** - * Extra zerotier network Ips that should be accepted - */ - networkIps?: string[]; -} -export interface ZerotierRoles { - controller?: { - config?: ZerotierConfigRoleController2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; - moon?: { - config?: ZerotierConfigRoleMoon2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; - peer?: { - config?: ZerotierConfigRolePeer2; - /** - * List of additionally imported `.nix` expressions. - * - * Supported types: - * - * - **Strings**: Interpreted relative to the 'directory' passed to buildClan. - * - **Paths**: should be relative to the current file. - * - **Any**: Nix expression must be serializable to JSON. - * - * !!! Note - * **The import only happens if the machine is part of the service or role.** - * - * Other types are passed through to the nixos configuration. - * - * ???+ Example - * To import the `special.nix` file - * - * ``` - * . Clan Directory - * ├── flake.nix - * ... - * └── modules - * ├── special.nix - * └── ... - * ``` - * - * ```nix - * { - * extraModules = [ "modules/special.nix" ]; - * } - * ``` - * - */ - extraModules?: ( - | string - | ( - | boolean - | number - | string - | unknown[] - | { - [k: string]: unknown; - } - | null - ) - )[]; - /** - * List of machines which are part of the role. - * - * The machines are referenced by their `attributeName` in the `inventory.machines` attribute set. - * - * Memberships are declared here to determine which machines are part of the service. - * - * Alternatively, `tags` can be used to determine the membership, more dynamically. - * - */ - machines?: string[]; - /** - * List of tags which are used to determine the membership of the role. - * - * The tags are matched against the `inventory.machines..tags` attribute set. - * If a machine has at least one tag of the role, it is part of the role. - * - */ - tags?: string[]; - }; -} -export interface ZerotierConfigRoleController2 { - /** - * Hosts that should be excluded - */ - excludeHosts: string[]; - /** - * Extra zerotier network Ids that should be accepted - */ - networkIds?: string[]; - /** - * Extra zerotier network Ips that should be accepted - */ - networkIps?: string[]; -} -export interface ZerotierConfigRoleMoon2 { - /** - * Hosts that should be excluded - */ - excludeHosts: string[]; - moon: { - /** - * Make this machine a moon. - * Other machines can join this moon by adding this moon in their config. - * It will be reachable under the given stable endpoints. - * - */ - stableEndpoints: string[]; - }; - /** - * Extra zerotier network Ids that should be accepted - */ - networkIds?: string[]; - /** - * Extra zerotier network Ips that should be accepted - */ - networkIps?: string[]; -} -export interface ZerotierConfigRolePeer2 { - /** - * Hosts that should be excluded - */ - excludeHosts: string[]; - /** - * Extra zerotier network Ids that should be accepted - */ - networkIds?: string[]; - /** - * Extra zerotier network Ips that should be accepted - */ - networkIps?: string[]; -} diff --git a/pkgs/clan-app/ui/app/app/api/modules_schemas.json b/pkgs/clan-app/ui/app/app/api/modules_schemas.json deleted file mode 100644 index 35f770fda..000000000 --- a/pkgs/clan-app/ui/app/app/api/modules_schemas.json +++ /dev/null @@ -1,1064 +0,0 @@ -{ - "admin": { - "default": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "allowedKeys": { - "$exportedModuleInfo": { - "path": ["clan", "admin", "allowedKeys"] - }, - "additionalProperties": { - "$exportedModuleInfo": { - "path": ["clan", "admin", "allowedKeys"] - }, - "type": "string" - }, - "default": {}, - "description": "The allowed public keys for ssh access to the admin user", - "examples": [ - { - "key_1": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD..." - } - ], - "type": "object" - } - }, - "type": "object", - "title": "admin-config-role-default" - } - }, - "auto-upgrade": { - "default": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "flake": { - "$exportedModuleInfo": { - "path": ["clan", "auto-upgrade", "flake"] - }, - "description": "Flake reference", - "type": "string" - } - }, - "required": ["flake"], - "type": "object", - "title": "auto-upgrade-config-role-default" - } - }, - "borgbackup": { - "client": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "destinations": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "destinations"] - }, - "additionalProperties": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "destinations", ""] - }, - "additionalProperties": false, - "properties": { - "name": { - "$exportedModuleInfo": { - "path": [ - "clan", - "borgbackup", - "destinations", - "", - "name" - ] - }, - "default": "\u2039name\u203a", - "description": "the name of the backup job", - "type": "string" - }, - "repo": { - "$exportedModuleInfo": { - "path": [ - "clan", - "borgbackup", - "destinations", - "", - "repo" - ] - }, - "description": "the borgbackup repository to backup to", - "type": "string" - }, - "rsh": { - "$exportedModuleInfo": { - "defaultText": "ssh -i ${config.clan.core.vars.generators.borgbackup.files.\"borgbackup.ssh\".path} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null", - "path": [ - "clan", - "borgbackup", - "destinations", - "", - "rsh" - ] - }, - "description": "the rsh to use for the backup", - "type": "string" - } - }, - "required": ["repo", "rsh"], - "type": "object" - }, - "default": {}, - "description": "destinations where the machine should be backuped to\n", - "type": "object" - }, - "exclude": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "exclude"] - }, - "default": [], - "description": "Directories/Files to exclude from the backup.\nUse * as a wildcard.\n", - "examples": ["*.pyc"], - "items": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "exclude"] - }, - "type": "string" - }, - "type": "array" - } - }, - "type": "object", - "title": "borgbackup-config-role-client" - }, - "server": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "directory": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "directory"] - }, - "default": "/var/lib/borgbackup", - "description": "The directory where the borgbackup repositories are stored.\n", - "type": "string" - } - }, - "type": "object", - "title": "borgbackup-config-role-server" - } - }, - "borgbackup-static": {}, - "data-mesher": { - "admin": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "bootstrapNodes": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "default": null, - "description": "A list of bootstrap nodes that act as an initial gateway when joining\nthe cluster.\n", - "examples": ["192.168.1.1:7946", "192.168.1.2:7946"], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "items": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "type": "string" - }, - "type": "array" - } - ] - }, - "network": { - "$exportedModuleInfo": { - "path": ["network"] - }, - "additionalProperties": false, - "properties": { - "hostTTL": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "network", "hostTTL"] - }, - "default": "672h", - "description": "The TTL for hosts in the network, in the form of a Go time.Duration", - "examples": ["24h"], - "type": "string" - }, - "interface": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "network", "interface"] - }, - "description": "The interface over which cluster communication should be performed.\nAll the ip addresses associate with this interface will be part of\nour host claim, including both ipv4 and ipv6.\n\nThis should be set to an internal/VPN interface.\n", - "examples": ["tailscale0"], - "type": "string" - }, - "port": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "network", "port"] - }, - "default": 7946, - "description": "Port to listen on for cluster communication.\n", - "type": "integer" - }, - "tld": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "network", "tld"] - }, - "default": null, - "description": "Top level domain to use for the network", - "type": "string" - } - }, - "required": ["interface"], - "type": "object" - } - }, - "required": ["network"], - "type": "object", - "title": "data-mesher-config-role-admin" - }, - "peer": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "bootstrapNodes": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "default": null, - "description": "A list of bootstrap nodes that act as an initial gateway when joining\nthe cluster.\n", - "examples": ["192.168.1.1:7946", "192.168.1.2:7946"], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "items": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "type": "string" - }, - "type": "array" - } - ] - }, - "network": { - "$exportedModuleInfo": { - "path": ["network"] - }, - "additionalProperties": false, - "properties": { - "interface": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "network", "interface"] - }, - "description": "The interface over which cluster communication should be performed.\nAll the ip addresses associate with this interface will be part of\nour host claim, including both ipv4 and ipv6.\n\nThis should be set to an internal/VPN interface.\n", - "examples": ["tailscale0"], - "type": "string" - }, - "port": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "network", "port"] - }, - "default": 7946, - "description": "Port to listen on for cluster communication.\n", - "type": "integer" - } - }, - "required": ["interface"], - "type": "object" - } - }, - "required": ["network"], - "type": "object", - "title": "data-mesher-config-role-peer" - }, - "signer": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "bootstrapNodes": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "default": null, - "description": "A list of bootstrap nodes that act as an initial gateway when joining\nthe cluster.\n", - "examples": ["192.168.1.1:7946", "192.168.1.2:7946"], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "items": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "type": "string" - }, - "type": "array" - } - ] - }, - "network": { - "$exportedModuleInfo": { - "path": ["network"] - }, - "additionalProperties": false, - "properties": { - "interface": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "network", "interface"] - }, - "description": "The interface over which cluster communication should be performed.\nAll the ip addresses associate with this interface will be part of\nour host claim, including both ipv4 and ipv6.\n\nThis should be set to an internal/VPN interface.\n", - "examples": ["tailscale0"], - "type": "string" - }, - "port": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "network", "port"] - }, - "default": 7946, - "description": "Port to listen on for cluster communication.\n", - "type": "integer" - } - }, - "required": ["interface"], - "type": "object" - } - }, - "required": ["network"], - "type": "object", - "title": "data-mesher-config-role-signer" - } - }, - "deltachat": {}, - "disk-id": { - "default": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "disk-id-config-role-default" - } - }, - "dyndns": {}, - "ergochat": {}, - "garage": {}, - "golem-provider": {}, - "heisenbridge": {}, - "importer": { - "default": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "importer-config-role-default" - } - }, - "iwd": { - "default": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "networks": { - "$exportedModuleInfo": { - "path": ["clan", "iwd", "networks"] - }, - "additionalProperties": { - "$exportedModuleInfo": { - "path": ["clan", "iwd", "networks", ""] - }, - "additionalProperties": false, - "properties": { - "AutoConnect": { - "$exportedModuleInfo": { - "path": ["clan", "iwd", "networks", "", "AutoConnect"] - }, - "default": true, - "description": "Automatically try to join this wifi network", - "type": "boolean" - }, - "ssid": { - "$exportedModuleInfo": { - "path": ["clan", "iwd", "networks", "", "ssid"] - }, - "default": "\u2039name\u203a", - "description": "The name of the wifi network", - "type": "string" - } - }, - "type": "object" - }, - "default": {}, - "description": "Wifi networks to predefine", - "type": "object" - } - }, - "type": "object", - "title": "iwd-config-role-default" - } - }, - "localbackup": {}, - "localsend": {}, - "machine-id": { - "default": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "machine-id-config-role-default" - } - }, - "matrix-synapse": {}, - "moonlight": {}, - "mumble": { - "server": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "mumble-config-role-server" - } - }, - "mycelium": { - "peer": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "addHostedPublicNodes": { - "$exportedModuleInfo": { - "path": ["clan", "mycelium", "addHostedPublicNodes"] - }, - "default": true, - "description": "Add hosted Public nodes", - "type": "boolean" - }, - "openFirewall": { - "$exportedModuleInfo": { - "path": ["clan", "mycelium", "openFirewall"] - }, - "default": true, - "description": "Open the firewall for mycelium", - "type": "boolean" - } - }, - "type": "object", - "title": "mycelium-config-role-peer" - } - }, - "nginx": {}, - "packages": { - "default": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "packages": { - "$exportedModuleInfo": { - "path": ["clan", "packages", "packages"] - }, - "description": "The packages to install on the machine", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "packages", "packages"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["packages"], - "type": "object", - "title": "packages-config-role-default" - } - }, - "postgresql": {}, - "root-password": { - "default": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "root-password-config-role-default" - } - }, - "single-disk": { - "default": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "device": { - "$exportedModuleInfo": { - "path": ["clan", "single-disk", "device"] - }, - "default": null, - "description": "The primary disk device to install the system on", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "single-disk", "device"] - }, - "type": "string" - } - ] - } - }, - "type": "object", - "title": "single-disk-config-role-default" - } - }, - "sshd": { - "client": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "certificate": { - "$exportedModuleInfo": { - "path": ["certificate"] - }, - "additionalProperties": false, - "properties": { - "searchDomains": { - "$exportedModuleInfo": { - "path": ["clan", "sshd", "certificate", "searchDomains"] - }, - "default": [], - "description": "List of domains to include in the certificate. This option will prepend the machine name in front of each domain before adding it to the certificate.", - "examples": ["mydomain.com"], - "items": { - "$exportedModuleInfo": { - "path": ["clan", "sshd", "certificate", "searchDomains"] - }, - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "required": ["certificate"], - "type": "object", - "title": "sshd-config-role-client" - }, - "server": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "certificate": { - "$exportedModuleInfo": { - "path": ["certificate"] - }, - "additionalProperties": false, - "properties": { - "searchDomains": { - "$exportedModuleInfo": { - "path": ["clan", "sshd", "certificate", "searchDomains"] - }, - "default": [], - "description": "List of domains to include in the certificate. This option will prepend the machine name in front of each domain before adding it to the certificate.", - "examples": ["mydomain.com"], - "items": { - "$exportedModuleInfo": { - "path": ["clan", "sshd", "certificate", "searchDomains"] - }, - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "hostKeys": { - "$exportedModuleInfo": { - "path": ["hostKeys"] - }, - "additionalProperties": false, - "properties": { - "rsa": { - "$exportedModuleInfo": { - "path": ["hostKeys", "rsa"] - }, - "additionalProperties": false, - "properties": { - "enable": { - "$exportedModuleInfo": { - "path": ["clan", "sshd", "hostKeys", "rsa", "enable"] - }, - "default": false, - "description": "Whether to enable Generate RSA host key.", - "examples": [true], - "type": "boolean" - } - }, - "type": "object" - } - }, - "required": ["rsa"], - "type": "object" - } - }, - "required": ["certificate", "hostKeys"], - "type": "object", - "title": "sshd-config-role-server" - } - }, - "state-version": { - "default": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "state-version-config-role-default" - } - }, - "static-hosts": {}, - "sunshine": {}, - "syncthing": { - "introducer": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "autoAcceptDevices": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoAcceptDevices"] - }, - "default": false, - "description": "Auto accept incoming device requests.\nShould only be used on the introducer.\n", - "type": "boolean" - }, - "autoShares": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "default": [], - "description": "Auto share the following Folders by their ID's with introduced devices.\nShould only be used on the introducer.\n", - "examples": ["folder1", "folder2"], - "items": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "type": "string" - }, - "type": "array" - }, - "id": { - "$exportedModuleInfo": { - "defaultText": "config.clan.core.vars.generators.syncthing.files.\"id\".value", - "path": ["clan", "syncthing", "id"] - }, - "description": "The ID of the machine.\nIt is generated automatically by default.\n", - "examples": [ - "BABNJY4-G2ICDLF-QQEG7DD-N3OBNGF-BCCOFK6-MV3K7QJ-2WUZHXS-7DTW4AS" - ], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "id"] - }, - "type": "string" - } - ] - }, - "introducer": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "default": null, - "description": "The introducer for the machine.\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "type": "string" - } - ] - } - }, - "required": ["id"], - "type": "object", - "title": "syncthing-config-role-introducer" - }, - "peer": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "autoAcceptDevices": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoAcceptDevices"] - }, - "default": false, - "description": "Auto accept incoming device requests.\nShould only be used on the introducer.\n", - "type": "boolean" - }, - "autoShares": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "default": [], - "description": "Auto share the following Folders by their ID's with introduced devices.\nShould only be used on the introducer.\n", - "examples": ["folder1", "folder2"], - "items": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "type": "string" - }, - "type": "array" - }, - "id": { - "$exportedModuleInfo": { - "defaultText": "config.clan.core.vars.generators.syncthing.files.\"id\".value", - "path": ["clan", "syncthing", "id"] - }, - "description": "The ID of the machine.\nIt is generated automatically by default.\n", - "examples": [ - "BABNJY4-G2ICDLF-QQEG7DD-N3OBNGF-BCCOFK6-MV3K7QJ-2WUZHXS-7DTW4AS" - ], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "id"] - }, - "type": "string" - } - ] - }, - "introducer": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "default": null, - "description": "The introducer for the machine.\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "type": "string" - } - ] - } - }, - "required": ["id"], - "type": "object", - "title": "syncthing-config-role-peer" - } - }, - "syncthing-static-peers": {}, - "thelounge": {}, - "trusted-nix-caches": {}, - "user-password": { - "default": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "prompt": { - "$exportedModuleInfo": { - "path": ["clan", "user-password", "prompt"] - }, - "default": true, - "description": "Whether the user should be prompted.", - "examples": [false], - "type": "boolean" - }, - "user": { - "$exportedModuleInfo": { - "path": ["clan", "user-password", "user"] - }, - "description": "The user the password should be generated for.", - "examples": ["alice"], - "type": "string" - } - }, - "required": ["user"], - "type": "object", - "title": "user-password-config-role-default" - } - }, - "vaultwarden": {}, - "wifi": { - "default": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "wifi-config-role-default" - } - }, - "xfce": {}, - "zerotier": { - "controller": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "excludeHosts": { - "$exportedModuleInfo": { - "defaultText": { - "_type": "literalExpression", - "text": "[ config.clan.core.settings.machine.name ]" - }, - "path": ["clan", "zerotier", "excludeHosts"] - }, - "description": "Hosts that should be excluded", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "excludeHosts"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIds": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "default": [], - "description": "Extra zerotier network Ids that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIps": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "default": [], - "description": "Extra zerotier network Ips that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["excludeHosts"], - "type": "object", - "title": "zerotier-config-role-controller" - }, - "moon": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "excludeHosts": { - "$exportedModuleInfo": { - "defaultText": { - "_type": "literalExpression", - "text": "[ config.clan.core.settings.machine.name ]" - }, - "path": ["clan", "zerotier", "excludeHosts"] - }, - "description": "Hosts that should be excluded", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "excludeHosts"] - }, - "type": "string" - }, - "type": "array" - }, - "moon": { - "$exportedModuleInfo": { - "path": ["moon"] - }, - "additionalProperties": false, - "properties": { - "stableEndpoints": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "moon", "stableEndpoints"] - }, - "description": "Make this machine a moon.\nOther machines can join this moon by adding this moon in their config.\nIt will be reachable under the given stable endpoints.\n", - "examples": [ - "[ 1.2.3.4\" \"10.0.0.3/9993\" \"2001:abcd:abcd::3/9993\" ]\n" - ], - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "moon", "stableEndpoints"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["stableEndpoints"], - "type": "object" - }, - "networkIds": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "default": [], - "description": "Extra zerotier network Ids that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIps": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "default": [], - "description": "Extra zerotier network Ips that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["excludeHosts", "moon"], - "type": "object", - "title": "zerotier-config-role-moon" - }, - "peer": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "excludeHosts": { - "$exportedModuleInfo": { - "defaultText": { - "_type": "literalExpression", - "text": "[ config.clan.core.settings.machine.name ]" - }, - "path": ["clan", "zerotier", "excludeHosts"] - }, - "description": "Hosts that should be excluded", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "excludeHosts"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIds": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "default": [], - "description": "Extra zerotier network Ids that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIps": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "default": [], - "description": "Extra zerotier network Ips that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["excludeHosts"], - "type": "object", - "title": "zerotier-config-role-peer" - } - }, - "zerotier-static-peers": {}, - "zt-tcp-relay": {} -} diff --git a/pkgs/clan-app/ui/app/app/api/schema.json b/pkgs/clan-app/ui/app/app/api/schema.json deleted file mode 100644 index d178b067c..000000000 --- a/pkgs/clan-app/ui/app/app/api/schema.json +++ /dev/null @@ -1,10439 +0,0 @@ -{ - "$exportedModuleInfo": { - "path": [] - }, - "$schema": "http://json-schema.org/draft-07/schema#", - "additionalProperties": false, - "properties": { - "machines": { - "$exportedModuleInfo": { - "path": ["machines"] - }, - "additionalProperties": { - "$exportedModuleInfo": { - "path": ["machines"] - }, - "additionalProperties": false, - "properties": { - "deploy": { - "$exportedModuleInfo": { - "path": ["machines", "deploy"] - }, - "additionalProperties": false, - "properties": { - "targetHost": { - "$exportedModuleInfo": { - "path": ["machines", "deploy", "targetHost"] - }, - "default": null, - "description": "Configuration for the deployment of the machine", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["machines", "deploy", "targetHost"] - }, - "type": "string" - } - ] - } - }, - "type": "object" - }, - "description": { - "$exportedModuleInfo": { - "path": ["machines", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["machines", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["machines", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["machines", "icon"] - }, - "type": "string" - } - ] - }, - "machineClass": { - "$exportedModuleInfo": { - "path": ["machines", "machineClass"] - }, - "default": "nixos", - "description": "The module system that should be used to construct the machine\n\nSet this to `darwin` for macOS machines\n", - "enum": ["nixos", "darwin"] - }, - "name": { - "$exportedModuleInfo": { - "path": ["machines", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - }, - "tags": { - "$exportedModuleInfo": { - "path": ["machines", "tags"] - }, - "default": [], - "description": "List of tags for the machine.\n\nThe machine can be referenced by its tags in `inventory.services`\n\n???+ Example\n ```nix\n inventory.machines.machineA.tags = [ \"tag1\" \"tag2\" ];\n ```\n\n ```nix\n services.borgbackup.\"instance_1\".roles.client.tags = [ \"tag1\" ];\n ```\n\n!!! Note\n Tags can be used to determine the membership of the machine in the services.\n Without changing the service configuration, the machine can be added to a service by adding the correct tags to the machine.\n\n", - "items": { - "$exportedModuleInfo": { - "path": ["machines", "tags"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["deploy"], - "type": "object" - }, - "default": {}, - "description": "Machines in the inventory.\n\nEach machine declared here can be referencd via its `attributeName` by the `inventory.service`s `roles`.\n", - "type": "object" - }, - "meta": { - "$exportedModuleInfo": { - "path": ["meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["meta", "name"] - }, - "description": "Name of the clan.\n\nNeeds to be (globally) unique, as this determines the folder name where the flake gets downloaded to.\n\nShould only contain alphanumeric characters, `_` and `-`.\n", - "examples": ["my_clan"], - "type": "string" - } - }, - "required": ["name"], - "type": "object" - }, - "modules": { - "$exportedModuleInfo": { - "defaultText": "clanModules of clan-core", - "path": ["modules"] - }, - "additionalProperties": { - "$exportedModuleInfo": { - "path": ["modules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - }, - "description": "A mapping of module names to their path.\n\nEach module can be referenced by its `attributeName` in the `inventory.services` attribute set.\n\n!!! Important\n Each module MUST fulfill the following requirements to be usable with the inventory:\n\n - The module MUST have a `README.md` file with a `description`.\n - The module MUST have at least `features = [ \"inventory\" ]` in the frontmatter section.\n - The module MUST have a subfolder `roles` with at least one `{roleName}.nix` file.\n\n For further information see: [Module Authoring Guide](../../authoring/clanServices/index.md).\n\n???+ example\n ```nix\n buildClan {\n # 1. Add the module to the available inventory modules\n inventory.modules = {\n custom-module = ./modules/my_module;\n };\n # 2. Use the module in the inventory\n inventory.services = {\n custom-module.instance_1 = {\n roles.default.machines = [ \"machineA\" ];\n };\n };\n };\n ```\n", - "type": "object" - }, - "services": { - "type": "object", - "properties": { - "admin": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "admin-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "allowedKeys": { - "$exportedModuleInfo": { - "path": ["clan", "admin", "allowedKeys"] - }, - "additionalProperties": { - "$exportedModuleInfo": { - "path": ["clan", "admin", "allowedKeys"] - }, - "type": "string" - }, - "default": {}, - "description": "The allowed public keys for ssh access to the admin user", - "examples": [ - { - "key_1": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD..." - } - ], - "type": "object" - } - }, - "type": "object", - "title": "admin-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "admin-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "allowedKeys": { - "$exportedModuleInfo": { - "path": ["clan", "admin", "allowedKeys"] - }, - "additionalProperties": { - "$exportedModuleInfo": { - "path": ["clan", "admin", "allowedKeys"] - }, - "type": "string" - }, - "default": {}, - "description": "The allowed public keys for ssh access to the admin user", - "examples": [ - { - "key_1": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD..." - } - ], - "type": "object" - } - }, - "type": "object", - "title": "admin-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "admin-roles", - "type": "object", - "properties": { - "default": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "allowedKeys": { - "$exportedModuleInfo": { - "path": ["clan", "admin", "allowedKeys"] - }, - "additionalProperties": { - "$exportedModuleInfo": { - "path": ["clan", "admin", "allowedKeys"] - }, - "type": "string" - }, - "default": {}, - "description": "The allowed public keys for ssh access to the admin user", - "examples": [ - { - "key_1": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD..." - } - ], - "type": "object" - } - }, - "type": "object", - "title": "admin-config-role-default", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "auto-upgrade": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "auto-upgrade-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "flake": { - "$exportedModuleInfo": { - "path": ["clan", "auto-upgrade", "flake"] - }, - "description": "Flake reference", - "type": "string" - } - }, - "required": ["flake"], - "type": "object", - "title": "auto-upgrade-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "auto-upgrade-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "flake": { - "$exportedModuleInfo": { - "path": ["clan", "auto-upgrade", "flake"] - }, - "description": "Flake reference", - "type": "string" - } - }, - "required": ["flake"], - "type": "object", - "title": "auto-upgrade-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "auto-upgrade-roles", - "type": "object", - "properties": { - "default": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "flake": { - "$exportedModuleInfo": { - "path": ["clan", "auto-upgrade", "flake"] - }, - "description": "Flake reference", - "type": "string" - } - }, - "required": ["flake"], - "type": "object", - "title": "auto-upgrade-config-role-default", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "borgbackup": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "borgbackup-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "destinations": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "destinations"] - }, - "additionalProperties": { - "$exportedModuleInfo": { - "path": [ - "clan", - "borgbackup", - "destinations", - "" - ] - }, - "additionalProperties": false, - "properties": { - "name": { - "$exportedModuleInfo": { - "path": [ - "clan", - "borgbackup", - "destinations", - "", - "name" - ] - }, - "default": "\u2039name\u203a", - "description": "the name of the backup job", - "type": "string" - }, - "repo": { - "$exportedModuleInfo": { - "path": [ - "clan", - "borgbackup", - "destinations", - "", - "repo" - ] - }, - "description": "the borgbackup repository to backup to", - "type": "string" - }, - "rsh": { - "$exportedModuleInfo": { - "defaultText": "ssh -i ${config.clan.core.vars.generators.borgbackup.files.\"borgbackup.ssh\".path} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null", - "path": [ - "clan", - "borgbackup", - "destinations", - "", - "rsh" - ] - }, - "description": "the rsh to use for the backup", - "type": "string" - } - }, - "required": ["repo", "rsh"], - "type": "object" - }, - "default": {}, - "description": "destinations where the machine should be backuped to\n", - "type": "object" - }, - "exclude": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "exclude"] - }, - "default": [], - "description": "Directories/Files to exclude from the backup.\nUse * as a wildcard.\n", - "examples": ["*.pyc"], - "items": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "exclude"] - }, - "type": "string" - }, - "type": "array" - } - }, - "type": "object", - "title": "borgbackup-config-role-client" - }, - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "directory": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "directory"] - }, - "default": "/var/lib/borgbackup", - "description": "The directory where the borgbackup repositories are stored.\n", - "type": "string" - } - }, - "type": "object", - "title": "borgbackup-config-role-server" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "borgbackup-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "destinations": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "destinations"] - }, - "additionalProperties": { - "$exportedModuleInfo": { - "path": [ - "clan", - "borgbackup", - "destinations", - "" - ] - }, - "additionalProperties": false, - "properties": { - "name": { - "$exportedModuleInfo": { - "path": [ - "clan", - "borgbackup", - "destinations", - "", - "name" - ] - }, - "default": "\u2039name\u203a", - "description": "the name of the backup job", - "type": "string" - }, - "repo": { - "$exportedModuleInfo": { - "path": [ - "clan", - "borgbackup", - "destinations", - "", - "repo" - ] - }, - "description": "the borgbackup repository to backup to", - "type": "string" - }, - "rsh": { - "$exportedModuleInfo": { - "defaultText": "ssh -i ${config.clan.core.vars.generators.borgbackup.files.\"borgbackup.ssh\".path} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null", - "path": [ - "clan", - "borgbackup", - "destinations", - "", - "rsh" - ] - }, - "description": "the rsh to use for the backup", - "type": "string" - } - }, - "required": ["repo", "rsh"], - "type": "object" - }, - "default": {}, - "description": "destinations where the machine should be backuped to\n", - "type": "object" - }, - "exclude": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "exclude"] - }, - "default": [], - "description": "Directories/Files to exclude from the backup.\nUse * as a wildcard.\n", - "examples": ["*.pyc"], - "items": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "exclude"] - }, - "type": "string" - }, - "type": "array" - } - }, - "type": "object", - "title": "borgbackup-config-role-client" - }, - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "directory": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "directory"] - }, - "default": "/var/lib/borgbackup", - "description": "The directory where the borgbackup repositories are stored.\n", - "type": "string" - } - }, - "type": "object", - "title": "borgbackup-config-role-server" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "borgbackup-roles", - "type": "object", - "properties": { - "client": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "destinations": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "destinations"] - }, - "additionalProperties": { - "$exportedModuleInfo": { - "path": [ - "clan", - "borgbackup", - "destinations", - "" - ] - }, - "additionalProperties": false, - "properties": { - "name": { - "$exportedModuleInfo": { - "path": [ - "clan", - "borgbackup", - "destinations", - "", - "name" - ] - }, - "default": "\u2039name\u203a", - "description": "the name of the backup job", - "type": "string" - }, - "repo": { - "$exportedModuleInfo": { - "path": [ - "clan", - "borgbackup", - "destinations", - "", - "repo" - ] - }, - "description": "the borgbackup repository to backup to", - "type": "string" - }, - "rsh": { - "$exportedModuleInfo": { - "defaultText": "ssh -i ${config.clan.core.vars.generators.borgbackup.files.\"borgbackup.ssh\".path} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null", - "path": [ - "clan", - "borgbackup", - "destinations", - "", - "rsh" - ] - }, - "description": "the rsh to use for the backup", - "type": "string" - } - }, - "required": ["repo", "rsh"], - "type": "object" - }, - "default": {}, - "description": "destinations where the machine should be backuped to\n", - "type": "object" - }, - "exclude": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "exclude"] - }, - "default": [], - "description": "Directories/Files to exclude from the backup.\nUse * as a wildcard.\n", - "examples": ["*.pyc"], - "items": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "exclude"] - }, - "type": "string" - }, - "type": "array" - } - }, - "type": "object", - "title": "borgbackup-config-role-client", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - }, - "server": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "directory": { - "$exportedModuleInfo": { - "path": ["clan", "borgbackup", "directory"] - }, - "default": "/var/lib/borgbackup", - "description": "The directory where the borgbackup repositories are stored.\n", - "type": "string" - } - }, - "type": "object", - "title": "borgbackup-config-role-server", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "data-mesher": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "data-mesher-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "bootstrapNodes": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "default": null, - "description": "A list of bootstrap nodes that act as an initial gateway when joining\nthe cluster.\n", - "examples": ["192.168.1.1:7946", "192.168.1.2:7946"], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "type": "string" - }, - "type": "array" - } - ] - }, - "network": { - "$exportedModuleInfo": { - "path": ["network"] - }, - "additionalProperties": false, - "properties": { - "hostTTL": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "hostTTL" - ] - }, - "default": "672h", - "description": "The TTL for hosts in the network, in the form of a Go time.Duration", - "examples": ["24h"], - "type": "string" - }, - "interface": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "interface" - ] - }, - "description": "The interface over which cluster communication should be performed.\nAll the ip addresses associate with this interface will be part of\nour host claim, including both ipv4 and ipv6.\n\nThis should be set to an internal/VPN interface.\n", - "examples": ["tailscale0"], - "type": "string" - }, - "port": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "network", "port"] - }, - "default": 7946, - "description": "Port to listen on for cluster communication.\n", - "type": "integer" - }, - "tld": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "network", "tld"] - }, - "default": null, - "description": "Top level domain to use for the network", - "type": "string" - } - }, - "required": ["interface"], - "type": "object" - } - }, - "required": ["network"], - "type": "object", - "title": "data-mesher-config-role-admin" - }, - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "bootstrapNodes": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "default": null, - "description": "A list of bootstrap nodes that act as an initial gateway when joining\nthe cluster.\n", - "examples": ["192.168.1.1:7946", "192.168.1.2:7946"], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "type": "string" - }, - "type": "array" - } - ] - }, - "network": { - "$exportedModuleInfo": { - "path": ["network"] - }, - "additionalProperties": false, - "properties": { - "interface": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "interface" - ] - }, - "description": "The interface over which cluster communication should be performed.\nAll the ip addresses associate with this interface will be part of\nour host claim, including both ipv4 and ipv6.\n\nThis should be set to an internal/VPN interface.\n", - "examples": ["tailscale0"], - "type": "string" - }, - "port": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "network", "port"] - }, - "default": 7946, - "description": "Port to listen on for cluster communication.\n", - "type": "integer" - } - }, - "required": ["interface"], - "type": "object" - } - }, - "required": ["network"], - "type": "object", - "title": "data-mesher-config-role-peer" - }, - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "bootstrapNodes": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "default": null, - "description": "A list of bootstrap nodes that act as an initial gateway when joining\nthe cluster.\n", - "examples": ["192.168.1.1:7946", "192.168.1.2:7946"], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "type": "string" - }, - "type": "array" - } - ] - }, - "network": { - "$exportedModuleInfo": { - "path": ["network"] - }, - "additionalProperties": false, - "properties": { - "interface": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "interface" - ] - }, - "description": "The interface over which cluster communication should be performed.\nAll the ip addresses associate with this interface will be part of\nour host claim, including both ipv4 and ipv6.\n\nThis should be set to an internal/VPN interface.\n", - "examples": ["tailscale0"], - "type": "string" - }, - "port": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "network", "port"] - }, - "default": 7946, - "description": "Port to listen on for cluster communication.\n", - "type": "integer" - } - }, - "required": ["interface"], - "type": "object" - } - }, - "required": ["network"], - "type": "object", - "title": "data-mesher-config-role-signer" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "data-mesher-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "bootstrapNodes": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "default": null, - "description": "A list of bootstrap nodes that act as an initial gateway when joining\nthe cluster.\n", - "examples": [ - "192.168.1.1:7946", - "192.168.1.2:7946" - ], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "type": "string" - }, - "type": "array" - } - ] - }, - "network": { - "$exportedModuleInfo": { - "path": ["network"] - }, - "additionalProperties": false, - "properties": { - "hostTTL": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "hostTTL" - ] - }, - "default": "672h", - "description": "The TTL for hosts in the network, in the form of a Go time.Duration", - "examples": ["24h"], - "type": "string" - }, - "interface": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "interface" - ] - }, - "description": "The interface over which cluster communication should be performed.\nAll the ip addresses associate with this interface will be part of\nour host claim, including both ipv4 and ipv6.\n\nThis should be set to an internal/VPN interface.\n", - "examples": ["tailscale0"], - "type": "string" - }, - "port": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "port" - ] - }, - "default": 7946, - "description": "Port to listen on for cluster communication.\n", - "type": "integer" - }, - "tld": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "tld" - ] - }, - "default": null, - "description": "Top level domain to use for the network", - "type": "string" - } - }, - "required": ["interface"], - "type": "object" - } - }, - "required": ["network"], - "type": "object", - "title": "data-mesher-config-role-admin" - }, - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "bootstrapNodes": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "default": null, - "description": "A list of bootstrap nodes that act as an initial gateway when joining\nthe cluster.\n", - "examples": [ - "192.168.1.1:7946", - "192.168.1.2:7946" - ], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "type": "string" - }, - "type": "array" - } - ] - }, - "network": { - "$exportedModuleInfo": { - "path": ["network"] - }, - "additionalProperties": false, - "properties": { - "interface": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "interface" - ] - }, - "description": "The interface over which cluster communication should be performed.\nAll the ip addresses associate with this interface will be part of\nour host claim, including both ipv4 and ipv6.\n\nThis should be set to an internal/VPN interface.\n", - "examples": ["tailscale0"], - "type": "string" - }, - "port": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "port" - ] - }, - "default": 7946, - "description": "Port to listen on for cluster communication.\n", - "type": "integer" - } - }, - "required": ["interface"], - "type": "object" - } - }, - "required": ["network"], - "type": "object", - "title": "data-mesher-config-role-peer" - }, - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "bootstrapNodes": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "default": null, - "description": "A list of bootstrap nodes that act as an initial gateway when joining\nthe cluster.\n", - "examples": [ - "192.168.1.1:7946", - "192.168.1.2:7946" - ], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "type": "string" - }, - "type": "array" - } - ] - }, - "network": { - "$exportedModuleInfo": { - "path": ["network"] - }, - "additionalProperties": false, - "properties": { - "interface": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "interface" - ] - }, - "description": "The interface over which cluster communication should be performed.\nAll the ip addresses associate with this interface will be part of\nour host claim, including both ipv4 and ipv6.\n\nThis should be set to an internal/VPN interface.\n", - "examples": ["tailscale0"], - "type": "string" - }, - "port": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "port" - ] - }, - "default": 7946, - "description": "Port to listen on for cluster communication.\n", - "type": "integer" - } - }, - "required": ["interface"], - "type": "object" - } - }, - "required": ["network"], - "type": "object", - "title": "data-mesher-config-role-signer" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "data-mesher-roles", - "type": "object", - "properties": { - "admin": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "bootstrapNodes": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "default": null, - "description": "A list of bootstrap nodes that act as an initial gateway when joining\nthe cluster.\n", - "examples": [ - "192.168.1.1:7946", - "192.168.1.2:7946" - ], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "type": "string" - }, - "type": "array" - } - ] - }, - "network": { - "$exportedModuleInfo": { - "path": ["network"] - }, - "additionalProperties": false, - "properties": { - "hostTTL": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "hostTTL" - ] - }, - "default": "672h", - "description": "The TTL for hosts in the network, in the form of a Go time.Duration", - "examples": ["24h"], - "type": "string" - }, - "interface": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "interface" - ] - }, - "description": "The interface over which cluster communication should be performed.\nAll the ip addresses associate with this interface will be part of\nour host claim, including both ipv4 and ipv6.\n\nThis should be set to an internal/VPN interface.\n", - "examples": ["tailscale0"], - "type": "string" - }, - "port": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "port" - ] - }, - "default": 7946, - "description": "Port to listen on for cluster communication.\n", - "type": "integer" - }, - "tld": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "tld" - ] - }, - "default": null, - "description": "Top level domain to use for the network", - "type": "string" - } - }, - "required": ["interface"], - "type": "object" - } - }, - "required": ["network"], - "type": "object", - "title": "data-mesher-config-role-admin", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - }, - "peer": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "bootstrapNodes": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "default": null, - "description": "A list of bootstrap nodes that act as an initial gateway when joining\nthe cluster.\n", - "examples": [ - "192.168.1.1:7946", - "192.168.1.2:7946" - ], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "type": "string" - }, - "type": "array" - } - ] - }, - "network": { - "$exportedModuleInfo": { - "path": ["network"] - }, - "additionalProperties": false, - "properties": { - "interface": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "interface" - ] - }, - "description": "The interface over which cluster communication should be performed.\nAll the ip addresses associate with this interface will be part of\nour host claim, including both ipv4 and ipv6.\n\nThis should be set to an internal/VPN interface.\n", - "examples": ["tailscale0"], - "type": "string" - }, - "port": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "port" - ] - }, - "default": 7946, - "description": "Port to listen on for cluster communication.\n", - "type": "integer" - } - }, - "required": ["interface"], - "type": "object" - } - }, - "required": ["network"], - "type": "object", - "title": "data-mesher-config-role-peer", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - }, - "signer": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "bootstrapNodes": { - "$exportedModuleInfo": { - "path": ["clan", "data-mesher", "bootstrapNodes"] - }, - "default": null, - "description": "A list of bootstrap nodes that act as an initial gateway when joining\nthe cluster.\n", - "examples": [ - "192.168.1.1:7946", - "192.168.1.2:7946" - ], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "bootstrapNodes" - ] - }, - "type": "string" - }, - "type": "array" - } - ] - }, - "network": { - "$exportedModuleInfo": { - "path": ["network"] - }, - "additionalProperties": false, - "properties": { - "interface": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "interface" - ] - }, - "description": "The interface over which cluster communication should be performed.\nAll the ip addresses associate with this interface will be part of\nour host claim, including both ipv4 and ipv6.\n\nThis should be set to an internal/VPN interface.\n", - "examples": ["tailscale0"], - "type": "string" - }, - "port": { - "$exportedModuleInfo": { - "path": [ - "clan", - "data-mesher", - "network", - "port" - ] - }, - "default": 7946, - "description": "Port to listen on for cluster communication.\n", - "type": "integer" - } - }, - "required": ["interface"], - "type": "object" - } - }, - "required": ["network"], - "type": "object", - "title": "data-mesher-config-role-signer", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "disk-id": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "disk-id-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "disk-id-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "disk-id-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "disk-id-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "disk-id-roles", - "type": "object", - "properties": { - "default": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "disk-id-config-role-default", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "importer": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "importer-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "importer-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "importer-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "importer-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "importer-roles", - "type": "object", - "properties": { - "default": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "importer-config-role-default", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "iwd": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "iwd-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "networks": { - "$exportedModuleInfo": { - "path": ["clan", "iwd", "networks"] - }, - "additionalProperties": { - "$exportedModuleInfo": { - "path": ["clan", "iwd", "networks", ""] - }, - "additionalProperties": false, - "properties": { - "AutoConnect": { - "$exportedModuleInfo": { - "path": [ - "clan", - "iwd", - "networks", - "", - "AutoConnect" - ] - }, - "default": true, - "description": "Automatically try to join this wifi network", - "type": "boolean" - }, - "ssid": { - "$exportedModuleInfo": { - "path": [ - "clan", - "iwd", - "networks", - "", - "ssid" - ] - }, - "default": "\u2039name\u203a", - "description": "The name of the wifi network", - "type": "string" - } - }, - "type": "object" - }, - "default": {}, - "description": "Wifi networks to predefine", - "type": "object" - } - }, - "type": "object", - "title": "iwd-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "iwd-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "networks": { - "$exportedModuleInfo": { - "path": ["clan", "iwd", "networks"] - }, - "additionalProperties": { - "$exportedModuleInfo": { - "path": ["clan", "iwd", "networks", ""] - }, - "additionalProperties": false, - "properties": { - "AutoConnect": { - "$exportedModuleInfo": { - "path": [ - "clan", - "iwd", - "networks", - "", - "AutoConnect" - ] - }, - "default": true, - "description": "Automatically try to join this wifi network", - "type": "boolean" - }, - "ssid": { - "$exportedModuleInfo": { - "path": [ - "clan", - "iwd", - "networks", - "", - "ssid" - ] - }, - "default": "\u2039name\u203a", - "description": "The name of the wifi network", - "type": "string" - } - }, - "type": "object" - }, - "default": {}, - "description": "Wifi networks to predefine", - "type": "object" - } - }, - "type": "object", - "title": "iwd-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "iwd-roles", - "type": "object", - "properties": { - "default": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "networks": { - "$exportedModuleInfo": { - "path": ["clan", "iwd", "networks"] - }, - "additionalProperties": { - "$exportedModuleInfo": { - "path": ["clan", "iwd", "networks", ""] - }, - "additionalProperties": false, - "properties": { - "AutoConnect": { - "$exportedModuleInfo": { - "path": [ - "clan", - "iwd", - "networks", - "", - "AutoConnect" - ] - }, - "default": true, - "description": "Automatically try to join this wifi network", - "type": "boolean" - }, - "ssid": { - "$exportedModuleInfo": { - "path": [ - "clan", - "iwd", - "networks", - "", - "ssid" - ] - }, - "default": "\u2039name\u203a", - "description": "The name of the wifi network", - "type": "string" - } - }, - "type": "object" - }, - "default": {}, - "description": "Wifi networks to predefine", - "type": "object" - } - }, - "type": "object", - "title": "iwd-config-role-default", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "machine-id": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "machine-id-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "machine-id-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "machine-id-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "machine-id-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "machine-id-roles", - "type": "object", - "properties": { - "default": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "machine-id-config-role-default", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "mumble": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "mumble-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "mumble-config-role-server" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "mumble-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "mumble-config-role-server" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "mumble-roles", - "type": "object", - "properties": { - "server": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "mumble-config-role-server", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "mycelium": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "mycelium-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "addHostedPublicNodes": { - "$exportedModuleInfo": { - "path": ["clan", "mycelium", "addHostedPublicNodes"] - }, - "default": true, - "description": "Add hosted Public nodes", - "type": "boolean" - }, - "openFirewall": { - "$exportedModuleInfo": { - "path": ["clan", "mycelium", "openFirewall"] - }, - "default": true, - "description": "Open the firewall for mycelium", - "type": "boolean" - } - }, - "type": "object", - "title": "mycelium-config-role-peer" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "mycelium-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "addHostedPublicNodes": { - "$exportedModuleInfo": { - "path": [ - "clan", - "mycelium", - "addHostedPublicNodes" - ] - }, - "default": true, - "description": "Add hosted Public nodes", - "type": "boolean" - }, - "openFirewall": { - "$exportedModuleInfo": { - "path": ["clan", "mycelium", "openFirewall"] - }, - "default": true, - "description": "Open the firewall for mycelium", - "type": "boolean" - } - }, - "type": "object", - "title": "mycelium-config-role-peer" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "mycelium-roles", - "type": "object", - "properties": { - "peer": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "addHostedPublicNodes": { - "$exportedModuleInfo": { - "path": [ - "clan", - "mycelium", - "addHostedPublicNodes" - ] - }, - "default": true, - "description": "Add hosted Public nodes", - "type": "boolean" - }, - "openFirewall": { - "$exportedModuleInfo": { - "path": ["clan", "mycelium", "openFirewall"] - }, - "default": true, - "description": "Open the firewall for mycelium", - "type": "boolean" - } - }, - "type": "object", - "title": "mycelium-config-role-peer", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "packages": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "packages-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "packages": { - "$exportedModuleInfo": { - "path": ["clan", "packages", "packages"] - }, - "description": "The packages to install on the machine", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "packages", "packages"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["packages"], - "type": "object", - "title": "packages-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "packages-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "packages": { - "$exportedModuleInfo": { - "path": ["clan", "packages", "packages"] - }, - "description": "The packages to install on the machine", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "packages", "packages"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["packages"], - "type": "object", - "title": "packages-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "packages-roles", - "type": "object", - "properties": { - "default": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "packages": { - "$exportedModuleInfo": { - "path": ["clan", "packages", "packages"] - }, - "description": "The packages to install on the machine", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "packages", "packages"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["packages"], - "type": "object", - "title": "packages-config-role-default", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "root-password": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "root-password-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "root-password-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "root-password-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "root-password-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "root-password-roles", - "type": "object", - "properties": { - "default": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "root-password-config-role-default", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "single-disk": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "single-disk-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "device": { - "$exportedModuleInfo": { - "path": ["clan", "single-disk", "device"] - }, - "default": null, - "description": "The primary disk device to install the system on", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "single-disk", "device"] - }, - "type": "string" - } - ] - } - }, - "type": "object", - "title": "single-disk-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "single-disk-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "device": { - "$exportedModuleInfo": { - "path": ["clan", "single-disk", "device"] - }, - "default": null, - "description": "The primary disk device to install the system on", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "single-disk", "device"] - }, - "type": "string" - } - ] - } - }, - "type": "object", - "title": "single-disk-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "single-disk-roles", - "type": "object", - "properties": { - "default": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "device": { - "$exportedModuleInfo": { - "path": ["clan", "single-disk", "device"] - }, - "default": null, - "description": "The primary disk device to install the system on", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "single-disk", "device"] - }, - "type": "string" - } - ] - } - }, - "type": "object", - "title": "single-disk-config-role-default", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "sshd": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "sshd-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "certificate": { - "$exportedModuleInfo": { - "path": ["certificate"] - }, - "additionalProperties": false, - "properties": { - "searchDomains": { - "$exportedModuleInfo": { - "path": [ - "clan", - "sshd", - "certificate", - "searchDomains" - ] - }, - "default": [], - "description": "List of domains to include in the certificate. This option will prepend the machine name in front of each domain before adding it to the certificate.", - "examples": ["mydomain.com"], - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "sshd", - "certificate", - "searchDomains" - ] - }, - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "required": ["certificate"], - "type": "object", - "title": "sshd-config-role-client" - }, - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "certificate": { - "$exportedModuleInfo": { - "path": ["certificate"] - }, - "additionalProperties": false, - "properties": { - "searchDomains": { - "$exportedModuleInfo": { - "path": [ - "clan", - "sshd", - "certificate", - "searchDomains" - ] - }, - "default": [], - "description": "List of domains to include in the certificate. This option will prepend the machine name in front of each domain before adding it to the certificate.", - "examples": ["mydomain.com"], - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "sshd", - "certificate", - "searchDomains" - ] - }, - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "hostKeys": { - "$exportedModuleInfo": { - "path": ["hostKeys"] - }, - "additionalProperties": false, - "properties": { - "rsa": { - "$exportedModuleInfo": { - "path": ["hostKeys", "rsa"] - }, - "additionalProperties": false, - "properties": { - "enable": { - "$exportedModuleInfo": { - "path": [ - "clan", - "sshd", - "hostKeys", - "rsa", - "enable" - ] - }, - "default": false, - "description": "Whether to enable Generate RSA host key.", - "examples": [true], - "type": "boolean" - } - }, - "type": "object" - } - }, - "required": ["rsa"], - "type": "object" - } - }, - "required": ["certificate", "hostKeys"], - "type": "object", - "title": "sshd-config-role-server" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "sshd-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "certificate": { - "$exportedModuleInfo": { - "path": ["certificate"] - }, - "additionalProperties": false, - "properties": { - "searchDomains": { - "$exportedModuleInfo": { - "path": [ - "clan", - "sshd", - "certificate", - "searchDomains" - ] - }, - "default": [], - "description": "List of domains to include in the certificate. This option will prepend the machine name in front of each domain before adding it to the certificate.", - "examples": ["mydomain.com"], - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "sshd", - "certificate", - "searchDomains" - ] - }, - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "required": ["certificate"], - "type": "object", - "title": "sshd-config-role-client" - }, - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "certificate": { - "$exportedModuleInfo": { - "path": ["certificate"] - }, - "additionalProperties": false, - "properties": { - "searchDomains": { - "$exportedModuleInfo": { - "path": [ - "clan", - "sshd", - "certificate", - "searchDomains" - ] - }, - "default": [], - "description": "List of domains to include in the certificate. This option will prepend the machine name in front of each domain before adding it to the certificate.", - "examples": ["mydomain.com"], - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "sshd", - "certificate", - "searchDomains" - ] - }, - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "hostKeys": { - "$exportedModuleInfo": { - "path": ["hostKeys"] - }, - "additionalProperties": false, - "properties": { - "rsa": { - "$exportedModuleInfo": { - "path": ["hostKeys", "rsa"] - }, - "additionalProperties": false, - "properties": { - "enable": { - "$exportedModuleInfo": { - "path": [ - "clan", - "sshd", - "hostKeys", - "rsa", - "enable" - ] - }, - "default": false, - "description": "Whether to enable Generate RSA host key.", - "examples": [true], - "type": "boolean" - } - }, - "type": "object" - } - }, - "required": ["rsa"], - "type": "object" - } - }, - "required": ["certificate", "hostKeys"], - "type": "object", - "title": "sshd-config-role-server" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "sshd-roles", - "type": "object", - "properties": { - "client": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "certificate": { - "$exportedModuleInfo": { - "path": ["certificate"] - }, - "additionalProperties": false, - "properties": { - "searchDomains": { - "$exportedModuleInfo": { - "path": [ - "clan", - "sshd", - "certificate", - "searchDomains" - ] - }, - "default": [], - "description": "List of domains to include in the certificate. This option will prepend the machine name in front of each domain before adding it to the certificate.", - "examples": ["mydomain.com"], - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "sshd", - "certificate", - "searchDomains" - ] - }, - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - } - }, - "required": ["certificate"], - "type": "object", - "title": "sshd-config-role-client", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - }, - "server": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "certificate": { - "$exportedModuleInfo": { - "path": ["certificate"] - }, - "additionalProperties": false, - "properties": { - "searchDomains": { - "$exportedModuleInfo": { - "path": [ - "clan", - "sshd", - "certificate", - "searchDomains" - ] - }, - "default": [], - "description": "List of domains to include in the certificate. This option will prepend the machine name in front of each domain before adding it to the certificate.", - "examples": ["mydomain.com"], - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "sshd", - "certificate", - "searchDomains" - ] - }, - "type": "string" - }, - "type": "array" - } - }, - "type": "object" - }, - "hostKeys": { - "$exportedModuleInfo": { - "path": ["hostKeys"] - }, - "additionalProperties": false, - "properties": { - "rsa": { - "$exportedModuleInfo": { - "path": ["hostKeys", "rsa"] - }, - "additionalProperties": false, - "properties": { - "enable": { - "$exportedModuleInfo": { - "path": [ - "clan", - "sshd", - "hostKeys", - "rsa", - "enable" - ] - }, - "default": false, - "description": "Whether to enable Generate RSA host key.", - "examples": [true], - "type": "boolean" - } - }, - "type": "object" - } - }, - "required": ["rsa"], - "type": "object" - } - }, - "required": ["certificate", "hostKeys"], - "type": "object", - "title": "sshd-config-role-server", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "state-version": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "state-version-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "state-version-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "state-version-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "state-version-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "state-version-roles", - "type": "object", - "properties": { - "default": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "state-version-config-role-default", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "syncthing": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "syncthing-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "autoAcceptDevices": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoAcceptDevices"] - }, - "default": false, - "description": "Auto accept incoming device requests.\nShould only be used on the introducer.\n", - "type": "boolean" - }, - "autoShares": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "default": [], - "description": "Auto share the following Folders by their ID's with introduced devices.\nShould only be used on the introducer.\n", - "examples": ["folder1", "folder2"], - "items": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "type": "string" - }, - "type": "array" - }, - "id": { - "$exportedModuleInfo": { - "defaultText": "config.clan.core.vars.generators.syncthing.files.\"id\".value", - "path": ["clan", "syncthing", "id"] - }, - "description": "The ID of the machine.\nIt is generated automatically by default.\n", - "examples": [ - "BABNJY4-G2ICDLF-QQEG7DD-N3OBNGF-BCCOFK6-MV3K7QJ-2WUZHXS-7DTW4AS" - ], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "id"] - }, - "type": "string" - } - ] - }, - "introducer": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "default": null, - "description": "The introducer for the machine.\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "type": "string" - } - ] - } - }, - "required": ["id"], - "type": "object", - "title": "syncthing-config-role-introducer" - }, - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "autoAcceptDevices": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoAcceptDevices"] - }, - "default": false, - "description": "Auto accept incoming device requests.\nShould only be used on the introducer.\n", - "type": "boolean" - }, - "autoShares": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "default": [], - "description": "Auto share the following Folders by their ID's with introduced devices.\nShould only be used on the introducer.\n", - "examples": ["folder1", "folder2"], - "items": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "type": "string" - }, - "type": "array" - }, - "id": { - "$exportedModuleInfo": { - "defaultText": "config.clan.core.vars.generators.syncthing.files.\"id\".value", - "path": ["clan", "syncthing", "id"] - }, - "description": "The ID of the machine.\nIt is generated automatically by default.\n", - "examples": [ - "BABNJY4-G2ICDLF-QQEG7DD-N3OBNGF-BCCOFK6-MV3K7QJ-2WUZHXS-7DTW4AS" - ], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "id"] - }, - "type": "string" - } - ] - }, - "introducer": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "default": null, - "description": "The introducer for the machine.\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "type": "string" - } - ] - } - }, - "required": ["id"], - "type": "object", - "title": "syncthing-config-role-peer" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "syncthing-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "autoAcceptDevices": { - "$exportedModuleInfo": { - "path": [ - "clan", - "syncthing", - "autoAcceptDevices" - ] - }, - "default": false, - "description": "Auto accept incoming device requests.\nShould only be used on the introducer.\n", - "type": "boolean" - }, - "autoShares": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "default": [], - "description": "Auto share the following Folders by their ID's with introduced devices.\nShould only be used on the introducer.\n", - "examples": ["folder1", "folder2"], - "items": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "type": "string" - }, - "type": "array" - }, - "id": { - "$exportedModuleInfo": { - "defaultText": "config.clan.core.vars.generators.syncthing.files.\"id\".value", - "path": ["clan", "syncthing", "id"] - }, - "description": "The ID of the machine.\nIt is generated automatically by default.\n", - "examples": [ - "BABNJY4-G2ICDLF-QQEG7DD-N3OBNGF-BCCOFK6-MV3K7QJ-2WUZHXS-7DTW4AS" - ], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "id"] - }, - "type": "string" - } - ] - }, - "introducer": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "default": null, - "description": "The introducer for the machine.\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "type": "string" - } - ] - } - }, - "required": ["id"], - "type": "object", - "title": "syncthing-config-role-introducer" - }, - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "autoAcceptDevices": { - "$exportedModuleInfo": { - "path": [ - "clan", - "syncthing", - "autoAcceptDevices" - ] - }, - "default": false, - "description": "Auto accept incoming device requests.\nShould only be used on the introducer.\n", - "type": "boolean" - }, - "autoShares": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "default": [], - "description": "Auto share the following Folders by their ID's with introduced devices.\nShould only be used on the introducer.\n", - "examples": ["folder1", "folder2"], - "items": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "type": "string" - }, - "type": "array" - }, - "id": { - "$exportedModuleInfo": { - "defaultText": "config.clan.core.vars.generators.syncthing.files.\"id\".value", - "path": ["clan", "syncthing", "id"] - }, - "description": "The ID of the machine.\nIt is generated automatically by default.\n", - "examples": [ - "BABNJY4-G2ICDLF-QQEG7DD-N3OBNGF-BCCOFK6-MV3K7QJ-2WUZHXS-7DTW4AS" - ], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "id"] - }, - "type": "string" - } - ] - }, - "introducer": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "default": null, - "description": "The introducer for the machine.\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "type": "string" - } - ] - } - }, - "required": ["id"], - "type": "object", - "title": "syncthing-config-role-peer" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "syncthing-roles", - "type": "object", - "properties": { - "introducer": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "autoAcceptDevices": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoAcceptDevices"] - }, - "default": false, - "description": "Auto accept incoming device requests.\nShould only be used on the introducer.\n", - "type": "boolean" - }, - "autoShares": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "default": [], - "description": "Auto share the following Folders by their ID's with introduced devices.\nShould only be used on the introducer.\n", - "examples": ["folder1", "folder2"], - "items": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "type": "string" - }, - "type": "array" - }, - "id": { - "$exportedModuleInfo": { - "defaultText": "config.clan.core.vars.generators.syncthing.files.\"id\".value", - "path": ["clan", "syncthing", "id"] - }, - "description": "The ID of the machine.\nIt is generated automatically by default.\n", - "examples": [ - "BABNJY4-G2ICDLF-QQEG7DD-N3OBNGF-BCCOFK6-MV3K7QJ-2WUZHXS-7DTW4AS" - ], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "id"] - }, - "type": "string" - } - ] - }, - "introducer": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "default": null, - "description": "The introducer for the machine.\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "type": "string" - } - ] - } - }, - "required": ["id"], - "type": "object", - "title": "syncthing-config-role-introducer", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - }, - "peer": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "autoAcceptDevices": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoAcceptDevices"] - }, - "default": false, - "description": "Auto accept incoming device requests.\nShould only be used on the introducer.\n", - "type": "boolean" - }, - "autoShares": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "default": [], - "description": "Auto share the following Folders by their ID's with introduced devices.\nShould only be used on the introducer.\n", - "examples": ["folder1", "folder2"], - "items": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "autoShares"] - }, - "type": "string" - }, - "type": "array" - }, - "id": { - "$exportedModuleInfo": { - "defaultText": "config.clan.core.vars.generators.syncthing.files.\"id\".value", - "path": ["clan", "syncthing", "id"] - }, - "description": "The ID of the machine.\nIt is generated automatically by default.\n", - "examples": [ - "BABNJY4-G2ICDLF-QQEG7DD-N3OBNGF-BCCOFK6-MV3K7QJ-2WUZHXS-7DTW4AS" - ], - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "id"] - }, - "type": "string" - } - ] - }, - "introducer": { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "default": null, - "description": "The introducer for the machine.\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["clan", "syncthing", "introducer"] - }, - "type": "string" - } - ] - } - }, - "required": ["id"], - "type": "object", - "title": "syncthing-config-role-peer", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "user-password": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "user-password-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "prompt": { - "$exportedModuleInfo": { - "path": ["clan", "user-password", "prompt"] - }, - "default": true, - "description": "Whether the user should be prompted.", - "examples": [false], - "type": "boolean" - }, - "user": { - "$exportedModuleInfo": { - "path": ["clan", "user-password", "user"] - }, - "description": "The user the password should be generated for.", - "examples": ["alice"], - "type": "string" - } - }, - "required": ["user"], - "type": "object", - "title": "user-password-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "user-password-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "prompt": { - "$exportedModuleInfo": { - "path": ["clan", "user-password", "prompt"] - }, - "default": true, - "description": "Whether the user should be prompted.", - "examples": [false], - "type": "boolean" - }, - "user": { - "$exportedModuleInfo": { - "path": ["clan", "user-password", "user"] - }, - "description": "The user the password should be generated for.", - "examples": ["alice"], - "type": "string" - } - }, - "required": ["user"], - "type": "object", - "title": "user-password-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "user-password-roles", - "type": "object", - "properties": { - "default": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "prompt": { - "$exportedModuleInfo": { - "path": ["clan", "user-password", "prompt"] - }, - "default": true, - "description": "Whether the user should be prompted.", - "examples": [false], - "type": "boolean" - }, - "user": { - "$exportedModuleInfo": { - "path": ["clan", "user-password", "user"] - }, - "description": "The user the password should be generated for.", - "examples": ["alice"], - "type": "string" - } - }, - "required": ["user"], - "type": "object", - "title": "user-password-config-role-default", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "wifi": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "wifi-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "wifi-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "wifi-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "wifi-config-role-default" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "wifi-roles", - "type": "object", - "properties": { - "default": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": {}, - "type": "object", - "title": "wifi-config-role-default", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - }, - "zerotier": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "title": "zerotier-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "excludeHosts": { - "$exportedModuleInfo": { - "defaultText": { - "_type": "literalExpression", - "text": "[ config.clan.core.settings.machine.name ]" - }, - "path": ["clan", "zerotier", "excludeHosts"] - }, - "description": "Hosts that should be excluded", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "excludeHosts"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIds": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "default": [], - "description": "Extra zerotier network Ids that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIps": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "default": [], - "description": "Extra zerotier network Ips that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["excludeHosts"], - "type": "object", - "title": "zerotier-config-role-controller" - }, - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "excludeHosts": { - "$exportedModuleInfo": { - "defaultText": { - "_type": "literalExpression", - "text": "[ config.clan.core.settings.machine.name ]" - }, - "path": ["clan", "zerotier", "excludeHosts"] - }, - "description": "Hosts that should be excluded", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "excludeHosts"] - }, - "type": "string" - }, - "type": "array" - }, - "moon": { - "$exportedModuleInfo": { - "path": ["moon"] - }, - "additionalProperties": false, - "properties": { - "stableEndpoints": { - "$exportedModuleInfo": { - "path": [ - "clan", - "zerotier", - "moon", - "stableEndpoints" - ] - }, - "description": "Make this machine a moon.\nOther machines can join this moon by adding this moon in their config.\nIt will be reachable under the given stable endpoints.\n", - "examples": [ - "[ 1.2.3.4\" \"10.0.0.3/9993\" \"2001:abcd:abcd::3/9993\" ]\n" - ], - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "zerotier", - "moon", - "stableEndpoints" - ] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["stableEndpoints"], - "type": "object" - }, - "networkIds": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "default": [], - "description": "Extra zerotier network Ids that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIps": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "default": [], - "description": "Extra zerotier network Ips that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["excludeHosts", "moon"], - "type": "object", - "title": "zerotier-config-role-moon" - }, - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "excludeHosts": { - "$exportedModuleInfo": { - "defaultText": { - "_type": "literalExpression", - "text": "[ config.clan.core.settings.machine.name ]" - }, - "path": ["clan", "zerotier", "excludeHosts"] - }, - "description": "Hosts that should be excluded", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "excludeHosts"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIds": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "default": [], - "description": "Extra zerotier network Ids that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIps": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "default": [], - "description": "Extra zerotier network Ips that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["excludeHosts"], - "type": "object", - "title": "zerotier-config-role-peer" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "enabled": { - "$exportedModuleInfo": { - "path": ["services", "", "enabled"] - }, - "default": true, - "description": "Enable or disable the complete service.\n\nIf the service is disabled, it will not be added to any machine.\n\n!!! Note\n This flag is primarily used to temporarily disable a service.\n I.e. A 'backup service' without any 'server' might be incomplete and would cause failure if enabled.\n", - "type": "boolean" - }, - "extraModules": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "extraModules"] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "config": { - "title": "zerotier-config", - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "excludeHosts": { - "$exportedModuleInfo": { - "defaultText": { - "_type": "literalExpression", - "text": "[ config.clan.core.settings.machine.name ]" - }, - "path": ["clan", "zerotier", "excludeHosts"] - }, - "description": "Hosts that should be excluded", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "excludeHosts"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIds": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "default": [], - "description": "Extra zerotier network Ids that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIps": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "default": [], - "description": "Extra zerotier network Ips that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["excludeHosts"], - "type": "object", - "title": "zerotier-config-role-controller" - }, - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "excludeHosts": { - "$exportedModuleInfo": { - "defaultText": { - "_type": "literalExpression", - "text": "[ config.clan.core.settings.machine.name ]" - }, - "path": ["clan", "zerotier", "excludeHosts"] - }, - "description": "Hosts that should be excluded", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "excludeHosts"] - }, - "type": "string" - }, - "type": "array" - }, - "moon": { - "$exportedModuleInfo": { - "path": ["moon"] - }, - "additionalProperties": false, - "properties": { - "stableEndpoints": { - "$exportedModuleInfo": { - "path": [ - "clan", - "zerotier", - "moon", - "stableEndpoints" - ] - }, - "description": "Make this machine a moon.\nOther machines can join this moon by adding this moon in their config.\nIt will be reachable under the given stable endpoints.\n", - "examples": [ - "[ 1.2.3.4\" \"10.0.0.3/9993\" \"2001:abcd:abcd::3/9993\" ]\n" - ], - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "zerotier", - "moon", - "stableEndpoints" - ] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["stableEndpoints"], - "type": "object" - }, - "networkIds": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "default": [], - "description": "Extra zerotier network Ids that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIps": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "default": [], - "description": "Extra zerotier network Ips that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["excludeHosts", "moon"], - "type": "object", - "title": "zerotier-config-role-moon" - }, - { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "excludeHosts": { - "$exportedModuleInfo": { - "defaultText": { - "_type": "literalExpression", - "text": "[ config.clan.core.settings.machine.name ]" - }, - "path": ["clan", "zerotier", "excludeHosts"] - }, - "description": "Hosts that should be excluded", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "excludeHosts"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIds": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "default": [], - "description": "Extra zerotier network Ids that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIps": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "default": [], - "description": "Extra zerotier network Ips that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["excludeHosts"], - "type": "object", - "title": "zerotier-config-role-peer" - } - ], - "type": "object", - "default": {}, - "additionalProperties": false - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "machines", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - } - } - } - }, - "meta": { - "$exportedModuleInfo": { - "path": ["services", "", "meta"] - }, - "additionalProperties": false, - "properties": { - "description": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "default": null, - "description": "Optional freeform description\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "description"] - }, - "type": "string" - } - ] - }, - "icon": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "default": null, - "description": "Under construction, will be used for the UI\n", - "oneOf": [ - { - "type": "null" - }, - { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "icon"] - }, - "type": "string" - } - ] - }, - "name": { - "$exportedModuleInfo": { - "path": ["services", "", "meta", "name"] - }, - "default": "\u2039name\u203a", - "description": "Name of the machine or service\n", - "type": "string" - } - }, - "type": "object" - }, - "roles": { - "title": "zerotier-roles", - "type": "object", - "properties": { - "controller": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "excludeHosts": { - "$exportedModuleInfo": { - "defaultText": { - "_type": "literalExpression", - "text": "[ config.clan.core.settings.machine.name ]" - }, - "path": ["clan", "zerotier", "excludeHosts"] - }, - "description": "Hosts that should be excluded", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "excludeHosts"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIds": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "default": [], - "description": "Extra zerotier network Ids that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIps": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "default": [], - "description": "Extra zerotier network Ips that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["excludeHosts"], - "type": "object", - "title": "zerotier-config-role-controller", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - }, - "moon": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "excludeHosts": { - "$exportedModuleInfo": { - "defaultText": { - "_type": "literalExpression", - "text": "[ config.clan.core.settings.machine.name ]" - }, - "path": ["clan", "zerotier", "excludeHosts"] - }, - "description": "Hosts that should be excluded", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "excludeHosts"] - }, - "type": "string" - }, - "type": "array" - }, - "moon": { - "$exportedModuleInfo": { - "path": ["moon"] - }, - "additionalProperties": false, - "properties": { - "stableEndpoints": { - "$exportedModuleInfo": { - "path": [ - "clan", - "zerotier", - "moon", - "stableEndpoints" - ] - }, - "description": "Make this machine a moon.\nOther machines can join this moon by adding this moon in their config.\nIt will be reachable under the given stable endpoints.\n", - "examples": [ - "[ 1.2.3.4\" \"10.0.0.3/9993\" \"2001:abcd:abcd::3/9993\" ]\n" - ], - "items": { - "$exportedModuleInfo": { - "path": [ - "clan", - "zerotier", - "moon", - "stableEndpoints" - ] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["stableEndpoints"], - "type": "object" - }, - "networkIds": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "default": [], - "description": "Extra zerotier network Ids that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIps": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "default": [], - "description": "Extra zerotier network Ips that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["excludeHosts", "moon"], - "type": "object", - "title": "zerotier-config-role-moon", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - }, - "peer": { - "type": "object", - "additionalProperties": false, - "properties": { - "config": { - "$exportedModuleInfo": { - "path": [] - }, - "additionalProperties": false, - "properties": { - "excludeHosts": { - "$exportedModuleInfo": { - "defaultText": { - "_type": "literalExpression", - "text": "[ config.clan.core.settings.machine.name ]" - }, - "path": ["clan", "zerotier", "excludeHosts"] - }, - "description": "Hosts that should be excluded", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "excludeHosts"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIds": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "default": [], - "description": "Extra zerotier network Ids that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIds"] - }, - "type": "string" - }, - "type": "array" - }, - "networkIps": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "default": [], - "description": "Extra zerotier network Ips that should be accepted", - "items": { - "$exportedModuleInfo": { - "path": ["clan", "zerotier", "networkIps"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["excludeHosts"], - "type": "object", - "title": "zerotier-config-role-peer", - "default": {} - }, - "extraModules": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "default": [], - "description": "List of additionally imported `.nix` expressions.\n\nSupported types:\n\n- **Strings**: Interpreted relative to the 'directory' passed to buildClan.\n- **Paths**: should be relative to the current file.\n- **Any**: Nix expression must be serializable to JSON.\n\n!!! Note\n **The import only happens if the machine is part of the service or role.**\n\nOther types are passed through to the nixos configuration.\n\n???+ Example\n To import the `special.nix` file\n\n ```\n . Clan Directory\n \u251c\u2500\u2500 flake.nix\n ...\n \u2514\u2500\u2500 modules\n \u251c\u2500\u2500 special.nix\n \u2514\u2500\u2500 ...\n ```\n\n ```nix\n {\n extraModules = [ \"modules/special.nix\" ];\n }\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "oneOf": [ - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": "string" - }, - { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "extraModules" - ] - }, - "type": [ - "boolean", - "integer", - "number", - "string", - "array", - "object", - "null" - ] - } - ] - }, - "type": "array" - }, - "machines": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "default": [], - "description": "List of machines which are part of the role.\n\nThe machines are referenced by their `attributeName` in the `inventory.machines` attribute set.\n\nMemberships are declared here to determine which machines are part of the service.\n\nAlternatively, `tags` can be used to determine the membership, more dynamically.\n", - "examples": ["machineA"], - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "machines" - ] - }, - "type": "string" - }, - "type": "array" - }, - "tags": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "default": [], - "description": "List of tags which are used to determine the membership of the role.\n\nThe tags are matched against the `inventory.machines..tags` attribute set.\nIf a machine has at least one tag of the role, it is part of the role.\n", - "items": { - "$exportedModuleInfo": { - "path": [ - "services", - "", - "roles", - "", - "tags" - ] - }, - "type": "string" - }, - "type": "array" - } - } - } - }, - "additionalProperties": false - } - } - } - } - }, - "additionalProperties": false - }, - "tags": { - "$exportedModuleInfo": { - "path": ["tags"] - }, - "additionalProperties": { - "$exportedModuleInfo": { - "path": ["tags"] - }, - "items": { - "$exportedModuleInfo": { - "path": ["tags"] - }, - "type": "string" - }, - "type": "array" - }, - "default": {}, - "description": "Tags of the inventory are used to group machines together.\n\nIt is recommended to use [`machine.tags`](#inventory.machines.tags) to define the tags of the machines.\n\nThis can be used to define custom tags that are either statically set or dynamically computed.\n\n#### Static Tags\n\n???+ example \"Static Tag Example\"\n ```nix\n inventory.tags = {\n foo = [ \"machineA\" \"machineB\" ];\n };\n ```\n\n The tag `foo` will always be added to `machineA` and `machineB`.\n\n#### Dynamic Tags\n\nIt is possible to compute tags based on the machines properties or based on other tags.\n\n!!! danger\n This is a powerful feature and should be used with caution.\n\n It is possible to cause infinite recursion by computing tags based on the machines properties or based on other tags.\n\n???+ example \"Dynamic Tag Example\"\n\n allButFoo is a computed tag. It will be added to all machines except 'foo'\n\n `all` is a predefined tag. See the docs of [`tags.all`](#inventory.tags.all).\n\n ```nix\n # inventory.tags \u2193 \u2193 inventory.machines\n inventory.tags = {config, machines...}: {\n # \u2193\u2193\u2193 The \"all\" tag\n allButFoo = builtins.filter (name: name != \"foo\") config.all;\n };\n ```\n\n!!! warning\n Do NOT compute `tags` from `machine.tags` this will cause infinite recursion.\n", - "properties": { - "all": { - "$exportedModuleInfo": { - "defaultText": "[ ]", - "path": ["tags", "all"] - }, - "description": "!!! example \"Predefined Tag\"\n\n Will be added to all machines\n\n ```nix\n inventory.machines.machineA.tags = [ \"all\" ];\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["tags", "all"] - }, - "type": "string" - }, - "type": "array" - }, - "darwin": { - "$exportedModuleInfo": { - "defaultText": "[ ]", - "path": ["tags", "darwin"] - }, - "description": "!!! example \"Predefined Tag\"\n\n Will be added to all machines that set `machineClass = \"darwin\"`\n\n ```nix\n inventory.machines.machineA.tags = [ \"darwin\" ];\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["tags", "darwin"] - }, - "type": "string" - }, - "type": "array" - }, - "nixos": { - "$exportedModuleInfo": { - "defaultText": "[ ]", - "path": ["tags", "nixos"] - }, - "description": "!!! example \"Predefined Tag\"\n\n Will be added to all machines that set `machineClass = \"nixos\"`\n\n ```nix\n inventory.machines.machineA.tags = [ \"nixos\" ];\n ```\n", - "items": { - "$exportedModuleInfo": { - "path": ["tags", "nixos"] - }, - "type": "string" - }, - "type": "array" - } - }, - "required": ["all", "darwin", "nixos"], - "type": "object" - } - }, - "required": ["meta", "modules"], - "type": "object" -}