diff --git a/manifests/config.pp b/manifests/config.pp
index 1da88eff2e3dd5f2ddb8b4d63eaad3d263282eaa..5a12f77ca79485c8ced134296104895afddc7ceb 100644
--- a/manifests/config.pp
+++ b/manifests/config.pp
@@ -4,19 +4,19 @@ define freeradius::config (
   $content = undef,
   $ensure = present,
 ) {
-  $fr_package  = $::freeradius::params::fr_package
-  $fr_service  = $::freeradius::params::fr_service
-  $fr_basepath = $::freeradius::params::fr_basepath
-  $fr_group    = $::freeradius::params::fr_group
+  $fr_package          = $::freeradius::params::fr_package
+  $fr_service          = $::freeradius::params::fr_service
+  $fr_group            = $::freeradius::params::fr_group
+  $fr_moduleconfigpath = $::freeradius::params::fr_moduleconfigpath
 
-  file { "${fr_basepath}/conf.d/${name}":
+  file { "${fr_moduleconfigpath}/${name}":
     ensure  => $ensure,
     mode    => '0640',
     owner   => 'root',
     group   => $fr_group,
     source  => $source,
     content => $content,
-    require => [File["${fr_basepath}/conf.d"], Package[$fr_package], Group[$fr_group]],
+    require => [File[$fr_moduleconfigpath], Package[$fr_package], Group[$fr_group]],
     notify  => Service[$fr_service],
   }
 }
diff --git a/manifests/params.pp b/manifests/params.pp
index f4d04c8afd27f828f1144b769aad27b7b47152d2..9bb2af9558d0ccf94af52d55a53d529d60015bee 100644
--- a/manifests/params.pp
+++ b/manifests/params.pp
@@ -46,6 +46,16 @@ class freeradius::params {
   # Default module path
   $fr_modulepath = "${fr_basepath}/${fr_moduledir}"
 
+  # Default module config dir
+  $fr_modconfigdir = $::freeradius_version ? {
+    /^2\./    => 'conf.d',
+    /^3\./    => 'mods-config',
+    default   => 'conf.d',
+  }
+
+  # Default module config path
+  $fr_moduleconfigpath = "${fr_basepath}/${fr_modconfigdir}"
+
   # Path for FreeRADIUS logs
   $fr_logpath = $::osfamily ? {
     'RedHat' => '/var/log/radius',