feat(esphome): working

This commit is contained in:
Kat Inskip 2022-09-26 17:49:42 -07:00
parent d266bdb450
commit 4b986433a3
Signed by: kat
GPG key ID: 465E64DECEA8CF0F
9 changed files with 130 additions and 50 deletions

View file

@ -127,7 +127,8 @@ in
};
};
continue.envVar = "TF_NIX_CONTINUE_${replaceStrings [ "-" ] [ "_" ] config.name}";
}) ++ map (nodeName: mapAttrs (_: mkMerge) meta.network.nodes.nixos.${nodeName}.deploy.tf.out.set) config.nodeNames);
}) ++ map (nodeName: mapAttrs (_: mkMerge) meta.network.nodes.nixos.${nodeName}.deploy.tf.out.set) config.nodeNames
++ (optionals (config.name == "home") (mapAttrsToList (node: config: (mapAttrs (_: mkMerge) config.deploy.tf.out.set)) meta.network.nodes.esphome)));
});
in
mkOption {

View file

@ -49,32 +49,13 @@ with lib;
default = { };
};
};
union = mkOption {
nodes.all = mkOption {
type = types.attrsOf types.unspecified;
default = config.network.nodes.nixos // config.network.nodes.darwin // config.network.nodes.esphome;
};
nodes.esphome = let
esphomeModule = { name, config, meta, lib, ... }: with lib;
let
settings = config.settings;
closureConfig = pkgs.writeText "${settings.esphome.name}.json" builtins.toJSON settings;
closure = pkgs.runCommand "${settings.esphome.name}" {} ''
${pkgs.esphome}/bin/esphome compile ${closureConfig}
mv .esphome/build/${settings.esphome.name}/.pioenvs/${settings.esphome.name}/firmware.bin $out
'';
in {
options.out = mkOption {
type = types.unspecified;
default = closure;
};
options.settings = mkOption {
type = types.unspecified;
};
};
esphomeType = types.submoduleWith {
modules = [
esphomeModule
] ++ config.network.esphome.extraModules;
modules = [ { _module.args.pkgs = pkgs; } ] ++ config.network.esphome.extraModules;
inherit (config.network.esphome) specialArgs;
};
in mkOption {
@ -158,8 +139,10 @@ with lib;
config.network = {
esphome = {
extraModules = [
meta.modules.esphome
];
specialArgs = {
target = config.deploy.targets.home;
inherit (config.network) nodes;
inherit inputs meta;
};
@ -186,7 +169,7 @@ with lib;
];
specialArgs = {
inherit (config.network) nodes;
inherit inputs meta;
inherit inputs meta pkgs;
};
};
};