{ config, inputs, lib, pkgs, ... }: { options.my.shell.type = lib.mkOption { type = lib.types.enum [ "bash" "zsh" ]; default = "bash"; description = "The shell to use system-wide (bash or zsh)"; }; config = { users.users = lib.mkMerge ( map (user: { ${user}.shell = pkgs.${config.my.shell.type}; }) (inputs.self.lib.normalizeUsers config.my.toggleUsers.shell) ); programs.zsh.enable = config.my.shell.type == "zsh"; }; }