Files
nixos/Droidnix/generated/hosts/traveldroid/traveldroid.nix
T
2026-03-20 16:02:39 +00:00

49 lines
1.3 KiB
Nix

{ lib, config, inputs, ... }:
let
username = config.defaultUser or "henrov";
modulesPath = ./generated/modules;
moduleSwitches = builtins.fromJSON (builtins.readFile ./assets/system/conf/modules.json);
importedModules = inputs.import-tree modulesPath;
# Keep only enabled modules
enabledModules = lib.filterAttrs (name: _: moduleSwitches.${name} or false)
importedModules.imports;
moduleList = builtins.attrValues enabledModules;
# Recursive evaluator: forces functions → attrsets
forceAttrs = val:
if builtins.isFunction val then
forceAttrs (val {})
else if builtins.isAttrs val then
lib.mapAttrs (_: v: forceAttrs v) val
else if builtins.isList val then
map forceAttrs val
else
val;
# Extract fragment safely
safeFragment = m:
let frag =
if builtins.hasAttr "homeManagerExtraUserFragment" m
then m.homeManagerExtraUserFragment
else {};
in forceAttrs frag;
# Merge all fragments
mergedFragments = lib.foldl' lib.mkMerge {} (map safeFragment moduleList);
in {
networking.hostName = "traveldroid";
system.stateVersion = "26.05";
home-manager.users = {
"${username}" = mergedFragments;
};
# Bonus: list all imported module files
traveldroidModules = builtins.attrNames enabledModules;
}