| 13 Apr 2023 |
void | hi there, I am trying to move from morph to colmena, having some trouble | 00:13:27 |
void | its always the same trouble with these tools, i want to access nodes inside modules yet fail. | 00:13:46 |
void | is nodes always provided cos in one of my modules if I define {pkgs, config, options, lib, nodes, ...}: I get attribute nodes missing. | 00:14:42 |
void | prolly Im doing something wrong. | 00:15:23 |
void | tried config._module.args.nodes still no luck ;( | 00:17:28 |
void | it is maybe the case where I need to pass the args manually since this module is buried deep inside a config with imports = [ (import ./some-module) ]; | 00:18:59 |
Zhaofeng Li | It should be present. Just making sure: It's not a submodule, right? | 00:28:40 |
void | it is a chain of modules imported by import = [ some-module.nix ]; | 00:32:01 |
void | basically it is a module that scans all other hosts in nodes to get a list and do something else with data from their configs. | 00:33:46 |
void | data is similar to config.networking.hostName etc. | 00:34:11 |
void | not sure what the problem is. | 00:34:26 |
void |
[ERROR] stderr) 227| in commonAttrs // {
[ERROR] stderr) 228| drvPath = assert condition; drv.drvPath;
[ERROR] stderr) | ^
[ERROR] stderr) 229| outPath = assert condition; drv.outPath;
[ERROR] stderr)
[ERROR] stderr) … while calling the 'derivationStrict' builtin
[ERROR] stderr)
[ERROR] stderr) at //builtin/derivation.nix:9:12: (source not available)
[ERROR] stderr)
[ERROR] stderr) (stack trace truncated; use '--show-trace' to show the full trace)
[ERROR] stderr)
[ERROR] stderr) error: attribute 'nodes' missing
[ERROR] stderr)
[ERROR] stderr) at /nix/store/da6z64a7773wyhpnb1ih888c9fz4a4pr-source/lib/modules.nix:507:28:
[ERROR] stderr)
[ERROR] stderr) 506| builtins.addErrorContext (context name)
[ERROR] stderr) 507| (args.${name} or config._module.args.${name})
[ERROR] stderr) | ^
[ERROR] stderr) 508| ) (lib.functionArgs f);
[ERROR] failure) Child process exited with error code: 1
[ERROR] Failed to complete requested operation - Last 1 lines of logs:
[ERROR] failure) Child process exited with error code: 1
| 00:36:41 |
void | I did tackle the problem in morph by re-evalling as in the following: | 00:38:51 |
void |
_coreMachines = import "${super.morph.lib}/eval-machines.nix" {
networkExpr = ../../network.nix;
};
coreMachines = if config._module.args ? nodes
then config._module.args.nodes
else _coreMachines.nodes;
| 00:39:16 |
void | but I bet there is a better soln. | 00:39:34 |
void | hmm, it seems to be triggered by a call from a container config imported by containers.some-container = { .. config = {config, pkgs, lib, ...}: { .. } } | 00:59:10 |
void | in the container config, nodes is missing. | 00:59:28 |
void | OK, fixed. | 01:16:33 |
void | added _module.args.nodes = nodes; in container configs. prolly nobody is gonna hit that anyways. | 01:16:53 |
void | thnx. | 01:16:55 |
Zhaofeng Li | Yeah, containers are evaluated in a separate evalConfig | 01:22:27 |
void | this actually tells me nodes should be a tree with containers as branches. | 01:23:27 |
void | anyway, later. | 01:23:35 |
void | Redacted or Malformed Event | 02:41:14 |
void | Redacted or Malformed Event | 02:41:21 |
void | * looking for an example, I basically want my hydra to build every host. | 02:41:47 |
void | * looking for an example, I basically want my hydra to build every node. | 02:41:58 |
void | Redacted or Malformed Event | 02:42:23 |
void | Redacted or Malformed Event | 02:42:38 |
void | * { machine }:
{ ... }:
let
nixpkgs = import <nixpkgs> {};
# Evaluate a morph network.
evaluateMorph = networkExpr: import "${nixpkgs.morph.lib}/eval-machines.nix" {
inherit networkExpr;
};
morphResult = evaluateMorph ../network.nix;
in {
"${machine}" = morphResult.nodes.${machine}.config.system.build.toplevel;
}
| 02:42:55 |