nixfiles/libs/config/lib/hosts/prepare.nix
Sebastian Walz 860d31cee1
Tohu vaBohu
2023-04-21 00:22:52 +02:00

62 lines
2.3 KiB
Nix

{ about, configurations, core, devices, networks, profiles, systems, users, versions, ... }:
{ ... } @ environment:
let
inherit(configurations) Configuration';
inherit(core) debug list path type;
ConfigConfiguration = Configuration' "Config";
fail
= hostName:
fieldName:
debug.panic "prepareHost" "Field `${fieldName}` of host `${hostName}` missing!";
prepareAbout = about.prepare environment;
prepareConfig
= { source, ... }:
list.map
(
fileName:
ConfigConfiguration
{
configuration = path.import fileName;
source = source fileName;
}
);
prepareDevices = devices.prepare environment;
prepareNetwork = networks.prepare environment;
prepareProfile = profiles.prepare environment;
prepareSystem = systems.prepare environment;
prepareUsers = users.prepare environment;
prepareVersion = versions.prepare environment;
in
{
about,
config ? [],
devices ? fail host.name "devices",
name,
network ? fail host.name "network",
profile ? fail host.name "profile",
source,
system ? fail host.name "system",
users ? fail host.name "users",
version ? fail host.name "version",
...
} @ host:
let
env
= {
inherit name source;
};
in
{
inherit name source;
about = prepareAbout env about;
config = prepareConfig env config;
devices = prepareDevices env devices;
network = prepareNetwork env network;
profile = prepareProfile env profile;
system = prepareSystem env system;
users = prepareUsers env users;
version = prepareVersion env version;
}