diff --git a/src/settings.liq b/src/settings.liq
index d6e722792b274ae04b1fc3a0a05d4659f52e646c..c5e0ff911a285c37fdd4144298d92f2a458e7e4b 100644
--- a/src/settings.liq
+++ b/src/settings.liq
@@ -29,8 +29,60 @@ config_file =
 print(
   "\tConfig file: '#{config_file}'"
 )
-ini = read_ini(config_file)
-engine_config_folder = string.split(separator="/engine-core.ini", config_file)
+
+let yaml.parse (config :
+  {
+    general: {
+      engine_id: string,
+      socket_dir: string,
+      log_dir: string,
+      log_level: string,
+      liquidsoap_as_root: string,
+      liquidsoap_min_version: string,
+      api_url_playlog: string
+    },
+    telnet: {
+      server_enable: string,
+      server_timeout: string,
+      server_host: string,
+      server_port: string
+    },
+    fallback: {
+      music_folder: string,
+      show_name: string,
+      show_id: string,
+      type: string,
+      music_playlist: string,
+      music_folder_reload: string,
+      max_blank: string,
+      min_noise: string,
+      threshold: string
+    },
+    stream: [
+      {
+        enabled: bool,
+        encoding: string,
+        bitrate: string,
+        channels: string,
+        host: string,
+        port: float,
+        mountpoint: string,
+        user: string,
+        password: string,
+        url: string,
+        name: string,
+        genre: string,
+        description: string
+      }
+    ],
+    audio: {
+      soundsystem: string,
+      devices: {output: [{name: string}], input: [{name: string}]}
+    }
+  }
+) = file.contents(config_file)
+ini
+engine_config_folder = string.split(separator="/engine-core.yaml", config_file)
 engine_config_folder = list.nth(default="../config/", engine_config_folder, 0)
 print(
   "\tengine_config_folder = '#{engine_config_folder}'"