62 lines
2.3 KiB
Nix
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;
|
|
} |