{ config, lib, ... }: let inherit (lib) types; filterUsers = predicate: (lib.pipe config.users.users [ (lib.filterAttrs (_: predicate)) builtins.attrNames ]); in { options.users = { normalUsers = lib.mkOption { type = types.listOf (types.passwdEntry types.str); description = '' List of normal users. ''; readOnly = true; }; systemUsers = lib.mkOption { type = types.listOf (types.passwdEntry types.str); description = '' List of system users. ''; readOnly = true; }; }; config.users = { normalUsers = filterUsers (user: user.isNormalUser); systemUsers = filterUsers (user: user.isSystemUser); }; }