Files
nixos/Droidnix/generated/hosts/traveldroid/host.nix
T
2026-03-27 14:46:51 +00:00

69 lines
2.1 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 from your modules
#########################################################
mergedHmUsers = lib.mkMerge (map (m: if builtins.hasAttr "args" m && builtins.hasAttr "hmUsers" m.args then m.args.hmUsers else {}) allModules);
#########################################################
# Add single activation to ensure all parent dirs 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;
# Pass the merged user definitions with automatic dir creation
home-manager.users = mergedHmUsersWithDirs;
#################################
# System packages & programs
#################################
environment.systemPackages = [
pkgs.dconf
];
programs.dconf.enable = true;
}