Merge pull request 'exports: rename special args' (#4765) from exports-1 into main
Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/4765
This commit is contained in:
@@ -32,7 +32,7 @@ in
|
|||||||
{ name, ... }:
|
{ name, ... }:
|
||||||
{
|
{
|
||||||
_module.args._ctx = [ name ];
|
_module.args._ctx = [ name ];
|
||||||
_module.args.exports' = config.exports;
|
_module.args.exports = config.exports;
|
||||||
_module.args.directory = directory;
|
_module.args.directory = directory;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
config,
|
config,
|
||||||
_ctx,
|
_ctx,
|
||||||
directory,
|
directory,
|
||||||
|
exports,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@@ -464,7 +465,7 @@ in
|
|||||||
roles = applySettings instanceName config.instances.${instanceName};
|
roles = applySettings instanceName config.instances.${instanceName};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
inherit instanceName roles;
|
inherit instanceName roles exports;
|
||||||
machine = {
|
machine = {
|
||||||
name = machineName;
|
name = machineName;
|
||||||
roles = lib.attrNames (lib.filterAttrs (_n: v: v.machines ? ${machineName}) roles);
|
roles = lib.attrNames (lib.filterAttrs (_n: v: v.machines ? ${machineName}) roles);
|
||||||
@@ -608,6 +609,7 @@ in
|
|||||||
in
|
in
|
||||||
uniqueStrings (collectRoles machineScope.instances);
|
uniqueStrings (collectRoles machineScope.instances);
|
||||||
};
|
};
|
||||||
|
inherit exports;
|
||||||
inherit (machineScope) instances;
|
inherit (machineScope) instances;
|
||||||
|
|
||||||
# There are no machine settings.
|
# There are no machine settings.
|
||||||
@@ -633,14 +635,23 @@ in
|
|||||||
exports = mkOption {
|
exports = mkOption {
|
||||||
description = ''
|
description = ''
|
||||||
This services exports.
|
This services exports.
|
||||||
Gets merged with all other services exports
|
Gets merged with all other services exports.
|
||||||
|
|
||||||
Final value (merged and evaluated with other services) available as `exports'` in the arguments of this module.
|
Exports are used to share and expose information between instances.
|
||||||
|
|
||||||
|
Define exports in the [`perInstance`](#perInstance) or [`perMachine`](#perMachine) scope.
|
||||||
|
|
||||||
|
Accessing the exports:
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
{ exports', ... }: {
|
{ exports, ... }: {
|
||||||
_class = "clan.service";
|
_class = "clan.service";
|
||||||
|
|
||||||
# ...
|
# ...
|
||||||
|
roles.peer.perInstance = { exports, ...}: { ...};
|
||||||
|
|
||||||
|
# ...
|
||||||
|
perMachine = { exports, ...}: { ...};
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ let
|
|||||||
machines.sara = { };
|
machines.sara = { };
|
||||||
# A module that adds exports perMachine
|
# A module that adds exports perMachine
|
||||||
modules.A =
|
modules.A =
|
||||||
{ exports', ... }:
|
{ exports, ... }:
|
||||||
{
|
{
|
||||||
manifest.name = "A";
|
manifest.name = "A";
|
||||||
roles.peer.perInstance =
|
roles.peer.perInstance =
|
||||||
@@ -32,10 +32,10 @@ let
|
|||||||
{
|
{
|
||||||
# Cross reference a perMachine exports
|
# Cross reference a perMachine exports
|
||||||
exports.vars.generators."${machine.name}-network-ip".script =
|
exports.vars.generators."${machine.name}-network-ip".script =
|
||||||
"A:" + exports'.machines.${machine.name}.vars.generators.key.script;
|
"A:" + exports.machines.${machine.name}.vars.generators.key.script;
|
||||||
# Cross reference a perInstance exports from a different service
|
# Cross reference a perInstance exports from a different service
|
||||||
exports.vars.generators."${machine.name}-full-hostname".script =
|
exports.vars.generators."${machine.name}-full-hostname".script =
|
||||||
"A:" + exports'.instances."B-1".vars.generators.hostname.script;
|
"A:" + exports.instances."B-1".vars.generators.hostname.script;
|
||||||
};
|
};
|
||||||
roles.server = { };
|
roles.server = { };
|
||||||
perMachine =
|
perMachine =
|
||||||
|
|||||||
Reference in New Issue
Block a user