Regenerated
This commit is contained in:
+18
-27
@@ -370,48 +370,39 @@ in
|
||||
{ lib, config, inputs, ... }:
|
||||
|
||||
let
|
||||
# Default user
|
||||
username = config.defaultUser or "henrov";
|
||||
|
||||
# Path to modules and config
|
||||
# Import modules
|
||||
modulesPath = ./generated/modules;
|
||||
moduleSwitches = builtins.fromJSON (builtins.readFile ./assets/system/conf/modules.json);
|
||||
|
||||
# Import all modules recursively
|
||||
importedModules = inputs.import-tree modulesPath;
|
||||
|
||||
# Only enabled modules (according to modules.json)
|
||||
enabledModules =
|
||||
lib.filterAttrs (name: _: moduleSwitches.${name} or false)
|
||||
importedModules.imports;
|
||||
# Keep only enabled modules
|
||||
enabledModules = lib.filterAttrs (name: _: moduleSwitches.${name} or false)
|
||||
importedModules.imports;
|
||||
|
||||
# Flatten enabled modules to a list
|
||||
moduleList = builtins.attrValues enabledModules;
|
||||
|
||||
# Debug info / list of imported module files
|
||||
importedFiles = map (m:
|
||||
if builtins.hasAttr "file" m then m.file else "unknown"
|
||||
) moduleList;
|
||||
# Function to safely evaluate a fragment
|
||||
safeFragment = m:
|
||||
let
|
||||
frag = if builtins.hasAttr "homeManagerExtraUserFragment" m
|
||||
then m.homeManagerExtraUserFragment
|
||||
else {};
|
||||
evaled = if builtins.isFunction frag then frag {} else frag;
|
||||
in if builtins.isAttrs evaled then evaled else {};
|
||||
|
||||
# Extract and force each homeManagerExtraUserFragment to attrset
|
||||
fragmentsPerModule = map (m:
|
||||
if builtins.hasAttr "homeManagerExtraUserFragment" m
|
||||
then m.homeManagerExtraUserFragment
|
||||
else {}
|
||||
) moduleList;
|
||||
|
||||
# Merge all fragments per username (top-level keys are usernames)
|
||||
mergedUserFragments = lib.foldl' lib.mkMerge {} fragmentsPerModule;
|
||||
# Merge all fragments
|
||||
mergedFragments = lib.foldl' lib.mkMerge {} (map safeFragment moduleList);
|
||||
|
||||
in {
|
||||
networking.hostName = "traveldroid";
|
||||
system.stateVersion = "26.05";
|
||||
|
||||
# Pass the merged fragments directly to home-manager
|
||||
home-manager.users = mergedUserFragments;
|
||||
|
||||
# Bonus debug info: list of imported modules
|
||||
debug.importedFiles = importedFiles;
|
||||
# Top-level key is username → merged fragments
|
||||
home-manager.users = {
|
||||
"${username}" = mergedFragments;
|
||||
};
|
||||
}
|
||||
#+END_SRC
|
||||
|
||||
|
||||
Reference in New Issue
Block a user