inputs: lib: with lib; let modules = [ { options.machines = mkOption { description = "My machines"; type = with types; attrsOf (submodule ({ name, ... }: { freeformType = attrs; options = { hostname = mkOption { description = "The machine's hostname"; type = str; default = name; readOnly = true; }; }; })); default = { }; }; config = { _module.freeformType = with types; attrs; domain = "julienmalka.me"; internalDomain = "luj"; machines = { lisa = { arch = "x86_64-linux"; nixpkgs_version = inputs.nixpkgs; hm_version = inputs.home-manager; }; newton = { arch = "x86_64-linux"; nixpkgs_version = inputs.nixpkgs; hm_version = inputs.home-manager; }; macintosh = { arch = "aarch64-linux"; nixpkgs_version = inputs.nixos-apple-silicon.inputs.nixpkgs; hm_version = inputs.home-manager; }; lambda = { arch = "aarch64-linux"; nixpkgs_version = inputs.nixpkgs; hm_version = inputs.home-manager; }; tower = { arch = "x86_64-linux"; nixpkgs_version = inputs.nixpkgs; hm_version = inputs.home-manager; }; bin-cache = { arch = "x86_64-linux"; nixpkgs_version = inputs.nixpkgs; hm_version = inputs.home-manager; }; core-security = { arch = "x86_64-linux"; nixpkgs_version = inputs.nixpkgs; hm_version = inputs.home-manager; }; }; }; } ]; in (evalModules { inherit modules; }).config