Files
clan-core/pkgs/clan-app/ui/api/Inventory.ts

6224 lines
171 KiB
TypeScript

/* 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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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.<machineName>.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[];
}