47 lines
1.2 KiB
Nix
47 lines
1.2 KiB
Nix
{ lib, config, inputs, ... }:
|
|
|
|
let
|
|
username = config.defaultUser or "henrov";
|
|
|
|
# Modules directory en switches
|
|
modulesPath = ./generated/parked;
|
|
importedModules = inputs.import-tree modulesPath;
|
|
moduleSwitches = import ./assets/system/modules.conf;
|
|
|
|
# Alleen ingeschakelde modules
|
|
enabledModules =
|
|
lib.filterAttrs (name: _: moduleSwitches.${name} or false)
|
|
importedModules.imports;
|
|
|
|
moduleList = builtins.attrValues enabledModules;
|
|
|
|
# Functie: haal homeManagerExtraUserFragment en forceer het tot veilige attrset
|
|
safeFragment = module:
|
|
let
|
|
frag =
|
|
if builtins.hasAttr "homeManagerExtraUserFragment" module
|
|
then module.homeManagerExtraUserFragment
|
|
else {};
|
|
evaluated =
|
|
if builtins.isFunction frag then frag {} else frag;
|
|
in
|
|
if builtins.isAttrs evaluated then evaluated
|
|
else {};
|
|
|
|
# Alle fragments per module
|
|
allFragments = map safeFragment moduleList;
|
|
|
|
# Merge alles per gebruiker
|
|
mergedForUser = lib.foldl' lib.mkMerge {} allFragments;
|
|
|
|
in
|
|
{
|
|
networking.hostName = "traveldroid";
|
|
system.stateVersion = "26.05";
|
|
|
|
# Top-level key is username → value is attrset
|
|
home-manager.users = {
|
|
"${username}" = mergedForUser;
|
|
};
|
|
}
|