diff --git a/Cargo.lock b/Cargo.lock
index 09bec59f..9884dadf 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1114,6 +1114,7 @@ dependencies = [
  "cc",
  "dunce",
  "etcetera",
+ "helix-stdx",
  "libloading",
  "log",
  "once_cell",
diff --git a/helix-loader/Cargo.toml b/helix-loader/Cargo.toml
index 18747538..08da7f29 100644
--- a/helix-loader/Cargo.toml
+++ b/helix-loader/Cargo.toml
@@ -15,6 +15,8 @@ name = "hx-loader"
 path = "src/main.rs"
 
 [dependencies]
+helix-stdx = { path = "../helix-stdx" }
+
 anyhow = "1"
 serde = { version = "1.0", features = ["derive"] }
 toml = "0.7"
diff --git a/helix-loader/src/lib.rs b/helix-loader/src/lib.rs
index 991504fb..f8fac670 100644
--- a/helix-loader/src/lib.rs
+++ b/helix-loader/src/lib.rs
@@ -53,7 +53,8 @@ fn prioritize_runtime_dirs() -> Vec<PathBuf> {
     rt_dirs.push(conf_rt_dir);
 
     if let Ok(dir) = std::env::var("HELIX_RUNTIME") {
-        rt_dirs.push(dir.into());
+        let dir = path::expand_tilde(dir);
+        rt_dirs.push(path::normalize(dir));
     }
 
     // If this variable is set during build time, it will always be included