diff --git a/.gitignore b/.gitignore
index 972e197..6219808 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,5 @@
 .idea
 # Cargo.lock
 *.log
-.direnv
\ No newline at end of file
+.direnv
+**/result
\ No newline at end of file
diff --git a/Cargo.lock b/Cargo.lock
index b2f9fb1..bcfec8c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -103,6 +103,15 @@ version = "1.0.97"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f"
 
+[[package]]
+name = "approx"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f2a05fd1bd10b2527e20a2cd32d8873d115b8b39fe219ee25f42a8aca6ba278"
+dependencies = [
+ "num-traits",
+]
+
 [[package]]
 name = "arrayref"
 version = "0.3.9"
@@ -213,16 +222,6 @@ dependencies = [
  "objc2",
 ]
 
-[[package]]
-name = "bstr"
-version = "1.11.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0"
-dependencies = [
- "memchr",
- "serde",
-]
-
 [[package]]
 name = "bumpalo"
 version = "3.17.0"
@@ -310,6 +309,16 @@ version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
 
+[[package]]
+name = "cgmath"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a98d30140e3296250832bbaaff83b27dcd6fa3cc70fb6f1f3e5c9c0023b5317"
+dependencies = [
+ "approx",
+ "num-traits",
+]
+
 [[package]]
 name = "chrono"
 version = "0.4.40"
@@ -514,24 +523,12 @@ version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53"
 
-[[package]]
-name = "either"
-version = "1.15.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
-
 [[package]]
 name = "endian-type"
 version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
 
-[[package]]
-name = "env_home"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe"
-
 [[package]]
 name = "equivalent"
 version = "1.0.2"
@@ -1154,25 +1151,6 @@ version = "0.4.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
 
-[[package]]
-name = "lua-src"
-version = "547.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1edaf29e3517b49b8b746701e5648ccb5785cde1c119062cbabbc5d5cd115e42"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "luajit-src"
-version = "210.5.12+a4f56a4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3a8e7962a5368d5f264d045a5a255e90f9aa3fc1941ae15a8d2940d42cac671"
-dependencies = [
- "cc",
- "which",
-]
-
 [[package]]
 name = "malloc_buf"
 version = "0.0.6"
@@ -1221,34 +1199,6 @@ dependencies = [
  "adler2",
 ]
 
-[[package]]
-name = "mlua"
-version = "0.10.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3f763c1041eff92ffb5d7169968a327e1ed2ebfe425dac0ee5a35f29082534b"
-dependencies = [
- "anyhow",
- "bstr",
- "either",
- "mlua-sys",
- "num-traits",
- "parking_lot",
- "rustc-hash 2.1.1",
-]
-
-[[package]]
-name = "mlua-sys"
-version = "0.6.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1901c1a635a22fe9250ffcc4fcc937c16b47c2e9e71adba8784af8bca1f69594"
-dependencies = [
- "cc",
- "cfg-if",
- "lua-src",
- "luajit-src",
- "pkg-config",
-]
-
 [[package]]
 name = "naga"
 version = "24.0.0"
@@ -1263,7 +1213,7 @@ dependencies = [
  "hexf-parse",
  "indexmap",
  "log",
- "rustc-hash 1.1.0",
+ "rustc-hash",
  "spirv",
  "strum",
  "termcolor",
@@ -1849,12 +1799,6 @@ version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
 
-[[package]]
-name = "rustc-hash"
-version = "2.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
-
 [[package]]
 name = "rustix"
 version = "0.38.44"
@@ -2602,7 +2546,7 @@ dependencies = [
  "parking_lot",
  "profiling",
  "raw-window-handle",
- "rustc-hash 1.1.0",
+ "rustc-hash",
  "smallvec",
  "thiserror 2.0.12",
  "wgpu-hal",
@@ -2645,7 +2589,7 @@ dependencies = [
  "range-alloc",
  "raw-window-handle",
  "renderdoc-sys",
- "rustc-hash 1.1.0",
+ "rustc-hash",
  "smallvec",
  "thiserror 2.0.12",
  "wasm-bindgen",
@@ -2667,18 +2611,6 @@ dependencies = [
  "web-sys",
 ]
 
-[[package]]
-name = "which"
-version = "7.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2774c861e1f072b3aadc02f8ba886c26ad6321567ecc294c935434cad06f1283"
-dependencies = [
- "either",
- "env_home",
- "rustix 0.38.44",
- "winsafe",
-]
-
 [[package]]
 name = "winapi"
 version = "0.3.9"
@@ -3055,12 +2987,6 @@ dependencies = [
  "memchr",
 ]
 
-[[package]]
-name = "winsafe"
-version = "0.0.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904"
-
 [[package]]
 name = "write16"
 version = "1.0.0"
@@ -3176,6 +3102,7 @@ dependencies = [
  "anyhow",
  "backtrace",
  "bytemuck",
+ "cgmath",
  "chrono",
  "colored 3.0.0",
  "crashreport",
@@ -3183,7 +3110,6 @@ dependencies = [
  "futures",
  "lazy_static",
  "log",
- "mlua",
  "once_cell",
  "parking_lot",
  "regex",
diff --git a/build.nix b/build.nix
index 9947156..f1f7962 100644
--- a/build.nix
+++ b/build.nix
@@ -1,30 +1,37 @@
-{ lib, rustPlatform, nix-gitignore, bash, makeWrapper, dav1d, pkg-config }: 
-let 
-	version = (builtins.fromTOML (builtins.readFile ./engine/Cargo.toml)).package.version;
-	src = nix-gitignore.gitignoreSource [] ./.;
-in 
-rustPlatform.buildRustPackage rec {
-	pname = "zenyx";
-	inherit src version;
-	cargoLock.lockFile = ./Cargo.lock;
-	nativeBuildInputs = [
-		makeWrapper
-		pkg-config
-	];
-	buildInputs = [
-		bash
-		dav1d
-	];
-	doCheck = false;
+{
+  lib,
+  rustPlatform,
+  nix-gitignore,
+  bash,
+  makeWrapper,
+  dav1d,
+  pkg-config,
+}: let
+  version = (builtins.fromTOML (builtins.readFile ./engine/Cargo.toml)).package.version;
+  src = nix-gitignore.gitignoreSource [] ./.;
+in
+  rustPlatform.buildRustPackage rec {
+    pname = "zenyx";
+    inherit src version;
+    cargoLock.lockFile = ./Cargo.lock;
+    nativeBuildInputs = [
+      makeWrapper
+      pkg-config
+    ];
+    buildInputs = [
+      bash
+      dav1d
+    ];
+    doCheck = false;
 
-	fixupPhase = ''
-		wrapProgram $out/bin/${pname} --set PATH ${bash}/bin:\$PATH
-	'';
+    fixupPhase = ''
+      wrapProgram $out/bin/${pname} --set PATH ${bash}/bin:\$PATH
+    '';
 
-	meta = {
-		description = "Test";
-		license = lib.licenses.mit;
-		platforms = lib.platforms.linux;
-		mainProgram = "zenyx";
-	};
-}
+    meta = {
+      description = "Test";
+      license = lib.licenses.mit;
+      platforms = lib.platforms.linux;
+      mainProgram = "zenyx";
+    };
+  }
diff --git a/engine/src/core/panic.rs b/engine/src/core/panic.rs
index b7758bb..3091ff4 100644
--- a/engine/src/core/panic.rs
+++ b/engine/src/core/panic.rs
@@ -33,8 +33,6 @@ pub fn set_panic_hook() {
                 default_hook(info);
                 std::process::exit(0);
             });
-            
-            // Instead of using payload_as_str(), downcast the panic payload:
             let payload = info.payload();
             let payload_str = if let Some(s) = payload.downcast_ref::<&str>() {
                 *s
@@ -65,7 +63,6 @@ https://github.com/Zenyx-Engine/Zenyx/issues
 We take privacy seriously, and do not perform any automated error collection. In order to improve the software, we rely on people to submit reports.
 
 Thank you kindly!", log_path.display());
-            
             println!("{}", panic_msg.red().bold());
             println!("\nFor future reference, the error summary is as follows:\n{}", payload_str.red().bold());
             std::process::exit(0);
diff --git a/engine/src/core/repl/commands.rs b/engine/src/core/repl/commands.rs
index 8eff6ca..c52b117 100644
--- a/engine/src/core/repl/commands.rs
+++ b/engine/src/core/repl/commands.rs
@@ -33,7 +33,7 @@ impl Command for HelpCommand {
             }
         }
         Ok(())
-    }   
+    }
 
     fn undo(&self) {}
 
diff --git a/engine/src/main.rs b/engine/src/main.rs
index 4ad7231..031b75e 100644
--- a/engine/src/main.rs
+++ b/engine/src/main.rs
@@ -1,8 +1,4 @@
-use core::{
-    panic::set_panic_hook,
-    repl::setup,
-    splash, workspace,
-};
+use core::{panic::set_panic_hook, repl::setup, splash, workspace};
 
 use colored::Colorize;
 use log::info;
@@ -22,7 +18,10 @@ async fn main() -> anyhow::Result<()> {
     info!("Type 'help' for a list of commands.");
 
     let repl_thread = std::thread::spawn(|| {
-        let rt = runtime::Builder::new_current_thread().enable_all().build().unwrap();
+        let rt = runtime::Builder::new_current_thread()
+            .enable_all()
+            .build()
+            .unwrap();
         rt.block_on(core::repl::input::handle_repl())
     });
 
diff --git a/flake.lock b/flake.lock
index 41a8be7..59dab09 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1,5 +1,50 @@
 {
   "nodes": {
+    "alejandra": {
+      "inputs": {
+        "fenix": "fenix",
+        "flakeCompat": "flakeCompat",
+        "nixpkgs": [
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1730688725,
+        "narHash": "sha256-g0SSfTWZ5mtMOpQic+eqq9sXMy1E/7yKxxfupZd9V4A=",
+        "owner": "kamadorueda",
+        "repo": "alejandra",
+        "rev": "2bb91e309ca99656addff5c74545acbf5813636d",
+        "type": "github"
+      },
+      "original": {
+        "owner": "kamadorueda",
+        "ref": "3.1.0",
+        "repo": "alejandra",
+        "type": "github"
+      }
+    },
+    "fenix": {
+      "inputs": {
+        "nixpkgs": [
+          "alejandra",
+          "nixpkgs"
+        ],
+        "rust-analyzer-src": "rust-analyzer-src"
+      },
+      "locked": {
+        "lastModified": 1730615655,
+        "narHash": "sha256-2HBR3zLn57LXKNRtxBb+O+uDqHM4n0pz51rPayMl4cg=",
+        "owner": "nix-community",
+        "repo": "fenix",
+        "rev": "efeb50e2535b17ffd4a135e6e3e5fd60a525180c",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nix-community",
+        "repo": "fenix",
+        "type": "github"
+      }
+    },
     "flake-compat": {
       "locked": {
         "lastModified": 1733328505,
@@ -14,6 +59,22 @@
         "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
       }
     },
+    "flakeCompat": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1696426674,
+        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+        "type": "github"
+      },
+      "original": {
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "type": "github"
+      }
+    },
     "nixpkgs": {
       "locked": {
         "lastModified": 1742422364,
@@ -48,12 +109,30 @@
     },
     "root": {
       "inputs": {
+        "alejandra": "alejandra",
         "flake-compat": "flake-compat",
         "nixpkgs": "nixpkgs",
         "rust-overlay": "rust-overlay",
         "utils": "utils"
       }
     },
+    "rust-analyzer-src": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1730555913,
+        "narHash": "sha256-KNHZUlqsEibg3YtfUyOFQSofP8hp1HKoY+laoesBxRM=",
+        "owner": "rust-lang",
+        "repo": "rust-analyzer",
+        "rev": "f17a5bbfd0969ba2e63a74505a80e55ecb174ed9",
+        "type": "github"
+      },
+      "original": {
+        "owner": "rust-lang",
+        "ref": "nightly",
+        "repo": "rust-analyzer",
+        "type": "github"
+      }
+    },
     "rust-overlay": {
       "inputs": {
         "nixpkgs": "nixpkgs_2"
diff --git a/flake.nix b/flake.nix
index 83b822d..e667da5 100644
--- a/flake.nix
+++ b/flake.nix
@@ -1,50 +1,67 @@
 {
-	description = "Zenyx - A WSYWIG game engine written in rust ";
-	inputs = {
-		nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
-		utils.url = "github:numtide/flake-utils";
+  description = "Zenyx - A WSYWIG game engine written in rust ";
+  inputs = {
+    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+    utils.url = "github:numtide/flake-utils";
     rust-overlay.url = "github:oxalica/rust-overlay";
     flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz";
-	};
+    alejandra.url = "github:kamadorueda/alejandra/3.1.0";
+    alejandra.inputs.nixpkgs.follows = "nixpkgs";
+  };
 
-	outputs = { self, nixpkgs, utils,rust-overlay, ... }: {
-		overlays.default = final: prev: {
-			zenyx = final.callPackage ./build.nix {};
-		};
-	}
-	// 
-	utils.lib.eachDefaultSystem (system:
-		let pkgs = import nixpkgs {
-			inherit system;
-			overlays = [self.overlays.default (import rust-overlay) ];
-		};
-		in {
-			packages = {
-				inherit (pkgs) zenyx;
-				default = pkgs.zenyx;
-			};
-
-			devShells.default = pkgs.mkShell {
-				name = "zenyx";
-				nativeBuildInputs = with pkgs; [  
-        (rust-bin.selectLatestNightlyWith (toolchain: toolchain.default.override {
-          extensions = [ "cargo" "clippy" ];
-          # targets = [ "arm-unknown-linux-gnueabihf" ];
-        }))
-					pkg-config
-				];
+  outputs = {
+    self,
+    nixpkgs,
+    utils,
+    rust-overlay,
+    alejandra,
+    ...
+  }:
+    {
+      overlays.default = final: prev: {
+        zenyx = final.callPackage ./build.nix {};
+      };
+    }
+    // utils.lib.eachDefaultSystem (
+      system: let
+        pkgs = import nixpkgs {
+          inherit system;
+          overlays = [
+            self.overlays.default
+            (import rust-overlay)
+          ];
+        };
         buildInputs = with pkgs; [
-            vulkan-loader
-            wayland
-            libxkbcommon
-            xorg.libXcursor
-            xorg.libXrandr
-            xorg.libXi
-            xorg.libX11
-            xorg.libxcb
-            pkg-config
+          vulkan-loader
+          wayland
+          libxkbcommon
+          xorg.libXcursor
+          xorg.libXrandr
+          xorg.libXi
+          xorg.libX11
+          xorg.libxcb
+          pkg-config
         ];
-			};
-		}
-	);
+      in {
+        packages = {
+          inherit (pkgs) zenyx;
+          default = pkgs.zenyx;
+        };
+
+        devShells.default = pkgs.mkShell {
+          name = "zenyx";
+          nativeBuildInputs = with pkgs; [
+            rust-bin.stable.latest.default
+            pkg-config
+          ];
+          buildInputs = buildInputs;
+          shellHook = ''
+            export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${builtins.toString (pkgs.lib.makeLibraryPath buildInputs)}";
+            echo "Rust version: $(rustc --version)";
+          '';
+        };
+
+        formatter = alejandra.packages.${system}.default;
+      }
+    );
 }
diff --git a/shell.nix b/shell.nix
index 91f1da2..3899c24 100644
--- a/shell.nix
+++ b/shell.nix
@@ -1,13 +1,15 @@
-(import
+(
+  import
   (
     let
       lock = builtins.fromJSON (builtins.readFile ./flake.lock);
       nodeName = lock.nodes.root.inputs.flake-compat;
     in
-    fetchTarball {
-      url = lock.nodes.${nodeName}.locked.url or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.${nodeName}.locked.rev}.tar.gz";
-      sha256 = lock.nodes.${nodeName}.locked.narHash;
-    }
+      fetchTarball {
+        url = lock.nodes.${nodeName}.locked.url or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.${nodeName}.locked.rev}.tar.gz";
+        sha256 = lock.nodes.${nodeName}.locked.narHash;
+      }
   )
-  { src = ./.; }
-).shellNix
\ No newline at end of file
+  {src = ./.;}
+)
+.shellNix