use MooseX::Declare; role My::DirOption { requires '_build_rootdir'; has rootdir => ( isa => 'Str', is => 'rw', lazy => 1, builder => '_build_rootdir', ); } # Make meta attribute trait known to Moose under a short name class Moose::Meta::Attribute::Custom::Trait::DirOption { sub register_implementation {'My::DirOption'} } class My::Config { use strict; use warnings; has testdir => ( traits => ['DirOption'], isa => 'Str', is => 'rw', ); ## This is the wrong place for the builder! method _build_rootdir() { return '/home/paulatreides'; } } 1;