Using variable_get() still returning a form with the default value?
If I understand your question correctly, your values are not saved.

This is because you either need to handle storing variables (using variable_set()) in your submit callback, or use system_settings_form() to do this for you.

The latter approach is generally used for administrative settings, unless you need some additional processing or storing part of the settings somewhere else.

Do note that with system_settings_form() you don't need to add the form actions - they will be added for you.

Here's an example:

function my_module_admin_settings_form($form, $form_state, $nid = 0){
  $form = array();
  $form['subject'] = array(
    '#title' =&gt; t('Subject Line'),
    '#descirption' =&gt; t('Default email subject line.'),
    '#type' =&gt; 'textfield',
    '#size' =&gt; '50',
    '#required' =&gt; TRUE,
    '#default_value' =&gt; variable_get('subject', 'You have not enabled TFA'),
  );

  // Add more fields.

  return system_settings_form($form);
}