-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhome.nix
44 lines (39 loc) · 1.04 KB
/
home.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# SPDX-FileCopyrightText: 2024 - 2025 Daniel Sampliner <[email protected]>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
{
config,
lib,
...
}:
let
homeDirs = { };
extraModules = { };
users = lib.trivial.pipe ./home/users [
(config.lib.collectDir { default = "home.nix"; })
config.lib.treeifyFiles
];
profilesPath = ./home/profiles;
mkHomeConfiguration = system: user: home-nix: {
inherit system;
extraSpecialArgs = { inherit profilesPath; };
modules =
config.lib.collectDir { } ./homeModules
++ extraModules.${user} or [ ]
++ [
(_: { home.homeDirectory = homeDirs.${user} or "/home/${user}"; })
profilesPath
home-nix
];
};
mkHomeConfigurations =
host: system:
lib.mapAttrs' (
user: home-nix: lib.nameValuePair "${user}@${host}" (mkHomeConfiguration system user home-nix)
) users;
in
lib.pipe config.nixosConfigurations [
(builtins.mapAttrs (_: v: v.system))
(lib.mapAttrsToList mkHomeConfigurations)
(builtins.foldl' (a: b: a // b) { })
]