class nodo::subsystem::media::folders(
  $base  = hiera('nodo::subsystem::media::folders::base',  '/var/cache/media'),
  $cache = hiera('nodo::subsystem::media::folders::cache', directory),
  $owner = hiera('nodo::subsystem::media::folders::owner', false),
  $group = hiera('nodo::subsystem::media::folders::group', false)
) {
  # Removable media folder
  file { [ "/media/usb", "/media/cdrom", "/media/tablet", "/media/phone" ]:
    ensure => directory,
    mode   => 0755,
  }

  # Media cache
  file { "$base":
    ensure => $cache,
    mode   => 0755,
    owner  => $owner ? {
      false   => undef,
      default => $owner,
    },
    group  => $group ? {
      false   => undef,
      default => $group,
    },
  }

  # Code and load folders
  file { [ "${base}/code", "${base}/load" ]:
    ensure => directory,
    mode   => 0755,
    owner  => $owner ? {
      false   => undef,
      default => $owner,
    },
    group  => $group ? {
      false   => undef,
      default => $group,
    },
    require => File["$base"],
  }

  # Data folder is a cache
  file { "/var/data":
    ensure => "$base",
  }

  # Hostname cache for general use
  file { "/var/cache/${::hostname}":
    ensure => directory,
    mode   => 0755,
  }

  # Link to the media cache, useful to have unique remotes
  # for git-annex in removable media
  file { "/var/cache/${::hostname}/media":
    ensure => "$base",
  }
}