{ lib, config, ... }: let username = config.defaultUser or "henrov"; # Absolute path to assets folder assetPath = ../../../assets/copy_2_home; # Helper: recursively list all files in assetPath recursiveListFiles = path: let entries = builtins.attrNames (builtins.readDir path); in lib.concatMap (name: let full = "${path}/${name}"; in if builtins.isDir full then recursiveListFiles full else [ full ] ) entries; # All files in the folder (full paths) allFiles = recursiveListFiles assetPath; # Map each file to a home.file entry homeFiles = lib.genAttrs allFiles (f: { # Compute relative path from assetPath relative = lib.strings.replaceStrings [ "${assetPath}/" ] [ "" ] f; name = relative; # target path in $HOME value = { source = f; }; # source path }); in { _module.args.hmUsers = { ${username} = { # Merge with other modules safely home.file = lib.mkMerge [ homeFiles ]; }; }; }