Merge pull request 'modules-1' (#5598) from modules-1 into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/5598
This commit is contained in:
@@ -27,14 +27,16 @@ in
|
|||||||
placeholder = "mappedServiceName";
|
placeholder = "mappedServiceName";
|
||||||
elemType = submoduleWith {
|
elemType = submoduleWith {
|
||||||
class = "clan.service";
|
class = "clan.service";
|
||||||
|
specialArgs = {
|
||||||
|
exports = config.exports;
|
||||||
|
directory = directory;
|
||||||
|
clanLib = specialArgs.clanLib;
|
||||||
|
};
|
||||||
modules = [
|
modules = [
|
||||||
(
|
(
|
||||||
{ name, ... }:
|
{ name, ... }:
|
||||||
{
|
{
|
||||||
_module.args._ctx = [ name ];
|
_module.args._ctx = [ name ];
|
||||||
_module.args.exports = config.exports;
|
|
||||||
_module.args.directory = directory;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
./service-module.nix
|
./service-module.nix
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ in
|
|||||||
extraModules = import ./extraModules.nix { inherit clanLib; };
|
extraModules = import ./extraModules.nix { inherit clanLib; };
|
||||||
exports = import ./exports.nix { inherit lib clanLib; };
|
exports = import ./exports.nix { inherit lib clanLib; };
|
||||||
settings = import ./settings.nix { inherit lib callInventoryAdapter; };
|
settings = import ./settings.nix { inherit lib callInventoryAdapter; };
|
||||||
|
specialArgs = import ./specialArgs.nix { inherit lib callInventoryAdapter; };
|
||||||
resolve_module_spec = import ./import_module_spec.nix { inherit lib callInventoryAdapter; };
|
resolve_module_spec = import ./import_module_spec.nix { inherit lib callInventoryAdapter; };
|
||||||
test_simple =
|
test_simple =
|
||||||
let
|
let
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
{ callInventoryAdapter, lib, ... }:
|
||||||
|
let
|
||||||
|
res = callInventoryAdapter {
|
||||||
|
modules."A" = m: {
|
||||||
|
_class = "clan.service";
|
||||||
|
config = {
|
||||||
|
manifest = {
|
||||||
|
name = "network";
|
||||||
|
};
|
||||||
|
roles.default = { };
|
||||||
|
|
||||||
|
};
|
||||||
|
options.test = lib.mkOption {
|
||||||
|
default = m;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
machines = {
|
||||||
|
jon = { };
|
||||||
|
};
|
||||||
|
instances."instance_foo" = {
|
||||||
|
module = {
|
||||||
|
name = "A";
|
||||||
|
input = "self";
|
||||||
|
};
|
||||||
|
roles.peer.machines.jon = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
specialArgs = lib.attrNames res.servicesEval.config.mappedServices.self-A.test.specialArgs;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
test_simple = {
|
||||||
|
expr = specialArgs;
|
||||||
|
expected = [
|
||||||
|
"clanLib"
|
||||||
|
"directory"
|
||||||
|
"exports"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -38,7 +38,34 @@
|
|||||||
(pkgs.nixosOptionsDoc {
|
(pkgs.nixosOptionsDoc {
|
||||||
options =
|
options =
|
||||||
(self.clanLib.evalService {
|
(self.clanLib.evalService {
|
||||||
modules = [ { _docs_rendering = true; } ];
|
modules = [
|
||||||
|
{ _docs_rendering = true; }
|
||||||
|
{
|
||||||
|
options."#specialArgs" = lib.mkOption {
|
||||||
|
description = ''
|
||||||
|
Adidtional arguments passed to the module. Often referred to as `specialArgs`.
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
# root directory of the clan
|
||||||
|
directory,
|
||||||
|
# clanLib - The clan library functions
|
||||||
|
clanLib,
|
||||||
|
# exports from all services
|
||||||
|
exports,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
_class = "clan.service";
|
||||||
|
manifest.name = "example-service";
|
||||||
|
|
||||||
|
# ... elided
|
||||||
|
}
|
||||||
|
```
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
prefix = [ ];
|
prefix = [ ];
|
||||||
}).options;
|
}).options;
|
||||||
warningsAreErrors = true;
|
warningsAreErrors = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user