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