diff --git a/src/libstore/machines.cc b/src/libstore/machines.cc
index 17b9c6860..e69802e49 100644
--- a/src/libstore/machines.cc
+++ b/src/libstore/machines.cc
@@ -106,13 +106,14 @@ static std::vector<std::string> expandBuilderLines(const std::string & builders)
 {
     std::vector<std::string> result;
     for (auto line : tokenizeString<std::vector<std::string>>(builders, "\n")) {
-        trim(line);
         line.erase(std::find(line.begin(), line.end(), '#'), line.end());
         for (auto entry : tokenizeString<std::vector<std::string>>(line, ";")) {
-            if (entry.empty()) continue;
+            entry = trim(entry);
 
-            if (entry[0] == '@') {
-                const std::string path = trim(std::string(entry, 1));
+            if (entry.empty()) {
+                // skip blank entries
+            } else if (entry[0] == '@') {
+                const std::string path = trim(std::string_view{entry}.substr(1));
                 std::string text;
                 try {
                     text = readFile(path);
diff --git a/tests/unit/libstore/machines.cc b/tests/unit/libstore/machines.cc
index dc878c877..d3bf40ea7 100644
--- a/tests/unit/libstore/machines.cc
+++ b/tests/unit/libstore/machines.cc
@@ -83,6 +83,20 @@ TEST(machines, getMachinesWithCommentsAndSemicolonSeparator) {
     EXPECT_THAT(actual, Contains(Field(&Machine::storeUri, AuthorityMatches("nix@scabby.labs.cs.uu.nl"))));
 }
 
+TEST(machines, getMachinesWithFunnyWhitespace) {
+    auto actual = Machine::parseConfig({},
+        "        # commment ; comment\n"
+        "   nix@scratchy.labs.cs.uu.nl ; nix@itchy.labs.cs.uu.nl   \n"
+        "\n    \n"
+        "\n ;;; \n"
+        "\n ; ; \n"
+        "nix@scabby.labs.cs.uu.nl\n\n");
+    EXPECT_THAT(actual, SizeIs(3));
+    EXPECT_THAT(actual, Contains(Field(&Machine::storeUri, AuthorityMatches("nix@scratchy.labs.cs.uu.nl"))));
+    EXPECT_THAT(actual, Contains(Field(&Machine::storeUri, AuthorityMatches("nix@itchy.labs.cs.uu.nl"))));
+    EXPECT_THAT(actual, Contains(Field(&Machine::storeUri, AuthorityMatches("nix@scabby.labs.cs.uu.nl"))));
+}
+
 TEST(machines, getMachinesWithCorrectCompleteSingleBuilder) {
     auto actual = Machine::parseConfig({},
         "nix@scratchy.labs.cs.uu.nl     i686-linux      "