-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuilders.nix
140 lines (117 loc) · 3.12 KB
/
builders.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
{
self,
nixpkgs,
...
} @ inputs: let
inherit (lib.attrsets) nameValuePair;
inherit (inputs) nix-darwin;
lib = nixpkgs.lib.extend (import ./lib);
makePkgs = {
system,
nix-pkgs ? nixpkgs,
}: (import nix-pkgs {
inherit system;
overlays = let
outputs = self.outputs;
in [
# Add overlays your own flake exports (from overlays and pkgs dir):
outputs.overlays.additions
outputs.overlays.modifications
outputs.overlays.unstable-packages
# You can also add overlays exported from other flakes:
# neovim-nightly-overlay.overlays.default
# Or define it inline, for example:
# (final: prev: {
# hi = final.hello.overrideAttrs (oldAttrs: {
# patches = [ ./change-hello-to-hi.patch ];
# });
# })
];
config = {
allowUnfree = true;
};
});
in rec {
toPartialNixosConfig = {
hostname,
system,
users ? [],
}:
nameValuePair
hostname
(lib.nixosSystem rec {
inherit system;
pkgs = makePkgs {inherit system;};
specialArgs = {
inherit inputs users;
hostPlatform = system;
};
modules = [
./hosts/${hostname}/configuration.nix
inputs.home-manager.nixosModules.home-manager
{
home-manager.users =
lib.genAttrs
users
(user:
(
import ./users/${user} {username = user;}
)
.home);
home-manager.extraSpecialArgs = {
inherit inputs;
outputs = self.outputs;
inherit pkgs;
pkgs-unstable = makePkgs {
inherit system;
nix-pkgs = inputs.nixpkgs-unstable;
};
pkgs-mozilla = inputs.nixpkgs-mozilla.packages;
lib = pkgs.lib.extend (_: _: inputs.home-manager.lib);
};
}
];
});
toPartialDarwinConfig = {
hostname,
system ? "aarch64-darwin",
users ? [],
}:
nameValuePair
hostname
(nix-darwin.lib.darwinSystem rec {
inherit system;
pkgs = makePkgs {inherit system;};
specialArgs = {
inherit self inputs users;
hostPlatform = system;
};
modules = [
./hosts/${hostname}/configuration.nix
inputs.home-manager.darwinModules.home-manager
{
home-manager.users =
lib.genAttrs
users
(user:
(
import ./users/${user} {username = user;}
)
.home);
home-manager.extraSpecialArgs = {
inherit inputs;
outputs = self.outputs;
pkgs-unstable = makePkgs {
inherit system;
nix-pkgs = inputs.nixpkgs-unstable;
};
lib = pkgs.lib.extend (_: _: inputs.home-manager.lib);
};
}
];
});
compileSystems = toPartialConfiguration:
lib.right builtins.listToAttrs (map toPartialConfiguration);
compileDarwinSystems = compileSystems toPartialDarwinConfig;
compileNixosSystems = compileSystems toPartialNixosConfig;
}