const cfg = ( dirs: ( bin : "bin", src : "src", lib : ".lib", cache : ".cache", ), #:: defaults.dirs ) #:: 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 # Usage const ok = Config.default() const empty = Config() # Bad idea, but sure. here is the wall 😦