diff --git a/lib/modules/inventory/distributed-service/all-services-wrapper.nix b/lib/modules/inventory/distributed-service/all-services-wrapper.nix index 3fd9acdf2..eda9940ab 100644 --- a/lib/modules/inventory/distributed-service/all-services-wrapper.nix +++ b/lib/modules/inventory/distributed-service/all-services-wrapper.nix @@ -32,7 +32,7 @@ in { name, ... }: { _module.args._ctx = [ name ]; - _module.args.exports' = config.exports; + _module.args.exports = config.exports; _module.args.directory = directory; } diff --git a/lib/modules/inventory/distributed-service/service-module.nix b/lib/modules/inventory/distributed-service/service-module.nix index 537c552ef..250bc3971 100644 --- a/lib/modules/inventory/distributed-service/service-module.nix +++ b/lib/modules/inventory/distributed-service/service-module.nix @@ -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, ...}: { ...}; } ``` ''; diff --git a/lib/modules/inventory/distributed-service/tests/exports.nix b/lib/modules/inventory/distributed-service/tests/exports.nix index bc9c6cb54..f42c104cf 100644 --- a/lib/modules/inventory/distributed-service/tests/exports.nix +++ b/lib/modules/inventory/distributed-service/tests/exports.nix @@ -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 =