Deploy target autodefinition overhaul

This commit is contained in:
kat witch 2021-08-07 03:02:27 +01:00
parent 6b9b0ba3cf
commit 7ad716b827
No known key found for this signature in database
GPG key ID: 1B477797DCA5EC72
3 changed files with 18 additions and 7 deletions

View file

@ -1,4 +1,5 @@
{ lib, config, ... }: with lib; {
deploy.targets.dummy.enable = false;
network.nodes.dummy = {
imports = lib.hostImport "dummy";
networking = {

View file

@ -48,6 +48,7 @@ in {
targets = let
type = types.submodule ({ config, name, ... }: {
options = {
enable = mkEnableOption "Enable the target" // { default = true; };
name = mkOption {
type = types.str;
default = name;
@ -99,13 +100,22 @@ in {
};
};
config = {
deploy.targets = let
nodeNames = attrNames config.network.nodes;
targets = config.deploy.targets;
explicitlyDefinedHosts = concatLists (mapAttrsToList (targetName: target: remove targetName target.nodeNames) config.deploy.targets);
in genAttrs nodeNames ( nodeName: {
enable = mkDefault (! elem nodeName explicitlyDefinedHosts);
nodeNames = singleton nodeName;
});
runners = {
run = mkMerge (mapAttrsToList (targetName: target: mapAttrs' (k: run:
nameValuePair run.name run.set
) target.tf.runners.run) cfg.targets);
) target.tf.runners.run) (filterAttrs (_: v: v.enable) cfg.targets));
lazy.run = mkMerge (mapAttrsToList (targetName: target: mapAttrs' (k: run:
nameValuePair run.name run.set
) target.tf.runners.lazy.run) cfg.targets);
) target.tf.runners.lazy.run) (filterAttrs (_: v: v.enable) cfg.targets));
};
};
}

View file

@ -38,12 +38,12 @@ let
# This is where the meta config is evaluated.
eval = lib.evalModules {
modules = [
metaConfig
./config/modules/meta/default.nix
] ++ (lib.attrValues hosts)
modules = lib.singleton metaConfig
++ (lib.attrValues (removeAttrs argGen.targets ["common"]))
++ (lib.optional (builtins.pathExists ./config/trusted/meta.nix) ./config/trusted/meta.nix);
++ (lib.attrValues hosts)
++ (lib.optional (builtins.pathExists ./config/trusted/meta.nix) ./config/trusted/meta.nix)
++ lib.singleton ./config/modules/meta/default.nix;
specialArgs = {
inherit sources;
inherit (argGen) profiles users services;