{ fetchgit , lib , findutils , coreutils }: let # dotfiles = fetchgit (rec { # name = "dotfiles-${rev}"; # url = git://git.yggdrasil.li/dotfiles; # rev = "ece2c194432de29699c457c98e7b7db7ff2733c8"; # sha256 = "c98beb620d02ab7d6671976b2a85fef2c2c7d7047794ac599c984e9fc65da6e2"; # }); dotfiles = ../dotfiles; setupUser = name : { name = name.dir; value = '' cd ${dotfiles} ${findutils}/bin/find . -type d -print0 | ${findutils}/bin/xargs -0 -I '{}' -- ${coreutils}/bin/install -o ${name.owner} -g ${name.group} -d "${name.dir}/{}" ${findutils}/bin/find . -type f \( -not -path './.config/systemd/*' \) -print0 | ${findutils}/bin/xargs -0 -I '{}' -- ln -s -f "${dotfiles}/{}" "${name.dir}/{}" ${findutils}/bin/find . -type f \( -path './.config/systemd/*' \) -print0 | ${findutils}/bin/xargs -0 -I '{}' -- cp -f "${dotfiles}/{}" "${name.dir}/{}" ${findutils}/bin/find . -type f -print0 | ${findutils}/bin/xargs -0 -I '{}' -- chown -h "${name.owner}:${name.group}" "${name.dir}/{}" ''; }; in names : lib.listToAttrs (builtins.map setupUser names)