Custom metabox not working

Problem #1:

First problem: inside home-meta.php, pull all of your add_meta_box() calls outside of the add_meta_boxes_home() callback, and get rid of the callback and add_action() call. You handle this already, with the add_meta_boxes_page callback in functions.php, that includes home-meta.php.

Problem #2:

Warning: Invalid argument supplied for foreach() in /Users/[my_mac]/Sites/[site_dir]/wp-content/themes/[site_theme]/metaboxes/home-meta.php on line 224

Assuming that this is line 224:

foreach ($home_meta_fields as $field) {

I think the problem is that you globalize $home_meta_fields after you define it:

$home_meta_fields = array( ... );

…later followed by:

global $home_meta_fields, $post;
foreach ( $home_meta_fields as $field ) {

Try globalizing $home_meta_fields before you define it:

global $home_meta_fields;
$home_meta_fields = array( ... );

…then it should be recognized as a valid, set array in your foreach() call.