from typing import Optional, TypedDict class ArchMgrConfig(TypedDict): pkgs: ArchMgrPkgConfig users: list[ArchMgrUserConfig] class ArchMgrPkgConfig(TypedDict): individual: list[str] bundles: list[object] # TODO: Better typing repos: object # TODO: Repo typing class ArchMgrUserConfig(TypedDict): username: str groups: list[str] home_dir: bool class ArchMgrBootConfig(TypedDict): bootloader: str esp_dir: str theme_folder: str os_prober: bool class ArchMgrThemeConfig(TypedDict): gtk: str qt: str font: str icon_theme: str cursor_theme: str class ArchMgrGitConfig(TypedDict): creds: object # TODO: repos: object # TODO class ArchMgrGitRepoConfig(TypedDict): clone_path: str url: str class ArchMgrCmdsConfig(TypedDict): always: ArchMgrCommand once: ArchMgrCommand class ArchMgrCommand(TypedDict): cmd: str name: Optional[str] capture_output: Optional[bool] hook: Optional[str] user: Optional[str]