 
 (defun kotct/user-get-default-username ()
   "Look up the default username set on this machine."
-  (let ((filename "~/.emacs.d/lisp/user/default-username"))
+  (let ((filename kotct/user-default-username-file))
     (if (file-exists-p filename)
         (with-temp-buffer
           (insert-file-contents filename)
           (replace-regexp-in-string "\n\\'" "" (buffer-string)))
-      ;; default to base-config
-      "base-config")))
+      (if (y-or-n-p "Would you like to set a default personal config?")
+          (kotct/user-set-default-username)
+        ;; default to base-config, save so that we don't keep asking
+        (kotct/user-set-default-username "base-config")))))
+
+(defun kotct/user-set-default-username (&optional username)
+  "Set the default username to USERNAME.
+If USERNAME is nil, prompt the user for the username."
+  (interactive)
+  (unless username (setf username (kotct/user-ask-username "Choose default username: ")))
+  (with-temp-file kotct/user-default-username-file
+    (erase-buffer)
+    (insert username))
+  username)
 
 (defun kotct/user-load-username (username)
   "Load the personal config of USERNAME.

  (interactive)
  (unless username
    (setf username
          (ido-completing-read "Switch to username: "
                               (directory-files "~/.emacs.d/lisp/user/users/" nil "^[^.].*$"))))
  (kotct/user-unload-username)
  ;; make sure that if the load fails we reload the stuff we just unloaded
  ;; so that we are actually loaded with current-username's config

    (require (intern (concat username "-hub")))
    (setf kotct/user-current-username username)))

(defun kotct/user-ask-username (prompt)
  "Use ido to ask the user for a username,
prompting the user with PROMPT."
  (ido-completing-read prompt
                       (directory-files "~/.emacs.d/lisp/user/users/" nil "^[^.].*$")))

(defun kotct/user-unload-username (&optional username)
  "Unload the personal config of USERNAME, or if USERNAME is nil, `kotct/user-current-username'."
  (unless username (setf username kotct/user-current-username))
