6224 lines
171 KiB
TypeScript
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[];
|
|
}
|