{ config, lib, ... }: with lib; let moduleFiles = [ ../../user-modules/desktop/systemwide.nix ../../user-modules/development/systemwide.nix ../../user-modules/gaming/systemwide.nix ../../user-modules/keyring/systemwide.nix ]; moduleConfig = lists.foldr (file: acc: recursiveUpdate acc (import file)) { } moduleFiles; moduleNames = attrNames moduleConfig; mkModule = name: moduleConfig: { pkgs, ... }: { config = mkIf (any ( user: (user.modules.${name}.enable or (any (specialisation: specialisation.configuration.modules.${name}.enable) ( attrValues user.modules.${name}.specialisations )) ) ) (attrValues config.home-manager.users)) (if (isAttrs moduleConfig) then moduleConfig else (moduleConfig { inherit config pkgs; })); }; imports = map (name: mkModule name moduleConfig."${name}") moduleNames; in { imports = imports; }