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

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;
}