{ lib, config, pkgs, inputs, ... }: let username = config.defaultUser or "henrov"; modulesPath = ./generated/modules; # Import all modules recursively importedModules = inputs.import-tree modulesPath; # Evaluate all modules evaluatedModules = map (m: if builtins.isFunction m then m { inherit lib config pkgs; } else m ) importedModules.imports; # Attach names modulesWithNames = map (m: { name = if m ? _file then lib.removeSuffix ".nix" (builtins.baseNameOf m._file) else "unknown"; value = m; }) evaluatedModules; # Filter enabled modules from config file (optional) moduleSwitches = import ../../../assets/system/conf/modules.conf; enabledModules = builtins.filter (m: moduleSwitches.${m.name} or false) modulesWithNames; # Collect Home Manager user attrsets hmUsersList = map (m: m.value._module.args.hmUsers or {}) enabledModules; in { networking.hostName = "traveldroid"; system.stateVersion = "26.05"; imports = [ ./boot.nix ./hardware-configuration.nix ]; # Merge Home Manager user configurations home-manager.users = lib.mkMerge hmUsersList; }