77 lines
2.2 KiB
Nix
77 lines
2.2 KiB
Nix
{ lib, config, pkgs, flakeRoot, import-tree, home-manager, ... }:
|
|
|
|
let
|
|
hostname = "traveldroid";
|
|
|
|
modulesPath = "${flakeRoot}/generated/modules/${hostname}";
|
|
usersPath = "${flakeRoot}/generated/users";
|
|
|
|
hostModules = import-tree modulesPath;
|
|
globalUsers = import-tree usersPath;
|
|
|
|
allModules = hostModules.imports ++ globalUsers.imports;
|
|
|
|
#########################################################
|
|
# Merge all _module.args.hmUsers safely
|
|
#########################################################
|
|
mergedHmUsers = lib.mkMerge (
|
|
builtins.concatLists (
|
|
map (m:
|
|
if builtins.hasAttr "args" m && builtins.hasAttr "hmUsers" m.args
|
|
then [ m.args.hmUsers ] # wrap in singleton list
|
|
else []
|
|
) allModules
|
|
)
|
|
);
|
|
|
|
#########################################################
|
|
# Add activation to ensure all parent directories exist
|
|
#########################################################
|
|
mergedHmUsersWithDirs = lib.mapAttrs (_: userCfg: userCfg // {
|
|
home.activation.ensureDirs = lib.hm.dag.entryAfter ["writeBoundary"] (let
|
|
ensureDirs = files: lib.mapAttrs (_: path: ''
|
|
mkdir -p $(dirname $HOME/${path})
|
|
'') files;
|
|
in
|
|
ensureDirs (builtins.attrNames (userCfg.home.file or {}))
|
|
);
|
|
}) mergedHmUsers;
|
|
|
|
in
|
|
{
|
|
#################################
|
|
# Core system config
|
|
#################################
|
|
networking.hostName = hostname;
|
|
system.stateVersion = "26.05";
|
|
|
|
#################################
|
|
# Imports
|
|
#################################
|
|
imports =
|
|
[ ../../../generated/users/henrov.nix
|
|
./boot.nix
|
|
./hardware-configuration.nix
|
|
]
|
|
++ allModules
|
|
++ [ home-manager.nixosModules.home-manager ]; # import HM last
|
|
|
|
#################################
|
|
# Home Manager integration
|
|
#################################
|
|
home-manager.useGlobalPkgs = true;
|
|
home-manager.useUserPackages = true;
|
|
|
|
# Apply merged users with automatic directory creation
|
|
home-manager.users = mergedHmUsersWithDirs;
|
|
|
|
#################################
|
|
# System packages & programs
|
|
#################################
|
|
environment.systemPackages = [
|
|
pkgs.dconf
|
|
];
|
|
|
|
programs.dconf.enable = true;
|
|
}
|