diff --git a/commands/make/generate.profile.inc b/commands/make/generate.profile.inc
new file mode 100644
index 0000000..c209ef8
--- /dev/null
+++ b/commands/make/generate.profile.inc
@@ -0,0 +1,124 @@
+<?php
+
+require_once DRUSH_BASE_PATH . '/commands/make/generate.make.inc';
+
+function drush_make_profile_generate($profile_name = 'generated-profile') {
+  // First, generate a makefile the same way that the generate-makefile command does.
+  $version_options = _drush_make_generate_get_version_options();
+  $projects = _drush_make_generage_projects($version_options);
+
+  $profile_description = drush_get_option('description', 'A profile generated by drush make');
+  // Next, split our makefile into two parts.  The 'bootstrap' makefile
+  // will contain Drupal core plus the profile we are generating; the
+  // other makefile will be fore the profile itself.
+  $bootstrap_projects['drupal'] = $projects['drupal'];
+  unset($projects['drupal']);
+  $bootstrap_projects[$profile_name]['type'] = 'profile';
+  $bootstrap_projects[$profile_name]['download][type'] = 'git';
+  $bootstrap_projects[$profile_name]['download][revision'] = 'master';
+  
+  // Build a profile_info array containing all of the
+  // different files that will make up the profile.
+  $profile_info = array();
+  
+  $profile_info[".info"] = array(
+    'name' => $profile_name,
+    'description' => $profile_description,
+    'core' => drush_drupal_major_version() . '.x',
+    'dependencies' => array_keys($projects),
+    'files' => array(),
+  );
+  _drush_make_generate_profile_file($profile_info, ".make.bootstrap", _drush_make_generate_makefile_contents($bootstrap_projects));
+  _drush_make_generate_profile_file($profile_info, ".make", _drush_make_generate_makefile_contents($projects));
+  _drush_make_generate_profile_file($profile_info, ".install", _drush_make_generate_profile_install_contents($profile_info, $projects));
+  _drush_make_generate_profile_add_file($profile_info, ".profile", _drush_make_generate_profile_profile_contents($profile_info, $projects));
+
+  // Store the profile at $base_dir
+  $base_dir = drush_get_option('destination', $profile_name);
+  if (!drush_is_absolute_path($base_dir)) {
+    $old_cwd = drush_get_context('DRUSH_OLDCWD', NULL);
+    if (isset($old_cwd)) {
+      $base_dir = $old_cwd . '/' . $base_dir;
+    }
+  }
+  if (!is_dir($base_dir)) {
+    mkdir($base_dir);
+  }
+  // Now that we've generated all of the basic info for the
+  // profile files, go ahead and write them all to disk.
+  foreach ($profile_info as $filename => $info) {
+    if ($filename{0} == '.') {
+      $filename = $profile_name . $filename;
+    }
+    $dir = $base_dir;
+    if (array_key_exists('#dir', $info)) {
+      $dir .= (empty($dir) ? '' : '/') . $info['#dir'];
+    }
+    if (!is_dir($dir)) {
+      mkdir($dir);
+    }
+    $filename = $dir . (empty($dir) ? '' : '/')  . $filename;
+    foreach ($info as $section => $contents) {
+      if ($section{0} != '#') {
+        if (!array_key_exists('#contents', $info)) {
+          $info['#contents'] = '';
+        }
+        $section_data = "";
+        if (is_array($contents)) {
+          foreach ($contents as $line) {
+            if (!empty($line)) {
+              $section_data .= "\n" . $section . '[] = ' . $line;
+            }
+          }
+        }
+        else {
+          $section_data = "\n" . $section . ' = ' . $contents;
+        }
+        $info['#contents'] .= $section_data;
+      }
+    }
+    file_put_contents($filename, $info['#contents']);
+  }
+}
+
+function _drush_make_generate_profile_file(&$profile_info, $name, $data) {
+  if (!is_array($data)) {
+    $data = array('#contents' => $data);
+  }
+  $profile_info[$name] = $data;
+}
+
+function _drush_make_generate_profile_add_file(&$profile_info, $name, $data) {
+  _drush_make_generate_profile_file($profile_info, $name, $data);
+  if ($name{0} = '.') {
+    $name = $profile_info['.info']['name'] . $name;
+  }
+  $profile_info['.info']['files'][] = $name;
+}
+
+function _drush_make_generate_profile_install_contents($profile_info, &$projects) {
+  return '<?php
+/**
+* Implement hook_install().
+*
+* Perform actions to set up the site for this profile.
+*/
+function ' . $profile_info['.info']['name'] . '_install() {
+  include_once DRUPAL_ROOT . "/profiles/standard/standard.install";
+  standard_install();
+}';
+}
+
+function _drush_make_generate_profile_profile_contents($profile_info, &$projects) {
+  return '<?php
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ *
+ * Allows the profile to alter the site configuration form.
+ */
+function ' . $profile_info['.info']['name'] . '_form_install_configure_form_alter(&$form, $form_state) {
+  // Pre-populate the site name with the server name.
+  $form["site_information"]["site_name"]["#default_value"] = $_SERVER["SERVER_NAME"];
+}';
+}
diff --git a/commands/make/make.drush.inc b/commands/make/make.drush.inc
index 497395f..a414d31 100644
--- a/commands/make/make.drush.inc
+++ b/commands/make/make.drush.inc
@@ -61,6 +61,20 @@ function make_drush_command() {
     'aliases' => array('generate-makefile'),
   );
 
+  $items['profile-generate'] = array(
+    'bootstrap' => DRUSH_BOOTSTRAP_DRUPAL_FULL,
+    'description' => 'Generate an installation profile from the current Drupal site.',
+    'examples' => array(
+      'drush generate-profile example-profile' => 'Generate an installation profile called example-profile.',
+    ),
+    'options' => array(
+      'description' => 'Description of the profile, for the profile.info file.',
+      'destination' => 'Directory to write the profile. Defaults to the profile name.',
+    ),
+    'aliases' => array('generate-profile'), 
+    'allow-additional-options' => 'make-generate',
+  );
+
   // Add docs topic.
   $make_dir = dirname(__FILE__);
   $items['docs-make'] = array(
