Have a dotfiles directory with all your stuff in it? Have homemaker put everything in its right place.
homemaker in action

cargo install hmcargo install --git https://github.com/hlmtre/homemakercargo install --path .config.toml file either anywhere (and specify it when you run hm) or in ~/.config/homemaker/.[[obj]] file = 'tmux.conf' source = '~/dotfiles/.tmux.conf' destination = '~/.tmux.conf' method = 'symlink'
[[obj]] task = 'zt' solution = 'cd ~/dotfiles/zt && git pull' dependencies = 'maim, slop'
[[obj]] task = 'maim_dependencies' solution = 'sudo apt install -y libxfixes-dev libglm-dev libxrandr-dev libglew-dev libegl1-mesa-dev libxcomposite-dev'
[[obj]] task = 'maim' source = '~/dotfiles/zt/maim' solution = 'cd ~/dotfiles/zt/maim; make clean; cmake -DCMAKEINSTALLPREFIX="/usr" ./ && make && sudo make install' method = 'execute' dependencies = 'maim_dependencies'
[[obj]] task = 'slop' source = '~/dotfiles/zt/slop' solution = 'cd ~/dotfiles/zt/slop; make clean; cmake -DCMAKEINSTALLPREFIX="/usr" ./ && make && sudo make install' method = 'execute'
[[obj]]
task = 'slop'
source = '~/dotfiles/zt/slop'
solution = 'cd ~/dotfiles/zt/slop; make clean; cmake -DCMAKEINSTALLPREFIX="/usr" ./ && make && sudo make install'
method = 'execute'
``
3.hm ~/path/to/your/config.toml`
config.toml (the one i use, actually), maim depends on having some graphics libraries installed.
i created a task called maim_dependencies, and hm will complete maim_dependencies before attempting to complete maim.zt has two dependencies: maim and slop. hm will complete the entire dependency tree below zt before atttempting zt.homemaker complains if the dependency tree cannot be solved, and hopefully shows you a handy explanation why.

thanks to actual good code:\ serde\ toml\ symlink\ solvent\ indicatif\ console