nixfiles/meta.nix

61 lines
1.6 KiB
Nix

{ inputs, system ? builtins.currentSystem or "x86_64-linux" , ... }: let
patchedInputs = import ./patchedInputs.nix { inherit inputs system; };
pkgs = import ./overlays { inherit system; inputs = patchedInputs; };
inherit (pkgs) lib;
tree = import ./tree.nix { inherit lib; inputs = patchedInputs; };
root = ./.; # Required for modules/meta/imports.nix to find hosts
nixfiles = tree.impure;
eval = let
esphomeNodes = (map
(node: {
network.nodes.esphome.${node} = {
imports = config.lib.nixfiles.esphomeImport node;
esphome = {
name = node;
};
};
})
(lib.attrNames nixfiles.esphome.boards));
nixosNodes = (map
(node: {
network.nodes.nixos.${node} = {
imports = config.lib.nixfiles.nixosImport node;
networking = {
hostName = node;
};
};
})
(lib.attrNames nixfiles.nixos.systems));
darwinNodes = (map
(node: {
network.nodes.darwin.${node} = {
imports = config.lib.nixfiles.darwinImport node;
networking = {
hostName = node;
};
};
})
(lib.attrNames nixfiles.darwin.systems));
in lib.evalModules {
modules = [
nixfiles.modules.meta
{
_module.args.pkgs = lib.mkDefault pkgs;
}
]
++ lib.attrValues nixfiles.targets
++ nixosNodes
++ darwinNodes
++ esphomeNodes;
specialArgs = {
inherit root tree;
inputs = patchedInputs;
meta = self;
} // nixfiles;
};
inherit (eval) config;
self = config // { inherit pkgs lib tree; inputs = patchedInputs; } // nixfiles;
in self