diff --git a/src/mscommon.c b/src/mscommon.c
index 1a12b2f..2399444 100644
--- a/src/mscommon.c
+++ b/src/mscommon.c
@@ -428,6 +428,7 @@ static MSSndCardDesc * ms_snd_card_descs[]={
 void ms_init(){
 	int i;
 	MSSndCardManager *cm;
+	char *ms_plugin_path;
 
 #ifdef __APPLE__
 	NSApplicationLoad();
@@ -451,7 +452,35 @@ void ms_init(){
 	}
 
 	ms_message("Loading plugins");
-	ms_load_plugins(PACKAGE_PLUGINS_DIR);
+	ms_plugin_path = getenv("MS_PLUGIN_PATH");
+	do
+		{
+			if (!ms_plugin_path)
+				{
+					ms_load_plugins(PACKAGE_PLUGINS_DIR);
+					break;
+				}
+			char *dup_plugins_path = strdup (ms_plugin_path);
+			char *cur_plugins_dir = dup_plugins_path;
+			if (!dup_plugins_path)
+				{
+					ms_message("Failed to duplicate plugins path, not loading plugins");
+					break;
+				}
+			while (1)
+				{
+					char *next_delimiter = strchr(cur_plugins_dir, ":");
+					if (next_delimiter)
+						next_delimiter[0] = '\0';
+					ms_load_plugins(cur_plugins_dir);
+					if (!next_delimiter)
+						break;
+					cur_plugins_dir = next_delimiter + 1;
+				}
+			free(dup_plugins_path);
+		}
+	while (0);
+
 	ms_message("ms_init() done");
 }
 
