diff --git a/tools/rustfmt/src/lib.rs b/tools/rustfmt/src/lib.rs
index 2d8accc..9658a76 100644
--- a/tools/rustfmt/src/lib.rs
+++ b/tools/rustfmt/src/lib.rs
@@ -21,14 +21,18 @@
 pub fn parse_rustfmt_config() -> RustfmtConfig {
     let runfiles = runfiles::Runfiles::create().unwrap();
 
-    let rustfmt = runfiles.rlocation(concat!(env!("RUSTFMT_WORKSPACE"), "/", env!("RUSTFMT")));
+    let rustfmt = runfiles.rlocation(format!(
+        "{}/{}",
+        runfiles.current_repository(),
+        env!("RUSTFMT")
+    ));
     if !rustfmt.exists() {
         panic!("rustfmt does not exist at: {}", rustfmt.display());
     }
 
-    let config = runfiles.rlocation(concat!(
-        env!("RUSTFMT_WORKSPACE"),
-        "/",
+    let config = runfiles.rlocation(format!(
+        "{}/{}",
+        runfiles.current_repository(),
         env!("RUSTFMT_CONFIG")
     ));
     if !config.exists() {
@@ -58,7 +62,6 @@
 
     let mut lines: Vec<String> = content
         .split('\n')
-        .into_iter()
         .filter(|s| !s.is_empty())
         .map(|s| s.to_owned())
         .collect();
@@ -76,7 +79,7 @@
         edition,
         sources: lines
             .into_iter()
-            .map(|src| runfiles.rlocation(format!("{}/{}", env!("RUSTFMT_WORKSPACE"), src)))
+            .map(|src| runfiles.rlocation(format!("{}/{}", runfiles.current_repository(), src)))
             .collect(),
     }
 }
@@ -95,7 +98,14 @@
     std::env::var("RUSTFMT_MANIFESTS")
         .map(|var| {
             var.split(PATH_ENV_SEP)
-                .map(|path| runfiles.rlocation(format!("{}/{}", env!("RUSTFMT_WORKSPACE"), path)))
+                .filter_map(|path| match path.is_empty() {
+                    true => None,
+                    false => Some(runfiles.rlocation(format!(
+                        "{}/{}",
+                        runfiles.current_repository(),
+                        path
+                    ))),
+                })
                 .collect()
         })
         .unwrap_or_default()
diff --git a/tools/rustfmt/src/main.rs b/tools/rustfmt/src/main.rs
index 5ca10f8..3b2af85 100644
--- a/tools/rustfmt/src/main.rs
+++ b/tools/rustfmt/src/main.rs
@@ -75,12 +75,10 @@
         //     Get all source files.
         //         Get direct dependencies.
         //             Get all targets with the specified `edition` attribute.
-        //             Except for targets tagged with `norustfmt`.
+        //             Except for targets tagged with `norustfmt`, `no-rustfmt`, or `no-format`.
         //             And except for targets with a populated `crate` attribute since `crate` defines edition for this target
         format!(
-            r#"let scope = set({scope}) in filter("^//.*\.rs$", kind("source file", deps(attr(edition, "{edition}", $scope) except attr(tags, "(^\[|, )(no-format|no-rustfmt|norustfmt)(, |\]$)", $scope) + attr(crate, ".*", $scope), 1)))"#,
-            edition = edition,
-            scope = scope,
+            r#"let scope = set({scope}) in filter("^//.*\.rs$", kind("source file", deps(attr(edition, "{edition}", $scope) except attr(tags, "(^\[|, )(no-format|no-rustfmt|norustfmt)(, |\]$)", $scope) except attr(crate, ".*", $scope), 1)))"#,
         ),
         "--keep_going".to_owned(),
         "--noimplicit_deps".to_owned(),
