How to create an iCal feed of non-Nodes?
You can do this.


Make calendar module create an extra default view:

variable_set('calendar_default_view_options', array(
  array('name' =&gt; 'calendar'),
  array('name' =&gt; 'calendar_custom')
));


After clearing cache you should now have two calendar default views which are exactly the same.
Override the custom calendar view.

hook_views_default_view_alter(&amp;$views) {
  if (isset($views['calendar_custom']) {
    $views['calendar_custom']-&gt;base_table = 'users';
  }
}


You can change the base table of the view, which is what Views will use to determine what you can query from.


Note this is example code and untested, but should work.