{ lib, ... }: let userSubmodule = lib.types.submodule { options = { name = lib.mkOption { type = lib.types.str; description = '' full name ''; }; email = lib.mkOption { type = lib.types.str; }; sshKeys = lib.mkOption { type = lib.types.listOf lib.types.str; description = '' SSH public keys ''; }; }; }; peopleSubmodule = lib.types.submodule { options = { users = lib.mkOption { type = lib.types.attrsOf userSubmodule; }; me = lib.mkOption { type = lib.types.str; description = '' The name of the user that represents me. Admin user in all contexts. Should be a key into the `users` attribute set. ''; }; }; }; in { # TODO: can we hack in an assertion that `me` is a key in `users`? options = { people = lib.mkOption { type = peopleSubmodule; }; }; config = { people = import ./config.nix; }; }