api/machines: allow importing extra modules

- add top-level option `clanImports` to clanCore
- clanImports can be set and checked as any other option
- buildClan resolves the clanImports from the settings.json before calling evalModules to prevent infinite recursions
- new endpoint PUT machines/{name}/schema to allow getting the schema for a specific list of imports
- to retrieve the currently imported modules, cimply do a GET or PU on machines/{name}/config which will return `clanImports` as part of the config

Still missing: get list of available modules
This commit is contained in:
DavHau
2023-10-25 16:36:01 +01:00
parent 1d45d493ef
commit bf176ad277
11 changed files with 234 additions and 81 deletions

View File

@@ -0,0 +1,16 @@
{ lib
, ...
}: {
/*
Declaring imports inside the module system does not trigger an infinite
recursion in this case because buildClan generates the imports from the
settings.json file before calling out to evalModules.
*/
options.clanImports = lib.mkOption {
type = lib.types.listOf lib.types.str;
description = ''
A list of imported module names imported from clan-core.clanModules.<name>
The buildClan function will automatically import these modules for the current machine.
'';
};
}