My collection of nix configurations
1{
2 inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
3 inputs.homeManager.url = "github:nix-community/home-manager";
4 inputs.homeManager.inputs.nixpkgs.follows = "nixpkgs";
5 inputs.emacs.url = "github:nix-community/emacs-overlay";
6 inputs.sops.url = "github:Mic92/sops-nix";
7 inputs.deploy.url = "github:serokell/deploy-rs";
8 inputs.home.url = "sourcehut:~afontaine/home";
9 inputs.steamFetcher.url = "github:nix-community/steam-fetcher";
10 inputs.steamFetcher.inputs.nixpkgs.follows = "nixpkgs";
11 inputs.peonPing.url = "github:PeonPing/peon-ping";
12 inputs.peonPing.inputs.nixpkgs.follows = "nixpkgs";
13 inputs.stylix.url = "github:nix-community/stylix";
14 inputs.stylix.inputs.nixpkgs.follows = "nixpkgs";
15 inputs.tangled.url = "git+https://tangled.sh/@tangled.sh/core";
16 inputs.tangled.inputs.nixpkgs.follows = "nixpkgs";
17 inputs.nix-index-database.url = "github:nix-community/nix-index-database";
18 inputs.nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
19
20 outputs =
21 {
22 self,
23 nixpkgs,
24 homeManager,
25 emacs,
26 sops,
27 deploy,
28 home,
29 steamFetcher,
30 tangled,
31 peonPing,
32 stylix,
33 nix-index-database,
34 }:
35 let
36 systems = [
37 "x86_64-linux"
38 "x86_64-darwin"
39 "aarch64-darwin"
40 "aarch64-linux"
41 ];
42 forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f system);
43 in
44 {
45 overlays = {
46 emacs = emacs.overlay;
47 };
48 nixosModules = {
49 nixConfig =
50 { pkgs, ... }:
51 {
52 nix = {
53 registry.nixpkgs.to = {
54 type = "path";
55 path = pkgs.path;
56 };
57 package = pkgs.lixPackageSets.stable.lix;
58 extraOptions = ''
59 experimental-features = nix-command flakes
60 '';
61 settings.trusted-users = [
62 "root"
63 "@wheel"
64 ];
65 gc = {
66 automatic = true;
67 options = "--delete-older-than 10d";
68 };
69 settings.auto-optimise-store = true;
70 nixPath = [ "nixpkgs=${nixpkgs}" ];
71 };
72
73 nixpkgs.config.permittedInsecurePackages = [
74 "aspnetcore-runtime-6.0.36"
75 "aspnetcore-runtime-wrapped-6.0.36"
76 "dotnet-sdk-6.0.428"
77 "dotnet-sdk-wrapped-6.0.428"
78 ];
79 };
80 emacsOverlay = {
81 nixpkgs = {
82 overlays = [
83 emacs.overlay
84 ];
85 config = {
86 allowUnfree = true;
87 };
88 };
89 home-manager.useGlobalPkgs = true;
90 };
91 steamOverlay = {
92 nixpkgs = {
93 overlays = [
94 steamFetcher.overlay
95 ];
96 config = {
97 allowUnfree = true;
98 };
99 };
100 home-manager.useGlobalPkgs = true;
101 };
102 laptops = import ./shared/laptops;
103 nixbuild = import ./shared/nixbuild;
104 };
105 nixosConfigurations = {
106 duchess = nixpkgs.lib.nixosSystem {
107 system = "x86_64-linux";
108 modules = [
109 nixpkgs.nixosModules.notDetected
110 homeManager.nixosModules.home-manager
111 stylix.nixosModules.stylix
112 self.nixosModules.emacsOverlay
113 self.nixosModules.nixbuild
114 self.nixosModules.nixConfig
115 sops.nixosModules.sops
116 ./duchess
117 ./stylix
118 ./andrew
119 ./cachix.nix
120 ];
121 };
122 slightly-darker-black = nixpkgs.lib.nixosSystem {
123 system = "x86_64-linux";
124 modules = [
125 nixpkgs.nixosModules.notDetected
126 homeManager.nixosModules.home-manager
127 stylix.nixosModules.stylix
128 self.nixosModules.emacsOverlay
129 self.nixosModules.laptops
130 self.nixosModules.nixbuild
131 self.nixosModules.nixConfig
132 sops.nixosModules.sops
133 ./stylix
134 ./slightly-darker-black
135 ./andrew
136 ./cachix.nix
137 ];
138 };
139 # pam-poovy = nixpkgs.lib.nixosSystem {
140 # system = "x86_64-linux";
141 # modules = [
142 # nixpkgs.nixosModules.notDetected
143 # homeManager.nixosModules.home-manager
144 # self.nixosModules.emacsOverlay
145 # self.nixosModules.laptops
146 # self.nixosModules.nixConfig
147 # sops.nixosModules.sops
148 # ./pam-poovy
149 # ./andrew
150 # ./cachix.nix
151 # ];
152 # };
153 woodhouse = nixpkgs.lib.nixosSystem {
154 system = "x86_64-linux";
155 modules = [
156 nixpkgs.nixosModules.notDetected
157 homeManager.nixosModules.home-manager
158 tangled.nixosModules.spindle
159 self.nixosModules.emacsOverlay
160 self.nixosModules.nixbuild
161 self.nixosModules.nixConfig
162 self.nixosModules.steamOverlay
163 ./woodhouse
164 ./andrew/server.nix
165 sops.nixosModules.sops
166 ./cachix.nix
167 ];
168 };
169 cheryl = nixpkgs.lib.nixosSystem {
170 system = "x86_64-linux";
171 modules = [
172 sops.nixosModules.sops
173 homeManager.nixosModules.home-manager
174 home.nixosModules.home
175 tangled.nixosModules.knot
176 self.nixosModules.emacsOverlay
177 self.nixosModules.nixConfig
178 ./cheryl
179 ./andrew/server.nix
180 ./cachix.nix
181 ];
182 };
183 cyril-figgis = nixpkgs.lib.nixosSystem {
184 system = "x86_64-linux";
185 modules = [
186 sops.nixosModules.sops
187 homeManager.nixosModules.home-manager
188 home.nixosModules.home
189 self.nixosModules.emacsOverlay
190 self.nixosModules.nixConfig
191 ./cyril-figgis
192 ./andrew/server.nix
193 ./cachix.nix
194 ];
195 };
196 ray-gillette = nixpkgs.lib.nixosSystem {
197 system = "x86_64-linux";
198 modules = [
199 sops.nixosModules.sops
200 homeManager.nixosModules.home-manager
201 home.nixosModules.home
202 self.nixosModules.emacsOverlay
203 self.nixosModules.nixConfig
204 ./ray-gillette
205 ./andrew/server.nix
206 ./cachix.nix
207 ];
208 };
209 };
210 deploy.nodes = {
211 cheryl = {
212 hostname = "cheryl";
213 profiles.system = {
214 user = "root";
215 path = deploy.lib.x86_64-linux.activate.nixos self.nixosConfigurations.cheryl;
216 };
217 };
218 cyril-figgis = {
219 hostname = "cyril-figgis";
220 profiles.system = {
221 user = "root";
222 path = deploy.lib.x86_64-linux.activate.nixos self.nixosConfigurations.cyril-figgis;
223 };
224 };
225 ray-gillette = {
226 hostname = "ray-gillette";
227 profiles.system = {
228 user = "root";
229 path = deploy.lib.x86_64-linux.activate.nixos self.nixosConfigurations.ray-gillette;
230 };
231 };
232 duchess = {
233 hostname = "duchess";
234 sudo = "doas -u";
235 profiles.system = {
236 user = "root";
237 path = deploy.lib.x86_64-linux.activate.nixos self.nixosConfigurations.duchess;
238 };
239 };
240 woodhouse = {
241 hostname = "woodhouse";
242 profiles.system = {
243 user = "root";
244 path = deploy.lib.x86_64-linux.activate.nixos self.nixosConfigurations.woodhouse;
245 };
246 };
247 };
248 homeConfigurations = {
249 andrew = homeManager.lib.homeManagerConfiguration {
250 modules = [
251 sops.homeManagerModules.sops
252 stylix.homeModules.stylix
253 peonPing.homeManagerModules.default
254 nix-index-database.homeModules.default
255 (
256 { pkgs, lib, ... }:
257 {
258 imports = [ ./andrew/home.nix ];
259 nixpkgs = {
260 overlays = [
261 emacs.overlay
262 (_final: _prev: {
263 peon-ping = peonPing.packages.x86_64-linux.default;
264 })
265 ];
266 config = {
267 allowUnfree = true;
268 };
269 };
270 home.homeDirectory = "/home/andrew";
271 home.username = "andrew";
272 }
273 )
274 ];
275 pkgs = nixpkgs.legacyPackages.x86_64-linux;
276 };
277 };
278 checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy.lib;
279 packages = (
280 forAllSystems (
281 system:
282 let
283 pkgs = nixpkgs.legacyPackages.${system};
284 in
285 {
286 # digitalOceanImage =
287 # self.nixosConfigurations.krieger.config.system.build.digitalOceanImage;
288 iosevka-mono = pkgs.callPackage ./stylix/fonts/iosevka-mono.nix { };
289 iosevka-prop = pkgs.callPackage ./stylix/fonts/iosevka-prop.nix { };
290 iosekva-nerd = pkgs.callPackage ./stylix/fonts/iosevka-nerd.nix {
291 iosevka = self.packages.${system}.iosevka-mono;
292 };
293 }
294 )
295 );
296 devShells = (
297 forAllSystems (
298 system:
299 let
300 pkgs = nixpkgs.legacyPackages.${system};
301 sopsPkgs = sops.packages.${system};
302 in
303 {
304 default = pkgs.mkShell {
305 sopsPGPKeyDirs = [
306 "./keys/hosts"
307 "./keys/users"
308 ];
309
310 nativeBuildInputs = [ sopsPkgs.sops-import-keys-hook ];
311 buildInputs = [
312 sopsPkgs.ssh-to-pgp
313 deploy.packages.${system}.default
314 pkgs.nix-prefetch
315 pkgs.nix-output-monitor
316 homeManager.packages.${system}.default
317 ];
318 };
319 }
320 )
321 );
322 };
323}