{ lib, config, pkgs, ... }: let inherit (lib) types; cfg = config.this.users; userP = (name: builtins.elem name cfg.enabled); user = (name: config: lib.mkIf (userP name) config); in { options.this.users = { enabled = lib.mkOption { type = types.listOf types.str; default = []; }; }; config = lib.mkMerge [ (user "simon" { users.groups.simon = { gid = 1000; }; users.users.simon = { description = "Simon Parri"; group = "simon"; isNormalUser = true; uid = 1000; shell = pkgs.zsh; homeMode = "755"; extraGroups = [ "users" "adm" "kvm" "disk" "cdrom" "audio" "video" "input" "lp" "networkmanager" ]; }; }) ]; }