Files
nixos/Droidnix/generated/hosts/traveldroid/traveldroid.nix
T
2026-03-21 14:31:30 +00:00

71 lines
1.9 KiB
Nix

{ lib, config, 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 first
evaluatedModules =
map (m:
if builtins.isFunction m
then m { inherit lib config; }
else m
) imported.imports;
# STEP 2: attach names safely, stripping .nix
modulesWithNames =
map (m: {
name =
if m ? _file
then builtins.replaceSuffix ".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 final module values
moduleList = map (m: m.value) enabledModules;
in
{
networking.hostName = "traveldroid";
system.stateVersion = "26.05";
imports = [
./boot.nix
./hardware-configuration.nix
];
home-manager.users =
lib.mkMerge moduleList;
# Logging to screen
# Print number of enabled modules and each module's attribute count
_ = builtins.trace
(builtins.concatStringsSep "\n"
(map (m: "${m.name} (${builtins.toString (builtins.length (builtins.attrNames m.value))} attrs)") enabledModules))
true;
_ = builtins.trace
(toString (builtins.length enabledModules) + " modules enabled: " + builtins.concatStringsSep ", " (map (m: m.name) enabledModules))
true;
# logging to file
let
debugFile = "/tmp/traveldroid-modules-debug.txt";
debugContents = builtins.concatStringsSep "\n"
(map (m: "${m.name} (${builtins.toString (builtins.length (builtins.attrNames m.value))} attrs)") enabledModules);
in
{
# Write a file during the build
environment.etc."traveldroid-modules-debug.txt".text = debugContents;
}
}