82 lines
2.0 KiB
Nix
82 lines
2.0 KiB
Nix
{ lib, config, pkgs, inputs, ... }:
|
|
|
|
let
|
|
username = config.defaultUser or "henrov";
|
|
|
|
modulesPath = ./generated/modules;
|
|
imported = inputs.import-tree modulesPath;
|
|
|
|
moduleSwitches = import ../../../assets/system/conf/modules.conf;
|
|
|
|
# STEP 1: evaluate all modules
|
|
evaluatedModules =
|
|
map (m:
|
|
if builtins.isFunction m
|
|
then m { inherit lib config pkgs; }
|
|
else m
|
|
) imported.imports;
|
|
|
|
# STEP 2: attach normalized names
|
|
modulesWithNames =
|
|
map (m: {
|
|
name =
|
|
if m ? _file
|
|
then lib.removeSuffix ".nix" (builtins.baseNameOf m._file)
|
|
else "unknown";
|
|
value = m;
|
|
}) evaluatedModules;
|
|
|
|
# STEP 3: filter enabled modules
|
|
enabledModules =
|
|
builtins.filter (m:
|
|
moduleSwitches.${m.name} or false
|
|
) modulesWithNames;
|
|
|
|
# STEP 4: extract ONLY Home Manager user attrsets
|
|
hmUserSets =
|
|
map (m: m.value._module.args.hmUsers or {}) enabledModules;
|
|
|
|
# STEP 5: debug string
|
|
debugContents =
|
|
builtins.concatStringsSep "\n"
|
|
(map (m:
|
|
let attrCount =
|
|
if builtins.isAttrs m.value
|
|
then builtins.length (builtins.attrNames m.value)
|
|
else 0;
|
|
in
|
|
"${m.name} (${builtins.toString attrCount} attrs)"
|
|
) enabledModules);
|
|
|
|
# STEP 6: FORCE trace (important!)
|
|
tracedModules =
|
|
builtins.trace
|
|
("==== Enabled modules (" +
|
|
builtins.toString (builtins.length enabledModules) +
|
|
") ====\n" + debugContents)
|
|
enabledModules;
|
|
|
|
# STEP 7: proper debug file in store
|
|
debugFile = pkgs.writeText "traveldroid-modules-debug.txt" debugContents;
|
|
|
|
in
|
|
{
|
|
networking.hostName = "traveldroid";
|
|
system.stateVersion = "26.05";
|
|
|
|
imports = [
|
|
./boot.nix
|
|
./hardware-configuration.nix
|
|
];
|
|
|
|
# Merge: ONLY HM user attrsets
|
|
home-manager.users =
|
|
lib.mkMerge hmUserSets;
|
|
|
|
# Optional: also inside VM
|
|
environment.etc."traveldroid-modules-debug.txt".text = debugContents;
|
|
|
|
# Expose debug file as build output
|
|
system.build.modulesDebug = debugFile;
|
|
}
|