This problem arose trying to run a Clojure project on WSL2 from a project originally built on Windoze.
The original :local/root paths started with "C:/..." but on WSL2 (running Ubuntu 22) they need to be converted to "/mnt/c/..." to run.
Manually changing them makes them work, but it's a hassle. Won't even mention source control woes.
Imagining automatic conversion rules feels dreadful, it would be better if we could simply specify OS-specific values. Maybe something like:
{some.ns/some-lib {:local/root
{:local-path/windows "C:/..."
:local-path/linux "/mnt/c/..."
:local-path/macos "/some/other/dev/path"}}}
At runtime, the correct local-path should be selected for the value based on the OS on which the JVM is running.
Surely this can also be a problem on MacOS running Parallels, where file system integration is also tight but the Guest OS can have different values for the same paths on the Host. And knowing what these might be a priori is probably not practical, given the Cambrian explosion of Linux distributions, Windows editions, and MacOS versions. It would be the developer's responsibility to set these values based on a concrete development setup. So, IMHO, it would be enough optionally to offer some ability to provide a map with certain high-level OS options in place of a string.
It also seems obvious to me that these values will always be developer-centric and possibly subject to employer devops policies.
(Yes, this is my implementation bias, but I would gladly support any general way to handle this problem.)