<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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