This reverts commit 18b64f2d0b.
The old configuration cannot be updated like this:
eve] error:
[eve] … while calling the 'head' builtin
[eve] at /nix/store/5b0hl2dnvr1sawqlkwmsnaiyqz00d34h-source/lib/attrsets.nix:1575:11:
[eve] 1574| || pred here (elemAt values 1) (head values) then
[eve] 1575| head values
[eve] | ^
[eve] 1576| else
[eve]
[eve] … while evaluating the attribute 'value'
[eve] at /nix/store/5b0hl2dnvr1sawqlkwmsnaiyqz00d34h-source/lib/modules.nix:809:9:
[eve] 808| in warnDeprecation opt //
[eve] 809| { value = builtins.addErrorContext "while evaluating the option `${showOption loc}':" value;
[eve] | ^
[eve] 810| inherit (res.defsFinal') highestPrio;
[eve]
[eve] … while evaluating the option `system.build.toplevel':
[eve]
[eve] … while evaluating definitions from `/nix/store/5b0hl2dnvr1sawqlkwmsnaiyqz00d34h-source/nixos/modules/system/activation/top-level.nix':
[eve]
[eve] … while evaluating the option `assertions':
[eve]
[eve] … while evaluating definitions from `/nix/store/5b0hl2dnvr1sawqlkwmsnaiyqz00d34h-source/nixos/modules/system/boot/systemd.nix':
[eve]
[eve] … while evaluating the option `systemd.services':
[eve]
[eve] … while evaluating definitions from `/nix/store/kpzcdgndym0qm1w490mjvk9c2qmz03h5-source/nixosModules/clanCore/zerotier':
[eve]
[eve] … while evaluating the option `clan.core.networking.zerotier.networkId':
[eve]
[eve] (stack trace truncated; use '--show-trace' to show the full, detailed trace)
[eve]
[eve] error: A definition for option `clan.core.networking.zerotier.networkId' is not of type `null or string'. Definition values:
[eve] - In `/nix/store/kpzcdgndym0qm1w490mjvk9c2qmz03h5-source/nixosModules/clanCore/networking.nix':
[eve] {
[eve] _type = "override";
[eve] content = "267efd4a15b69623";
[eve] priorit
84 lines
2.5 KiB
Nix
84 lines
2.5 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
{
|
|
# TODO: factor these out into a separate interface.nix.
|
|
# Also think about moving these options out of `system.clan`.
|
|
# Maybe we should not re-use the already polluted confg.system namespace
|
|
# and instead have a separate top-level namespace like `clanOutputs`, with
|
|
# well defined options marked as `internal = true;`.
|
|
options.system.clan = lib.mkOption {
|
|
type = lib.types.submodule {
|
|
options = {
|
|
deployment.data = lib.mkOption {
|
|
type = lib.types.attrs;
|
|
description = ''
|
|
the data to be written to the deployment.json file
|
|
'';
|
|
};
|
|
deployment.file = lib.mkOption {
|
|
type = lib.types.path;
|
|
description = ''
|
|
the location of the deployment.json file
|
|
'';
|
|
};
|
|
deployment.buildHost = lib.mkOption {
|
|
type = lib.types.nullOr lib.types.str;
|
|
description = ''
|
|
the hostname of the build host where nixos-rebuild is run
|
|
'';
|
|
};
|
|
deployment.targetHost = lib.mkOption {
|
|
type = lib.types.nullOr lib.types.str;
|
|
description = ''
|
|
the hostname of the target host to be deployed to
|
|
'';
|
|
};
|
|
deployment.requireExplicitUpdate = lib.mkOption {
|
|
type = lib.types.bool;
|
|
description = ''
|
|
if true, the deployment will not be updated automatically.
|
|
'';
|
|
default = false;
|
|
};
|
|
vm.create = lib.mkOption {
|
|
type = lib.types.path;
|
|
description = ''
|
|
json metadata about the vm
|
|
'';
|
|
};
|
|
iso = lib.mkOption {
|
|
type = lib.types.path;
|
|
description = ''
|
|
A generated iso of the machine for the flash command
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
description = ''
|
|
utility outputs for clan management of this machine
|
|
'';
|
|
};
|
|
# optimization for faster secret generate/upload and machines update
|
|
config = {
|
|
system.clan.deployment.data = {
|
|
facts = {
|
|
inherit (config.clan.core.facts)
|
|
secretUploadDirectory
|
|
secretModule
|
|
publicModule
|
|
services
|
|
;
|
|
};
|
|
inherit (config.clan.networking) targetHost buildHost;
|
|
inherit (config.clan.deployment) requireExplicitUpdate;
|
|
};
|
|
system.clan.deployment.file = pkgs.writeText "deployment.json" (
|
|
builtins.toJSON config.system.clan.deployment.data
|
|
);
|
|
};
|
|
}
|