So I enabled repos.conf config and didn't notice repos.conf is a file on my system: # layman -a zx2c4 * Adding overlay... * Running Git... # ( cd /var/db/repos && /usr/bin/git clone http://git.zx2c4.com/portage /var/db/repos/zx2c4 ) Cloning into '/var/db/repos/zx2c4'... Checking connectivity... done. * Running Git... # ( cd /var/db/repos/zx2c4 && /usr/bin/git config user.name "layman" ) * Running Git... # ( cd /var/db/repos/zx2c4 && /usr/bin/git config user.email "layman@localhost" ) * ReposConf: ConfigHandler.read(); Failed to read "/etc/portage/repos.conf/layman.conf". * File not found. * CLI: Errors occurred processing action add * ReposConf: ConfigHandler.read(); Failed to read "/etc/portage/repos.conf/layman.conf". * File not found. * Exception caught installing repository 'zx2c4' : 'ConfigHandler' object has no attribute 'repo_conf' So I fixed the issue and try again: # layman -a zx2c4 * Adding overlay... * Repository 'zx2c4' was already installed * CLI: Errors occurred processing action add * Repository 'zx2c4' was already installed Ok, so I want to remove it: # layman -d zx2c4 * Deleting selected overlay(s)... * Deleting directory "/var/db/repos/zx2c4" * ReposConf: ConfigHandler.read(); Failed to read "/etc/portage/repos.conf/layman.conf". * File not found. * CLI: Errors occurred processing action delete * ReposConf: ConfigHandler.read(); Failed to read "/etc/portage/repos.conf/layman.conf". * File not found. * Exception caught removing repository 'zx2c4': * 'ConfigHandler' object has no attribute 'repo_conf' And re-add it: # layman -a zx2c4 * Adding overlay... * Repository 'zx2c4' was already installed * CLI: Errors occurred processing action add * Repository 'zx2c4' was already installed Errr... # layman -d zx2c4 * Deleting selected overlay(s)... * Directory /var/db/repos/zx2c4 did not exist, no files deleted. * ReposConf: ConfigHandler.read(); Failed to read "/etc/portage/repos.conf/layman.conf". * File not found. * CLI: Errors occurred processing action delete * ReposConf: ConfigHandler.read(); Failed to read "/etc/portage/repos.conf/layman.conf". * File not found. * Exception caught removing repository 'zx2c4': * 'ConfigHandler' object has no attribute 'repo_conf' So I pretty much get stuck until I create repos.conf/layman.conf myself. I don't think this is good :).
Sanity checks have been added to ensure layman gracefully dies when confronted with this type of issue instead of generating a traceback. Although, it should be worth noting that repos.conf shouldn't be a file to ensure both portage and layman can write overlay info to files in that dir :)
Correction, it will send logical exceptions as opposed to the one you've encountered that don't seem to make much sense for the issue at hand.
2.4.1 is out which resolves this issue, therefore, I'm resolving the bug.