{ lib, config, pkgs, flakeRoot, home-manager, inputs, ... }: let username = config.defaultUser or "henrov"; assetPath = "${flakeRoot}/generated/.config/hypr"; hyprlandPkg = pkgs.hyprland or pkgs.hyprland-git or inputs.hyprland.packages.${pkgs.system}.default; # Recursively gather files as Home Manager entries gatherFiles = dir: let entries = builtins.attrNames (builtins.readDir dir); in lib.concatMap (e: let path = "${dir}/${e}"; # readDir geeft een attributenset, directories hebben type "directory" stat = builtins.readDir path; in if stat != {} then gatherFiles path else [{ name = ".config/hypr/${builtins.replaceStrings [ "${assetPath}/" ] [ "" ] path}"; value = { source = path; }; }] ) entries; hyprFilesAttrs = lib.listToAttrs (gatherFiles assetPath); in { environment.systemPackages = [ hyprlandPkg ]; home-manager.users = { ${username} = { # Place all files (including subdirectories) into ~/.config/hypr/ home.file = hyprFilesAttrs; }; }; }