75 lines
1.7 KiB
Nix
75 lines
1.7 KiB
Nix
{
|
|
settingsOption ? null,
|
|
nestedSettingsOption ? null,
|
|
}:
|
|
{ lib, clanLib, ... }:
|
|
let
|
|
inherit (lib)
|
|
types
|
|
;
|
|
in
|
|
{
|
|
options = {
|
|
# TODO: deduplicate
|
|
machines = lib.mkOption {
|
|
type = types.attrsOf (
|
|
types.submodule {
|
|
options.settings =
|
|
if nestedSettingsOption != null then
|
|
nestedSettingsOption
|
|
else
|
|
lib.mkOption {
|
|
default = { };
|
|
type = clanLib.types.uniqueDeferredSerializableModule;
|
|
};
|
|
}
|
|
);
|
|
default = { };
|
|
};
|
|
tags = lib.mkOption {
|
|
type = types.coercedTo (types.listOf types.str) (t: lib.genAttrs t (_: { })) (
|
|
types.attrsOf (types.submodule { })
|
|
);
|
|
default = { };
|
|
};
|
|
settings =
|
|
if settingsOption != null then
|
|
settingsOption
|
|
else
|
|
lib.mkOption {
|
|
default = { };
|
|
type = clanLib.types.uniqueDeferredSerializableModule;
|
|
};
|
|
extraModules = lib.mkOption {
|
|
description = ''
|
|
List of additionally imported `.nix` expressions.
|
|
|
|
!!! Note
|
|
**The import only happens if the machine is part of the service or role.**
|
|
|
|
Other types are passed through to the nixos configuration.
|
|
|
|
???+ Example
|
|
To import the `special.nix` file
|
|
|
|
```
|
|
. Clan Directory
|
|
├── flake.nix
|
|
...
|
|
└── modules
|
|
├── special.nix
|
|
└── ...
|
|
```
|
|
|
|
```nix
|
|
{
|
|
extraModules = [ "modules/special.nix" ];
|
|
}
|
|
```
|
|
'';
|
|
default = [ ];
|
|
type = types.listOf types.raw;
|
|
};
|
|
};
|
|
}
|