❄️ My personnal NixOS configuration
nix-flake nixos-configuration linux dotfiles flake nix nix-config nixos nixos-flake linux-desktop
at adding-vicinae 322 lines 9.2 kB view raw
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}