/* 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 DeltachatConfig = DeltachatConfigRoleDefault; export type DeltachatConfig1 = DeltachatConfigRoleDefault1; export type DiskIdConfig = DiskIdConfigRoleDefault; export type DiskIdConfig1 = DiskIdConfigRoleDefault1; export type ErgochatConfig = ErgochatConfigRoleDefault; export type ErgochatConfig1 = ErgochatConfigRoleDefault1; export type GarageConfig = GarageConfigRoleDefault; export type GarageConfig1 = GarageConfigRoleDefault1; export type HeisenbridgeConfig = HeisenbridgeConfigRoleDefault; export type HeisenbridgeConfig1 = HeisenbridgeConfigRoleDefault1; export type ImporterConfig = ImporterConfigRoleDefault; export type ImporterConfig1 = ImporterConfigRoleDefault1; export type IwdConfig = IwdConfigRoleDefault; export type IwdConfig1 = IwdConfigRoleDefault1; export type LocalsendConfig = LocalsendConfigRoleDefault; export type LocalsendConfig1 = LocalsendConfigRoleDefault1; 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 ZerotierConfig = | ZerotierConfigRoleController | ZerotierConfigRoleMoon | ZerotierConfigRolePeer; export type ZerotierConfig1 = | ZerotierConfigRoleController1 | ZerotierConfigRoleMoon1 | ZerotierConfigRolePeer1; export interface Schema { /** * Multi host service module instances */ instances?: { [k: string]: { module?: { /** * Name of the input. Default to 'null' which means the module is local * */ input?: null | string; /** * Attribute of the clan service module imported from the chosen input. * * Defaults to the name of the instance. * */ name?: string; }; roles?: { [k: string]: { /** * List of additionally imported `.nix` expressions. * * Supported types: * * - **Strings**: Interpreted relative to the 'directory' passed to `lib.clan`. * - **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 | { [k: string]: | boolean | number | string | unknown[] | { [k: string]: unknown; } | null; } )[]; machines?: { [k: string]: { settings?: unknown; }; }; settings?: unknown; tags?: { [k: string]: {}; }; }; }; }; }; /** * Machines in the inventory. * * Each machine declared here can be referencd via its `attributeName` by the `inventory.service`s `roles`. * */ machines?: { [k: string]: { deploy: { /** * SSH address of the host to build the machine on */ buildHost?: null | string; /** * SSH address of the host to deploy the machine to */ 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](../../guides/services/community.md). * * ???+ example * ```nix * clan-core.lib.clan { * # 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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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; }; }; deltachat?: { [k: string]: { config?: DeltachatConfig; /** * 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 `lib.clan`. * - **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?: DeltachatConfig1; /** * List of additionally imported `.nix` expressions. * * Supported types: * * - **Strings**: Interpreted relative to the 'directory' passed to `lib.clan`. * - **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?: DeltachatRoles; }; }; "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 `lib.clan`. * - **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 `lib.clan`. * - **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; }; }; ergochat?: { [k: string]: { config?: ErgochatConfig; /** * 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 `lib.clan`. * - **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?: ErgochatConfig1; /** * List of additionally imported `.nix` expressions. * * Supported types: * * - **Strings**: Interpreted relative to the 'directory' passed to `lib.clan`. * - **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?: ErgochatRoles; }; }; garage?: { [k: string]: { config?: GarageConfig; /** * 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 `lib.clan`. * - **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?: GarageConfig1; /** * List of additionally imported `.nix` expressions. * * Supported types: * * - **Strings**: Interpreted relative to the 'directory' passed to `lib.clan`. * - **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?: GarageRoles; }; }; heisenbridge?: { [k: string]: { config?: HeisenbridgeConfig; /** * 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 `lib.clan`. * - **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?: HeisenbridgeConfig1; /** * List of additionally imported `.nix` expressions. * * Supported types: * * - **Strings**: Interpreted relative to the 'directory' passed to `lib.clan`. * - **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?: HeisenbridgeRoles; }; }; 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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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; }; }; localsend?: { [k: string]: { config?: LocalsendConfig; /** * 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 `lib.clan`. * - **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?: LocalsendConfig1; /** * List of additionally imported `.nix` expressions. * * Supported types: * * - **Strings**: Interpreted relative to the 'directory' passed to `lib.clan`. * - **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?: LocalsendRoles; }; }; 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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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; }; }; 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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 DeltachatConfigRoleDefault {} export interface DeltachatConfigRoleDefault1 {} export interface DeltachatRoles { default?: { config?: DeltachatConfigRoleDefault2; /** * List of additionally imported `.nix` expressions. * * Supported types: * * - **Strings**: Interpreted relative to the 'directory' passed to `lib.clan`. * - **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 DeltachatConfigRoleDefault2 {} 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 `lib.clan`. * - **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 ErgochatConfigRoleDefault {} export interface ErgochatConfigRoleDefault1 {} export interface ErgochatRoles { default?: { config?: ErgochatConfigRoleDefault2; /** * List of additionally imported `.nix` expressions. * * Supported types: * * - **Strings**: Interpreted relative to the 'directory' passed to `lib.clan`. * - **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 ErgochatConfigRoleDefault2 {} export interface GarageConfigRoleDefault {} export interface GarageConfigRoleDefault1 {} export interface GarageRoles { default?: { config?: GarageConfigRoleDefault2; /** * List of additionally imported `.nix` expressions. * * Supported types: * * - **Strings**: Interpreted relative to the 'directory' passed to `lib.clan`. * - **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 GarageConfigRoleDefault2 {} export interface HeisenbridgeConfigRoleDefault {} export interface HeisenbridgeConfigRoleDefault1 {} export interface HeisenbridgeRoles { default?: { config?: HeisenbridgeConfigRoleDefault2; /** * List of additionally imported `.nix` expressions. * * Supported types: * * - **Strings**: Interpreted relative to the 'directory' passed to `lib.clan`. * - **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 HeisenbridgeConfigRoleDefault2 {} 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 `lib.clan`. * - **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 `lib.clan`. * - **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 LocalsendConfigRoleDefault { /** * The name that localsend will use to display your instance. */ displayName?: null | string; /** * Optional IPv4 address for ZeroTier network. */ ipv4Addr?: null | string; } export interface LocalsendConfigRoleDefault1 { /** * The name that localsend will use to display your instance. */ displayName?: null | string; /** * Optional IPv4 address for ZeroTier network. */ ipv4Addr?: null | string; } export interface LocalsendRoles { default?: { config?: LocalsendConfigRoleDefault2; /** * List of additionally imported `.nix` expressions. * * Supported types: * * - **Strings**: Interpreted relative to the 'directory' passed to `lib.clan`. * - **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 LocalsendConfigRoleDefault2 { /** * The name that localsend will use to display your instance. */ displayName?: null | string; /** * Optional IPv4 address for ZeroTier network. */ ipv4Addr?: null | string; } 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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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 * If disabled, will autogenerate the password without prompting. * */ prompt?: boolean; /** * The user the password should be generated for. */ user: string; } export interface UserPasswordConfigRoleDefault1 { /** * Whether the user should be prompted * If disabled, will autogenerate the password without prompting. * */ 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 `lib.clan`. * - **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 * If disabled, will autogenerate the password without prompting. * */ prompt?: boolean; /** * The user the password should be generated for. */ user: string; } 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 `lib.clan`. * - **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 `lib.clan`. * - **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 `lib.clan`. * - **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[]; }