{
  lib,
  ...
}:
{
  home.file =
    let
      listFilesRecursive =
        dir: acc:
        lib.flatten (
          lib.mapAttrsToList (
            k: v: if v == "regular" then "${acc}${k}" else listFilesRecursive dir "${acc}${k}/"
          ) (builtins.readDir "${dir}/${acc}")
        );

      toHomeFiles =
        dir:
        builtins.listToAttrs (
          map (x: {
            name = "./.config/${x}";
            value = {
              source = "${dir}/${x}";
              force = true;
              recursive = true;
            };
          }) (listFilesRecursive dir "")
        );
    in
    toHomeFiles ../../dotfiles;
}