diff --git a/lib/types.nix b/lib/types.nix
index 17c1688fa..45c009893 100644
--- a/lib/types.nix
+++ b/lib/types.nix
@@ -539,7 +539,7 @@ rec {
   # POSIX.1‐2013, 3.278 Portable Filename Character Set
   filename = mkOptionType {
     name = "POSIX filename";
-    check = test "([0-9A-Za-z._])[0-9A-Za-z._-]*";
+    check = test "[0-9A-Za-z._][0-9A-Za-z._-]*";
     merge = mergeOneOption;
   };