64 lines
1.6 KiB
Nix
64 lines
1.6 KiB
Nix
|
{ lib, ... }:
|
||
|
rec {
|
||
|
genK3SFromList =
|
||
|
server-config: agent-config:
|
||
|
{
|
||
|
host,
|
||
|
ipv4,
|
||
|
server ? false,
|
||
|
}@args:
|
||
|
lib.mapAttrs (
|
||
|
args:
|
||
|
lib.rad-dev.microvms.genMicroVM args.host args.ipv4 "x86_64-linux" (
|
||
|
if server then import server-config else import agent-config
|
||
|
)
|
||
|
) args;
|
||
|
|
||
|
genMicroVM =
|
||
|
hostName: ipv4: system: vm-config:
|
||
|
# microvm refers to microvm.nixosModules
|
||
|
|
||
|
{
|
||
|
config,
|
||
|
pkgs,
|
||
|
lib,
|
||
|
...
|
||
|
}:
|
||
|
{
|
||
|
${hostName} = {
|
||
|
# The package set to use for the microvm. This also determines the microvm's architecture.
|
||
|
# Defaults to the host system's package set if not given.
|
||
|
pkgs = import pkgs { inherit system; };
|
||
|
|
||
|
# (Optional) A set of special arguments to be passed to the MicroVM's NixOS modules.
|
||
|
#specialArgs = {};
|
||
|
|
||
|
# The configuration for the MicroVM.
|
||
|
# Multiple definitions will be merged as expected.
|
||
|
config = {
|
||
|
# It is highly recommended to share the host's nix-store
|
||
|
# with the VMs to prevent building huge images.
|
||
|
microvm.shares = [
|
||
|
{
|
||
|
source = "/nix/store";
|
||
|
mountPoint = "/nix/.ro-store";
|
||
|
tag = "ro-store";
|
||
|
proto = "virtiofs";
|
||
|
}
|
||
|
];
|
||
|
|
||
|
networking = {
|
||
|
inherit hostName;
|
||
|
interfaces.ether.ipv4.addreses = {
|
||
|
address = ipv4;
|
||
|
prefixLength = 24;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
# Any other configuration for your MicroVM
|
||
|
# [...]
|
||
|
} // vm-config;
|
||
|
};
|
||
|
};
|
||
|
}
|