62 lines
1.6 KiB
Nix
62 lines
1.6 KiB
Nix
{ lib, config, pkgs, flakeRoot, import-tree, home-manager, ... }:
|
|
|
|
let
|
|
hostname = "traveldroid";
|
|
|
|
modulesPath = "${flakeRoot}/generated/modules/${hostname}";
|
|
usersPath = "${flakeRoot}/generated/users";
|
|
|
|
hostModulesRaw = import-tree modulesPath;
|
|
globalUsersRaw = import-tree usersPath;
|
|
|
|
# Evaluate functions from import-tree
|
|
evalModule = m:
|
|
if lib.isFunction m then
|
|
m { lib = lib; pkgs = pkgs; config = config; flakeRoot = flakeRoot; home-manager = home-manager; }
|
|
else
|
|
m;
|
|
|
|
hostModules = lib.mapAttrs (_: mod: evalModule mod) hostModulesRaw;
|
|
globalUsers = lib.mapAttrs (_: mod: evalModule mod) globalUsersRaw;
|
|
|
|
allModules = hostModules ++ globalUsers;
|
|
|
|
# Flatten modules for imports
|
|
flattenModules = lib.flatten (lib.map (m: [ m ]) allModules);
|
|
|
|
# Merge all _module.args.hmUsers safely
|
|
allHmUsers = lib.foldl' (acc: m:
|
|
let
|
|
hmUsers = if (builtins.hasAttr "_module" m) &&
|
|
(builtins.hasAttr "args" m._module) &&
|
|
(builtins.hasAttr "hmUsers" m._module.args)
|
|
then m._module.args.hmUsers
|
|
else {};
|
|
in acc // hmUsers
|
|
) {} allModules;
|
|
|
|
in
|
|
{
|
|
networking.hostName = hostname;
|
|
system.stateVersion = "26.05";
|
|
|
|
# Use flattened module list in imports
|
|
imports =
|
|
flattenModules
|
|
++ [
|
|
./boot.nix
|
|
./hardware-configuration.nix
|
|
home-manager.nixosModules.home-manager
|
|
];
|
|
|
|
home-manager.useGlobalPkgs = true;
|
|
home-manager.useUserPackages = true;
|
|
home-manager.users = allHmUsers;
|
|
|
|
environment.systemPackages = [
|
|
pkgs.dconf
|
|
];
|
|
|
|
programs.dconf.enable = true;
|
|
}
|