nixos-config/lib/hosts.nix

32 lines
869 B
Nix
Raw Normal View History

2021-06-05 06:22:38 +00:00
callerInputs: hostsPath:
let
hostMetadata = builtins.mapAttrs
(name: _: import (hostsPath + "/${name}"))
(builtins.readDir hostsPath);
hardwareModules =
{
physical = (x: { imports = [ "${x.modulesPath}/installer/scan/not-detected.nix" ]; });
vmware = (x: { virtualisation.vmware.guest.enable = true; });
qemu = (x: {
services.qemuGuest.enable = true;
imports = [ "${x.modulesPath}/profiles/qemu-guest.nix" ];
});
};
getHostConfig = hostName: hostMeta:
callerInputs.${hostMeta.pkgs}.lib.nixosSystem
{
inherit (hostMeta) system;
modules = [
(callerInputs.self.nixosModule)
(hostMeta.module)
(hardwareModules.${hostMeta.hardware})
(_: { networking.hostName = hostName; })
];
};
in
builtins.mapAttrs getHostConfig hostMetadata