{ 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.readDir path; in concatMap (name: let full = "${path}/${name}"; in if builtins.isDir full then recursiveListFiles full else [ full ] ) (builtins.attrNames 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 = builtins.substring (builtins.stringLength assetPath + 1) (builtins.stringLength f - builtins.stringLength assetPath - 1) 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 ]; }; }; }