{ inputs, self, ... }: { imports = [ (inputs.helpers.mkMirroredModulesFlakeModule "globalOptions" ({ lib, ... }: { options.features.shells.defaultShell = lib.mkOption { type = inputs.helpers.mkEnumFromDirContents "${self}/modules/features/shells"; description = "This option controls the shell that should be used as the default, enabling that shell in the process."; default = "zsh"; }; })) ]; flake.nixosModules.global = { config, pkgs, lib, ... }: { programs.${config.features.shells.defaultShell}.enable = true; users.defaultUserShell = pkgs.${config.features.shells.defaultShell}; users.users."grey".shell = pkgs.${config.features.shells.defaultShell}; }; }