{ lib, self, ... }: let types = lib.types; in { options = { # Required options directory = lib.mkOption { type = types.path; default = self; description = "The directory containing the clan subdirectory"; }; specialArgs = lib.mkOption { type = types.attrsOf types.raw; default = { }; description = "Extra arguments to pass to nixosSystem i.e. useful to make self available"; }; # Optional machines = lib.mkOption { type = types.attrsOf types.deferredModule; default = { }; }; inventory = lib.mkOption { type = types.submodule { imports = [ ../inventory/build-inventory/interface.nix ]; }; }; # Meta meta = lib.mkOption { type = types.nullOr ( types.submodule { options = { name = lib.mkOption { type = types.nullOr types.str; description = "Needs to be (globally) unique, as this determines the folder name where the flake gets downloaded to."; }; }; } ); default = null; }; pkgsForSystem = lib.mkOption { type = types.functionTo (types.nullOr types.attrs); default = _: null; }; # Outputs nixosConfigurations = lib.mkOption { type = types.lazyAttrsOf types.raw; default = { }; }; # flake.clanInternals clanInternals = lib.mkOption { # type = types.raw; # ClanInternals type = types.submodule { options = { # Those options are interfaced by the CLI # We don't speficy the type here, for better performance. inventory = lib.mkOption { type = lib.types.raw; }; inventoryFile = lib.mkOption { type = lib.types.raw; }; clanModules = lib.mkOption { type = lib.types.raw; }; source = lib.mkOption { type = lib.types.raw; }; meta = lib.mkOption { type = lib.types.raw; }; all-machines-json = lib.mkOption { type = lib.types.raw; }; machines = lib.mkOption { type = lib.types.raw; }; machinesFunc = lib.mkOption { type = lib.types.raw; }; }; }; }; }; }