Blocks aren't being assigned to a region Is there any reason that these blocks wouldn't be assigned to the regions specified?  The only way I can get these to appear is to set them manually.  Kinda defeats the purpose of defining a region in the first place.

function custom_module_block_info() {

  $blocks = array();
  $blocks['footer_touts'] = array(
    'info' =&gt; t('Footer Touts'),
    'status' =&gt; TRUE,
    'region' =&gt; 'footer',
  );

  $blocks['carrousel'] = array(
    'info' =&gt; t('Carrousel'),
    'status' =&gt; TRUE,
    'region' =&gt; 'hp_content',
    'visibility' =&gt; BLOCK_VISIBILITY_LISTED,
    'pages' =&gt; '&lt;front&gt;',
  );

  return $blocks;
}
(Luis already answered eir own question, in the comments above, but I thought I'd add something here; all kudos to Luis though.)

The status property returned by a module's implementation of hook_block_info() must be TRUE. This is slightly unintuitive because when enabling blocks in the UI, one only has to choose the region—however, in doing so a block's status is also changed. Programmatically, we must set both status and region properties. (I'm not sure there would ever be any reason to set one and not the other.)

When doing this to an already-enabled module, it would seem that clearing the block cache (drush cc block) is not enough, nor is dis- and re-enabling the module; it must be uninstalled and reinstalled for the change to take effect (drush dre custom_module if you've got Devel).

Note also that Drush seems to get confused when doing this with a region that doesn't exist in the default theme (reporting that "The block Carrousel was assigned to the invalid region hp_content and has been disabled."). This is not true; the block is enabled.