{ nixpkgs, flake-utils, ... }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; lib = pkgs.lib; machineOpts = {config, ...}: { options = { arch = lib.mkOption { default = null; type = with lib.types; nullOr str; description = '' CPU architecture of this machine. ''; }; isRaspberryPi = lib.mkOption { default = false; type = lib.types.bool; }; nixosModule = lib.mkOption { default = {...}: {}; type = lib.types.anything; description = '' Customized configuration for this machine in the form of a NixOS module. ''; }; kubernetesNodeLabels = lib.mkOption { default = null; type = with lib.types; nullOr attrs; description = '' Any labels to add to the Kubernetes node. ''; }; }; }; allOpts = { options = { machines = lib.mkOption { type = with lib.types; attrsOf (submodule machineOpts); }; }; }; in { machines = (lib.modules.evalModules { modules = [ allOpts ./warwick.nix ./atlas.nix ./jefke.nix ./lewis.nix # ./talos.nix # ./pikvm.nix ]; }) .config .machines; })