{ config, lib, ... }: let inherit (lib) mkOption types; cfg = config.unexplrd.host; in { options.unexplrd.host = { name = mkOption { type = types.str; }; id = mkOption { type = types.strMatching "[a-z0-9]{8}"; }; stateVersion = mkOption { type = types.strMatching ''[0-9]{2}\.[0-9]{2}''; }; type = mkOption { type = types.enum ["laptop" "server" "workstation"]; }; }; config = { system.stateVersion = cfg.stateVersion; networking.hostName = cfg.name; networking.hostId = cfg.id; }; }