{ config, lib, pkgs, inputs, ... }: let inherit (lib) types; genUsers = users: f: builtins.listToAttrs (map (user: { name = user; value = (f user); }) users); in { options.gg.users = { admins = lib.mkOption { type = (types.listOf types.str); default = [ "mtxyz" "hive" ]; }; friend = lib.mkOption { type = types.bool; default = false; }; }; config = { # Users programs.fish.enable = true; users.defaultUserShell = pkgs.fish; users.users = (genUsers config.gg.users.admins (name: { isNormalUser = true; extraGroups = [ "wheel" ]; openssh.authorizedKeys.keyFiles = [ "${inputs.self}/pubkeys/${name}.keys" ]; initialPassword = ""; })) // { friends = lib.mkIf config.gg.users.friend { isNormalUser = true; initialPassword = ""; }; }; }; }