1
0
Fork 0
nixos-config/home-manager/flake-module.nix
2023-02-11 21:32:56 +01:00

41 lines
990 B
Nix

{
withSystem,
lib,
inputs,
...
}: {
flake = withSystem "x86_64-linux" ({
self',
pkgs,
...
}: let
flattenAttrs = attrs:
lib.listToAttrs (lib.flatten (lib.mapAttrsToList
(
outer_key:
lib.mapAttrsToList
(inner_key: value: {
name = "${outer_key}-${inner_key}";
inherit value;
})
)
attrs));
machines = import ./machines.nix;
buildHomeManager = config: (inputs.home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [
config
inputs.emanote.homeManagerModule
];
});
buildModesForHost = host: modes:
pkgs.recursiveLinkFarm "${host}-modes"
(lib.mapAttrs
(_: config: (buildHomeManager config).activationPackage)
modes);
in {
homeConfigurations = lib.mapAttrs (_: buildHomeManager) (flattenAttrs machines);
homeModes = lib.mapAttrs buildModesForHost machines;
});
}