{ lib, config, pkgs, flakeRoot, ... }: let username = config.defaultUser or "henrov"; homeDir = config.home.homeDirectory or "/home/${username}"; # Absolute path to the assets folder assetPath = "${flakeRoot}/assets/copy_2_home"; # Helper function to recursively list files in a directory recursiveFiles = path: let entries = builtins.attrNames (builtins.readDir path); in lib.concatMap (name: let full = "${path}/${name}"; in if builtins.isDir full then recursiveFiles full else [ full ] ) entries; # All files in assets folder allFiles = recursiveFiles assetPath; # Map files to home.file entries homeFiles = lib.genAttrs allFiles (f: let relative = lib.replaceStrings [ "${assetPath}/" ] [ "" ] f; in { name = relative; value = { source = f; }; }); in { _module.args.hmUsers = { ${username} = { home.file = lib.mkMerge [ homeFiles ]; }; }; }