{
  lib,
  config,
  ...
}: let
  cfg = config.myConfig.shell;
in {
  imports = [./zsh.nix ./bat.nix ./btop.nix ./neovim.nix ./direnv.nix];

  options.myConfig.shell = {
    enable = lib.mkEnableOption "my shell environment";
  };

  config = lib.mkIf cfg.enable {
    myConfig.shell = {
      zsh.enable = lib.mkDefault true;
      neovim.enable = lib.mkDefault true;
      btop.enable = lib.mkDefault true;
      bat.enable = lib.mkDefault true;
      direnv.enable = lib.mkDefault true;
    };
  };
}