docs: def base_install():
      """Generates configuration setting for required functionality of ISAMBARD."""
      # scwrl
      scwrl = {}
      print('{BOLD}{HEADER}Generating configuration files for ISAMBARD.{END_C}\n'
            'All required input can use tab completion for paths.\n'
            '{BOLD}Setting up SCWRL 4.0 (Recommended){END_C}'.format(**text_colours))
      scwrl_path = get_user_path('Please provide a path to your SCWRL executable', required=False)
      scwrl['path'] = str(scwrl_path)
      pack_mode = get_user_option(
          'Please choose your packing mode (flexible is significantly slower but is more accurate).',
          ['flexible', 'rigid'])
      if pack_mode == 'rigid':
          scwrl['rigid_rotamer_model'] = True
      else:
          scwrl['rigid_rotamer_model'] = False
      settings['scwrl'] = scwrl
  
      # dssp
      print('{BOLD}Setting up DSSP (Recommended){END_C}'.format(**text_colours))
      dssp = {}
      dssp_path = get_user_path('Please provide a path to your DSSP executable.', required=False)
      dssp['path'] = str(dssp_path)
      settings['dssp'] = dssp
  
      # buff
      print('{BOLD}Setting up BUFF (Required){END_C}'.format(**text_colours))
      buff = {}
      ffs = []
      ff_dir = isambard_path / 'buff' / 'force_fields'
      for ff_file in os.listdir(str(ff_dir)):
          ff = pathlib.Path(ff_file)
          ffs.append(ff.stem)
      force_field_choice = get_user_option(
          'Please choose the default BUFF force field, this can be modified during runtime.',
          ffs)
      buff['default_force_field'] = force_field_choice
      settings['buff'] = buff
      return