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, ... }:
|
||||
{
|
||||
_module.args._ctx = [ name ];
|
||||
_module.args.exports' = config.exports;
|
||||
_module.args.exports = config.exports;
|
||||
_module.args.directory = directory;
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
config,
|
||||
_ctx,
|
||||
directory,
|
||||
exports,
|
||||
...
|
||||
}:
|
||||
let
|
||||
@@ -464,7 +465,7 @@ in
|
||||
roles = applySettings instanceName config.instances.${instanceName};
|
||||
in
|
||||
{
|
||||
inherit instanceName roles;
|
||||
inherit instanceName roles exports;
|
||||
machine = {
|
||||
name = machineName;
|
||||
roles = lib.attrNames (lib.filterAttrs (_n: v: v.machines ? ${machineName}) roles);
|
||||
@@ -608,6 +609,7 @@ in
|
||||
in
|
||||
uniqueStrings (collectRoles machineScope.instances);
|
||||
};
|
||||
inherit exports;
|
||||
inherit (machineScope) instances;
|
||||
|
||||
# There are no machine settings.
|
||||
@@ -633,14 +635,23 @@ in
|
||||
exports = mkOption {
|
||||
description = ''
|
||||
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
|
||||
{ exports', ... }: {
|
||||
{ exports, ... }: {
|
||||
_class = "clan.service";
|
||||
|
||||
# ...
|
||||
roles.peer.perInstance = { exports, ...}: { ...};
|
||||
|
||||
# ...
|
||||
perMachine = { exports, ...}: { ...};
|
||||
}
|
||||
```
|
||||
'';
|
||||
|
||||
@@ -24,7 +24,7 @@ let
|
||||
machines.sara = { };
|
||||
# A module that adds exports perMachine
|
||||
modules.A =
|
||||
{ exports', ... }:
|
||||
{ exports, ... }:
|
||||
{
|
||||
manifest.name = "A";
|
||||
roles.peer.perInstance =
|
||||
@@ -32,10 +32,10 @@ let
|
||||
{
|
||||
# Cross reference a perMachine exports
|
||||
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
|
||||
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 = { };
|
||||
perMachine =
|
||||
|
||||
Reference in New Issue
Block a user