flake/modules/nixos/system/home-manager.nix
2025-11-07 08:23:40 +03:00

52 lines
1.5 KiB
Nix

{
lib,
config,
inputs,
...
}:
{
imports = [
inputs.home-manager.nixosModules.home-manager
];
config = lib.mkMerge [
# Enable FUSE user_allow_other when impermanence is used
(lib.mkIf config.osbmModules.hardware.disko.zfs.root.impermanenceRoot {
programs.fuse.userAllowOther = true;
})
(lib.mkIf config.osbmModules.homeManager.enable {
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
backupFileExtension = ".nixbak";
# Pass inputs and outputs to home-manager modules
extraSpecialArgs = {
inherit inputs;
# Pass the NixOS system config to home-manager modules
nixosConfig = config;
};
# Configure home-manager for each user (excluding root)
users =
let
# Capture the NixOS system config before entering the home-manager scope
systemConfig = config;
in
lib.genAttrs (builtins.filter (u: u != "root") config.osbmModules.users) (username: {
# Use the system's stateVersion for home-manager
home.stateVersion = lib.mkDefault systemConfig.system.stateVersion;
imports = [
../../home-manager
]
++ lib.optionals systemConfig.osbmModules.hardware.disko.zfs.root.impermanenceRoot [
# Import impermanence home-manager module when impermanence is enabled
inputs.impermanence.homeManagerModules.impermanence
];
});
};
})
];
}