❄️ My personnal NixOS configuration
nix-flake
nixos-configuration
linux
dotfiles
flake
nix
nix-config
nixos
nixos-flake
linux-desktop
1{
2 description = "KeyZox's config";
3
4 outputs =
5 inputs@{
6 self,
7 nixpkgs,
8 catppuccin,
9 home-manager,
10 nixos-hardware,
11 disko,
12 lanzaboote,
13 nixos-generators,
14 treefmt-nix,
15 ...
16 }:
17 let
18 inherit (self) outputs;
19 supportedSystems = [
20 "x86_64-linux"
21 ];
22 forEachSupportedSystem =
23 f:
24 nixpkgs.lib.genAttrs supportedSystems (
25 system:
26 f {
27 pkgs = import nixpkgs { inherit system; };
28 system = system;
29 }
30 );
31
32 treefmtEval = forEachSupportedSystem ({ pkgs, ... }: treefmt-nix.lib.evalModule pkgs ./treefmt.nix);
33 in
34 {
35 nixosConfigurations = {
36 DEV-BOYY = nixpkgs.lib.nixosSystem {
37 system = "x86_64-linux";
38 specialArgs = { inherit inputs outputs self; };
39 modules = [
40 ./hosts/DEV-BOYY/default.nix
41
42 catppuccin.nixosModules.catppuccin
43 lanzaboote.nixosModules.lanzaboote
44 self.nixosModules.default
45 ];
46 };
47 MINI-BOYY = nixpkgs.lib.nixosSystem {
48 system = "x86_64-linux";
49 specialArgs = { inherit inputs outputs self; };
50 modules = [
51 ./hosts/MINI-BOYY/default.nix
52
53 disko.nixosModules.disko
54 catppuccin.nixosModules.catppuccin
55 nixos-hardware.nixosModules.apple-macmini-6
56 self.nixosModules.default
57 ];
58 };
59 LAPTOP-5530 = nixpkgs.lib.nixosSystem {
60 system = "x86_64-linux";
61 specialArgs = { inherit inputs outputs self; };
62 modules = [
63 ./hosts/LAPTOP-5530/default.nix
64
65 disko.nixosModules.disko
66 catppuccin.nixosModules.catppuccin
67 nixos-hardware.nixosModules.dell-precision-5530
68 self.nixosModules.default
69 ];
70 };
71 nixos-server = nixpkgs.lib.nixosSystem {
72 system = "x86_64-linux";
73 specialArgs = { inherit inputs outputs self; };
74 modules = [
75 ./hosts/NIXOS-SERVER/default.nix
76
77 inputs.disko.nixosModules.disko
78 self.nixosModules.default
79 catppuccin.nixosModules.catppuccin
80 ];
81 };
82 };
83 homeConfigurations = {
84 "42adjoly" = home-manager.lib.homeManagerConfiguration {
85 pkgs = nixpkgs.legacyPackages."x86_64-linux";
86 extraSpecialArgs = { inherit self; };
87 modules = [
88 ./home/42/default.nix
89 {
90 home = {
91 homeDirectory = "/home/adjoly";
92 username = "adjoly";
93 };
94 }
95 ];
96 extraSpecialArgs = { inherit inputs outputs; };
97 };
98 };
99 devShells = forEachSupportedSystem (
100 { pkgs, ... }:
101 {
102 default = pkgs.callPackage ./shell.nix { };
103 }
104 );
105 packages = forEachSupportedSystem (
106 { pkgs, system }:
107 let
108 nixvim = inputs.nixvim.legacyPackages.${system};
109 in
110 {
111 adjust-brightness = import ./pkgs/adjust-brightness { inherit pkgs; };
112 keyznvim = pkgs.callPackage ./pkgs/keyznvim {
113 nixvim = nixvim;
114 liteMode = false;
115 home = "";
116 inherit inputs outputs self;
117 };
118 keyznvim-lite = pkgs.callPackage ./pkgs/keyznvim {
119 nixvim = nixvim;
120 liteMode = true;
121 home = "";
122 inherit inputs outputs self;
123 };
124
125 }
126 );
127
128 homeModules = {
129 default = import ./modules/home-manager;
130 gui = import ./modules/home-manager/gui;
131 cli = import ./modules/home-manager/cli;
132 };
133
134 nixosModules = {
135 default = import ./modules/nixos;
136 services = import ./modules/nixos/services;
137 hardware = import ./modules/nixos/hardware;
138 programs = import ./modules/nixos/programs;
139 };
140
141 nixvimModules = {
142 default = import ./modules/nixvim;
143 servers = import ./modules/nixvim/servers;
144 };
145
146 vm = forEachSupportedSystem (
147 { pkgs, system }:
148 {
149 virtualBoyy =
150 {
151 mount-enabled ? false,
152 }:
153 let
154 generate-vm =
155 modules:
156 nixos-generators.nixosGenerate {
157 inherit modules system;
158 specialArgs = {
159 inherit
160 pkgs
161 inputs
162 self
163 outputs
164 ;
165 };
166 format = "vm";
167 };
168 mount = {
169 systemd.services.mount-work = {
170 description = "Mount the shared folder";
171 # fstab entry:
172 # host0 /wherever 9p trans=virtio,version=9p2000.L 0 0
173 script = ''
174 mkdir -p /work
175 /run/wrappers/bin/mount -t 9p -o trans=virtio,version=9p2000.L host0 /work
176 '';
177 wantedBy = [ "multi-user.target" ];
178 after = [ "network.target" ];
179 serviceConfig = {
180 Type = "oneshot";
181 RemainAfterExit = true;
182 };
183 };
184 };
185 vm = generate-vm [
186 self.nixosModules.default
187 catppuccin.nixosModules.catppuccin
188 ./hosts/VM/default.nix
189 (nixpkgs.lib.optionalAttrs mount-enabled mount)
190 ];
191 in
192 vm;
193 }
194 );
195
196 apps = forEachSupportedSystem (
197 { pkgs, system }:
198 {
199 virtualBoyy =
200 let
201 scriptName = "run-virtualBoyy-vm";
202 script = pkgs.writeShellScriptBin "${scriptName}" ''
203 ${self.vm.${system}.virtualBoyy { mount-enabled = false; }}/bin/run-virtualBoyy-vm \
204 -enable-kvm \
205 -m 8G \
206 -smp 4\
207 '';
208 in
209 {
210 type = "app";
211 program = "${script}/bin/${scriptName}";
212 };
213
214 virtualBoyy-headless =
215 let
216 scriptName = "run-virtualBoyy-vm-headless";
217 script = pkgs.writeShellScriptBin "${scriptName}" ''
218 ${self.vm.${system}.virtualBoyy { mount-enabled = false; }}/bin/run-virtualBoyy-vm \
219 -enable-kvm \
220 -nographic \
221 -m 8G \
222 -smp 4\
223 '';
224 in
225 {
226 type = "app";
227 program = "${script}/bin/${scriptName}";
228 };
229 }
230 );
231 formatter = forEachSupportedSystem (
232 { pkgs, ... }: treefmtEval.${pkgs.stdenv.hostPlatform.system}.config.build.wrapper
233 );
234 checks = forEachSupportedSystem (
235 { pkgs, ... }:
236 {
237 formatting = treefmtEval.${pkgs.stdenv.hostPlatform.system}.config.build.check self;
238 }
239 );
240 };
241
242 inputs = {
243 nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
244
245 nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
246
247 unstablepkgs.url = "github:nixos/nixpkgs/nixos-unstable";
248
249 nixos-hardware.url = "github:keyzox71/nixos-hardware/macmini-6";
250 # nixos-hardware.url = "git+file:///home/adjoly/workspace/nixos-hardware";
251
252 catppuccin = {
253 url = "github:catppuccin/nix/release-25.11";
254 inputs.nixpkgs.follows = "nixpkgs";
255 };
256
257 home-manager = {
258 url = "github:nix-community/home-manager/release-25.11";
259 inputs.nixpkgs.follows = "nixpkgs";
260 };
261
262 pogit = {
263 url = "github:y-syo/pogit";
264 inputs.nixpkgs.follows = "nixpkgs";
265 };
266
267 hyprland-contrib = {
268 url = "github:hyprwm/contrib";
269 inputs.nixpkgs.follows = "nixpkgs";
270 };
271
272 zen-browser = {
273 url = "github:0xc000022070/zen-browser-flake";
274 inputs.nixpkgs.follows = "nixpkgs";
275 };
276
277 timmy = {
278 url = "github:keyzox71/timmy";
279 inputs.nixpkgs.follows = "nixpkgs";
280 };
281
282 disko = {
283 url = "github:nix-community/disko";
284 };
285
286 lanzaboote = {
287 url = "github:nix-community/lanzaboote/v0.4.3";
288 inputs = {
289 nixpkgs.follows = "nixpkgs";
290 rust-overlay.follows = "rust-overlay";
291 };
292 };
293 rust-overlay = {
294 url = "github:oxalica/rust-overlay";
295 inputs.nixpkgs.follows = "nixpkgs";
296 };
297
298 nixvim.url = "github:nix-community/nixvim/nixos-25.11";
299
300 nixos-generators = {
301 url = "github:nix-community/nixos-generators";
302 inputs.nixpkgs.follows = "nixpkgs";
303 };
304
305 treefmt-nix.url = "github:numtide/treefmt-nix";
306
307 dms = {
308 url = "github:AvengeMedia/DankMaterialShell";
309 inputs.nixpkgs.follows = "nixpkgs";
310 };
311
312 dms-plugin-registry = {
313 url = "github:AvengeMedia/dms-plugin-registry";
314 inputs.nixpkgs.follows = "nixpkgs";
315 };
316
317 dgop = {
318 url = "github:AvengeMedia/dgop";
319 inputs.nixpkgs.follows = "nixpkgs";
320 };
321 };
322}