const cfg = ( dirs: ( bin : "bin", src : "src", lib : ".lib", cache : ".cache", ), #:: defaults.dirs zig: ( bin : "zig", dir : ".zig", ), #:: defaults.zig nim: ( bin : "nim", dir : ".nim", ), #:: defaults.nim nimble: ( bin : "nimble", dir : ".nimble", ), #:: defaults.nimble ) #:: defaults type Dirs  = object bin :PathLike= cfg.dirs.bin src :PathLike= cfg.dirs.src lib :PathLike= cfg.dirs.bin/cfg.dirs.lib cache :PathLike= cfg.dirs.bin/cfg.dirs.cache type Config  = object dirs :config.Dirs= config.Dirs.default() type BuildTarget = object cfg :Config # Bad idea, but sure. here is the wall 😦