diff --git a/Cargo.lock b/Cargo.lock
index 068da5c..1055766 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -190,7 +190,7 @@ source = "git+https://git.ablecorp.us/ableos/ableos_userland#c990d072981b3076fa3
 dependencies = [
  "hashbrown 0.14.2",
  "log",
- "toml",
+ "toml 0.5.9",
 ]
 
 [[package]]
@@ -837,6 +837,8 @@ dependencies = [
  "fatfs",
  "hbasm",
  "reqwest",
+ "str-reader",
+ "toml 0.5.11",
 ]
 
 [[package]]
@@ -1110,6 +1112,12 @@ version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
 
+[[package]]
+name = "str-reader"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a6aa20b89aec46e0bffbb8756e089beb4c43bbec53d0667de34212f048bdab10"
+
 [[package]]
 name = "syn"
 version = "1.0.109"
@@ -1226,6 +1234,15 @@ dependencies = [
  "serde",
 ]
 
+[[package]]
+name = "toml"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+dependencies = [
+ "serde",
+]
+
 [[package]]
 name = "tower-service"
 version = "0.3.2"
diff --git a/concepts/system.toml b/concepts/system.toml
deleted file mode 100644
index 4b8ab02..0000000
--- a/concepts/system.toml
+++ /dev/null
@@ -1,31 +0,0 @@
-[boot]
-# This package must be installed system wide
-init = "init_server"
-
-
-[boot.limine]
-default_entry = 1
-timeout = 0
-verbose = true
-interface_resolution = "1024x768x24"
-# Terminal related settings
-term_wallpaper = "boot:///background.bmp"
-term_background = "008080"
-
-[boot.limine.ableos]
-comment = "Default AbleOS boot entry."
-protocol = "limine"
-kernel_path = "boot:///kernel"
-kernel_cmdline = "baka=false foobles=true"
-resolution = "1024x768x24"
-
-[repositories]
-core = "https://git.ablecorp.us/AbleOS/core"
-userspace = "https://git.ablecorp.us/AbleOS/ableos_userland"
-
-
-[packages]
-[packages.init_server]
-version = "1.0"
-hash = ""
-repo = "core"
diff --git a/repbuild/Cargo.toml b/repbuild/Cargo.toml
index d7569a3..5aab09d 100644
--- a/repbuild/Cargo.toml
+++ b/repbuild/Cargo.toml
@@ -4,12 +4,15 @@ version = "0.2.0"
 edition = "2021"
 
 [dependencies]
+str-reader = "0.1.2"
 derive_more = "0.99"
 error-stack = "0.4"
-fatfs       = "0.3"
-hbasm.git   = "https://git.ablecorp.us/AbleOS/holey-bytes.git"
+fatfs = "0.3"
+toml = "0.5.2"
+hbasm.git = "https://git.ablecorp.us/AbleOS/holey-bytes.git"
+
 
 [dependencies.reqwest]
-version          = "0.11"
+version = "0.11"
 default-features = false
-features         = ["rustls-tls", "blocking"]
+features = ["rustls-tls", "blocking"]
diff --git a/repbuild/src/main.rs b/repbuild/src/main.rs
index f8871b8..3c0fa82 100644
--- a/repbuild/src/main.rs
+++ b/repbuild/src/main.rs
@@ -1,3 +1,5 @@
+use std::{fs, io::Write, process::exit};
+
 use {
     derive_more::Display,
     error_stack::{bail, report, Context, Report, Result, ResultExt},
@@ -116,6 +118,113 @@ fn assemble() -> Result<(), Error> {
 }
 
 fn get_fs() -> Result<FileSystem<impl ReadWriteSeek>, io::Error> {
+    let filename = "sysdata/system_config.toml";
+
+    // Read the contents of the file using a `match` block
+    // to return the `data: Ok(c)` as a `String`
+    // or handle any `errors: Err(_)`.
+    let contents = match fs::read_to_string(filename) {
+        // If successful return the files text as `contents`.
+        // `c` is a local variable.
+        Ok(c) => c,
+        // Handle the `error` case.
+        Err(_) => {
+            // Write `msg` to `stderr`.
+            eprintln!("Could not read file `{}`", filename);
+            // Exit the program with exit code `1`.
+            exit(1);
+        }
+    };
+    use toml::Value;
+
+    let mut limine_str = String::new();
+
+    let mut data: Value = toml::from_str(&contents).unwrap();
+    let boot_table = data.get_mut("boot");
+    let limine_table = boot_table.unwrap().get_mut("limine").unwrap();
+    let default_entry = limine_table.get("default_entry").unwrap();
+    let timeout = limine_table.get("timeout").unwrap();
+    let interface_resolution = limine_table.get("interface_resolution").unwrap();
+    let verbose = limine_table.get("verbose").unwrap();
+    let term_wallpaper = limine_table.get("term_wallpaper").unwrap();
+
+    let vb_post = match verbose.as_bool().unwrap() {
+        true => "yes",
+        false => "no",
+    };
+    let term_background = limine_table
+        .get("term_backdrop")
+        .unwrap_or(&Value::Integer(0));
+    let base = format!(
+        "DEFAULT_ENTRY={}
+TIMEOUT={}
+VERBOSE={}
+INTERFACE_RESOLUTION={}
+# Terminal related settings
+TERM_WALLPAPER={}
+TERM_BACKDROP={}
+",
+        default_entry,
+        timeout,
+        vb_post,
+        interface_resolution,
+        term_wallpaper.as_str().unwrap(),
+        term_background
+    );
+    limine_str.push_str(&base);
+
+    let boot_entries = limine_table.as_table_mut().unwrap();
+    let mut real_boot_entries = boot_entries.clone();
+    for (key, value) in boot_entries.into_iter() {
+        if !value.is_table() {
+            real_boot_entries.remove(key);
+        }
+    }
+
+    for (name, mut value) in real_boot_entries {
+        let comment = value.get("comment").unwrap();
+        let protocol = value.get("protocol").unwrap();
+        let resolution = value.get("resolution").unwrap();
+        let kernel_path = value.get("kernel_path").unwrap();
+        let kernel_cmdline = value.get("kernel_cmdline").unwrap();
+
+        let text_entry = format!(
+            "
+:{}
+    COMMENT={}
+    PROTOCOL={}
+    RESOLUTION={}
+    KERNEL_PATH={}
+    KERNEL_CMDLINE={}
+
+",
+            name,
+            comment.as_str().unwrap(),
+            protocol.as_str().unwrap(),
+            resolution.as_str().unwrap(),
+            kernel_path.as_str().unwrap(),
+            kernel_cmdline,
+        );
+
+        limine_str.push_str(&text_entry);
+
+        let modules = value.get_mut("modules").unwrap().as_table_mut().unwrap();
+        // let mut real_modules = modules.clone();
+
+        for (key, value) in modules.into_iter() {
+            if value.is_table() {
+                let path = value.get("path").unwrap();
+                let cmd_line = value.get("cmd_line").unwrap();
+                let a = format!(
+                    "    MODULE_PATH={}
+    MODULE_CMDLINE={}\n\n",
+                    path.as_str().unwrap(),
+                    cmd_line
+                );
+                limine_str.push_str(&a);
+            }
+        }
+    }
     let mut img = File::options()
         .read(true)
         .write(true)
@@ -127,8 +236,13 @@ fn get_fs() -> Result<FileSystem<impl ReadWriteSeek>, io::Error> {
     fatfs::format_volume(&mut img, FormatVolumeOptions::new())?;
 
     let fs = FileSystem::new(img, FsOptions::new())?;
+
     let bootdir = fs.root_dir().create_dir("efi")?.create_dir("boot")?;
 
+    let mut f = fs.root_dir().create_file("limine.cfg")?;
+    let a = f.write(limine_str.as_bytes())?;
+    drop(f);
+
     io::copy(
         &mut File::open("limine/BOOTX64.EFI")
             .map_err(Report::from)
@@ -144,7 +258,6 @@ fn get_fs() -> Result<FileSystem<impl ReadWriteSeek>, io::Error> {
     )?;
 
     for fpath in [
-        "sysdata/limine.cfg",
         "sysdata/background.bmp",
         "target/test-programs/failure.hbf",
         "target/test-programs/ecall.hbf",
diff --git a/sysdata/config.format b/sysdata/config.format
new file mode 100644
index 0000000..7be4f88
--- /dev/null
+++ b/sysdata/config.format
@@ -0,0 +1,10 @@
+Boolean
+UTF8 String
+Date Time (U128 seconds since the beginning of the universe)
+
+Binary Blob
+
+List<T>
+    Ordered/Unordered
+    Bound/Unbound
+
diff --git a/sysdata/limine.cfg b/sysdata/limine.cfg
index 1e6458c..14ad16e 100644
--- a/sysdata/limine.cfg
+++ b/sysdata/limine.cfg
@@ -12,7 +12,7 @@ TERM_BACKDROP=008080
 :AbleOS
     COMMENT=Default AbleOS boot entry.
     PROTOCOL=limine
-    KERNEL_PATH=${ABLEOS_KERNEL}_${ARCH}
+    KERNEL_PATH=boot:///kernel_${ARCH}
     # execute is an array of boot modules to execute
     KERNEL_CMDLINE=""
     # Setting a default resolution for the framebuffer
diff --git a/sysdata/system_config.toml b/sysdata/system_config.toml
new file mode 100644
index 0000000..01ac2d5
--- /dev/null
+++ b/sysdata/system_config.toml
@@ -0,0 +1,46 @@
+[boot]
+[boot.limine]
+default_entry = 1
+timeout = 0
+verbose = true
+interface_resolution = "1024x768x24"
+# Terminal related settings
+term_wallpaper = "boot:///background.bmp"
+term_background = "008080"
+
+[boot.limine.ableos]
+comment = "Default AbleOS boot entry."
+protocol = "limine"
+kernel_path = "boot:///kernel_${ARCH}"
+kernel_cmdline = ""
+resolution = "1024x768x24"
+
+
+[boot.limine.ableos.modules]
+[boot.limine.ableos.modules.failure]
+path = "boot:///failure.hbf"
+cmd_line = ""
+
+[boot.limine.ableos.modules.ecall]
+path = "boot:///ecall.hbf"
+cmd_line = ""
+
+[boot.limine.ableos.modules.main]
+path = "boot:///main.hbf"
+cmd_line = ""
+
+[boot.limine.ableos.modules.keyboard_driver]
+path = "boot:///keyboard_driver.hbf"
+cmd_line = "arch=${ARCH}"
+
+[boot.limine.ableos.modules.vfs_test]
+path = "boot:///vfs_test.hbf"
+cmd_line = ""
+
+[boot.limine.ableos.modules.limine_framebuffer_driver]
+path = "boot:///limine_framebuffer_driver.hbf"
+cmd_line = "height=10 width=10 arch=${ARCH}"
+
+[boot.limine.ableos.modules.serial_driver]
+path = "boot:///serial_driver.hbf"
+cmd_line = "arch=${ARCH}"
diff --git a/sysdata/test-programs/limine_framebuffer_driver.rhai b/sysdata/test-programs/limine_framebuffer_driver.rhai
index de642eb..aaf58da 100644
--- a/sysdata/test-programs/limine_framebuffer_driver.rhai
+++ b/sysdata/test-programs/limine_framebuffer_driver.rhai
@@ -56,6 +56,7 @@ fn clear() {
 //   rect(r0, r0, 1024, 768, 0xff222222);
 
   let BUFFER = 0xFFFF8000C0000000;
+  // let BUFFER = 0xFFFF8000BC430000;
   // on arm the FB is at 0xFFFF8000BC430000
   // FIXME: get the framebuffer pointer from the starting arguments