Reading this concept it is clear that we need to change import to allow enum strings.
https://github.com/dlang/phobos/pull/8309
It can be done with mixins but the code becomes ugly. Instead compile time string enums should be accepted in the import argument.
The question is how to do this.
enum string somewhere = "location";
import this.that.somewhere.here;
This might fool many users and they start to look for the folder "somewhere" which might not exist. In order to clarify that you are using a compile time string you can be more obvious like.
import this.that.enum(somewhere).here;
Now it is more obvious that somewhere is a variable.
Another thing that I also noticed is how the version identifiers are just a sea of identifiers, many not orthogonal. Wouldn't it be time to let version have an argument. Like
version(OS == Windows)
{
}
This would it simpler for the import, then we could use.
import this.that.version(OS).here;