refactor(hardware): major refactor of hardware modules
This commit is contained in:
		
							parent
							
								
									8f229750b0
								
							
						
					
					
						commit
						4a177d2122
					
				
					 18 changed files with 95 additions and 191 deletions
				
			
		|  | @ -7,21 +7,27 @@ | |||
|     ../../profiles | ||||
| 		]; | ||||
| 
 | ||||
|     activeProfiles = ["base" "laptop"]; | ||||
|     activeProfiles = ["base"]; | ||||
| 
 | ||||
| 		systemModules.user = { | ||||
| 			ooks.enable = true; | ||||
| 			shell.fish.enable = true; | ||||
| 		}; | ||||
| 
 | ||||
| 		systemModules.laptop.power = { | ||||
| 			powersave = { | ||||
| 				minFreq = 800; | ||||
| 				maxFreq = 1800; | ||||
| 		systemModules = { | ||||
| 			user = { | ||||
| 				ooks.enable = true; | ||||
| 				shell.fish.enable = true; | ||||
| 			}; | ||||
| 			performance = { | ||||
| 				minFreq = 1800; | ||||
| 				maxFreq = 3600; | ||||
| 			hardware = { | ||||
| 				cpu.type = "intel"; | ||||
| 				gpu.type = "intel"; | ||||
| 				features = [ "bluetooth" "backlight" "battery" ]; | ||||
| 				battery = { | ||||
| 					powersave = { | ||||
| 						minFreq = 800; | ||||
| 						maxFreq = 1800; | ||||
| 					}; | ||||
| 					performance = { | ||||
| 						minFreq = 1800; | ||||
| 						maxFreq = 3600; | ||||
| 					}; | ||||
| 				}; | ||||
| 			}; | ||||
| 		}; | ||||
| 
 | ||||
|  |  | |||
|  | @ -4,7 +4,6 @@ | |||
|   imports = [ | ||||
|     ./hardware | ||||
|     ./bootloader | ||||
|     ./laptop | ||||
|     ./nix | ||||
|     ./programs | ||||
|     ./user | ||||
|  |  | |||
|  | @ -1,16 +0,0 @@ | |||
| { lib, config, ... }: | ||||
| 
 | ||||
| let | ||||
|   cfg = config.systemModules.hardware.backlight; | ||||
|   inherit (lib) mkIf mkEnableOption; | ||||
| in | ||||
| 
 | ||||
| { | ||||
|   options.systemModules.hardware.backlight = { | ||||
|     enable = mkEnableOption "Enable backlight module"; | ||||
|   }; | ||||
|    | ||||
|   config = mkIf cfg.enable { | ||||
|     hardware.brillo.enable = true; | ||||
|   }; | ||||
| } | ||||
|  | @ -1,29 +0,0 @@ | |||
| { config, lib, pkgs, ... }: | ||||
| 
 | ||||
| let | ||||
|   cfg = config.systemModules.hardware.bluetooth; | ||||
|   inherit (lib) mkIf mkEnableOption; | ||||
| in | ||||
| 
 | ||||
| { | ||||
|   options.systemModules.hardware.bluetooth = { | ||||
|     enable = mkEnableOption "Enable bluetooth module"; | ||||
|   }; | ||||
| 
 | ||||
|   config = mkIf cfg.enable { | ||||
| 
 | ||||
|     hardware.bluetooth = { | ||||
|       enable = true; | ||||
|       package = pkgs.bluez5-experimental; | ||||
|     }; | ||||
|    | ||||
|     environment.systemPackages = with pkgs; [ | ||||
|     	galaxy-buds-client | ||||
|       live-buds-cli | ||||
|   	  bluetuith | ||||
|   	]; | ||||
| 
 | ||||
|      # https://github.com/NixOS/nixpkgs/issues/114222 | ||||
|     systemd.user.services.telephony_client.enable = false; | ||||
|   }; | ||||
| } | ||||
|  | @ -1,7 +1,8 @@ | |||
| { | ||||
|   imports = [ | ||||
|     ./bluetooth | ||||
|     ./backlight | ||||
|     ./cpu | ||||
|     ./gpu | ||||
|     ./features | ||||
|     ./ssd | ||||
|   ]; | ||||
| } | ||||
|  |  | |||
							
								
								
									
										13
									
								
								system/modules/hardware/features/backlight/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								system/modules/hardware/features/backlight/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | |||
| { lib, config, ... }: | ||||
| 
 | ||||
| let | ||||
|   features = config.systemModules.hardware.features; | ||||
|   inherit (lib) mkIf; | ||||
|   inherit (builtins) elem; | ||||
| in | ||||
| 
 | ||||
| { | ||||
|   config = mkIf (elem "backlight" features) { | ||||
|     hardware.brillo.enable = true; | ||||
|   }; | ||||
| } | ||||
|  | @ -2,14 +2,15 @@ | |||
| { lib, config, pkgs, ... }: | ||||
| 
 | ||||
| let | ||||
|   cfg = config.systemModules.laptop.power; | ||||
|   inherit (lib) mkIf mkDefault mkEnableOption mkOption types; | ||||
|   features = config.systemModules.hardware.features; | ||||
|   cfg = config.systemModules.hardware.battery; | ||||
|   inherit (lib) mkIf mkDefault mkOption types; | ||||
|   inherit (builtins) elem; | ||||
|   MHz = x: x * 1000; | ||||
| in | ||||
|    | ||||
| { | ||||
|   options.systemModules.laptop.power = { | ||||
|     enable = mkEnableOption "Enable laptop power module"; | ||||
|   options.systemModules.hardware.battery = { | ||||
|     powersave = { | ||||
|       minFreq = mkOption { | ||||
|         type = types.int; | ||||
|  | @ -36,7 +37,7 @@ in | |||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   config = mkIf cfg.enable { | ||||
|   config = mkIf (elem "battery" features) { | ||||
|     boot = { | ||||
|       kernelModules = ["acpi_call"]; | ||||
|       extraModulePackages = with config.boot.kernelPackages; [ | ||||
							
								
								
									
										24
									
								
								system/modules/hardware/features/bluetooth/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								system/modules/hardware/features/bluetooth/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | |||
| { config, lib, pkgs, ... }: | ||||
| 
 | ||||
| let | ||||
|   features = config.systemModules.hardware.features; | ||||
|   inherit (lib) mkIf; | ||||
|   inherit (builtins) elem; | ||||
| in | ||||
| 
 | ||||
| { | ||||
|   config = mkIf (elem "bluetooth" features) { | ||||
|     hardware.bluetooth = { | ||||
|       enable = true; | ||||
|       package = pkgs.bluez5-experimental; | ||||
|     }; | ||||
|    | ||||
|     environment.systemPackages = with pkgs; [ | ||||
|       live-buds-cli | ||||
|   	  bluetuith | ||||
|   	]; | ||||
| 
 | ||||
|     # https://github.com/NixOS/nixpkgs/issues/114222 | ||||
|     systemd.user.services.telephony_client.enable = false; | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										19
									
								
								system/modules/hardware/features/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								system/modules/hardware/features/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| { lib, config, ... }: | ||||
| 
 | ||||
| let | ||||
|   inherit (lib) types mkOption; | ||||
| in | ||||
| 
 | ||||
| { | ||||
|   imports = [ | ||||
|     ./bluetooth | ||||
|     ./backlight | ||||
|     ./battery | ||||
|   ]; | ||||
| 
 | ||||
|   options.systemModules.hardware.features = mkOption { | ||||
|     type = with types; listOf (enum ["bluetooth" "backlight" "battery"]); | ||||
|     default = []; | ||||
|     description = "What extra hardware feature system modules to use"; | ||||
|   }; | ||||
| } | ||||
|  | @ -18,12 +18,12 @@ in | |||
|         mesa | ||||
|       ]; | ||||
|       extraPackages32 = [ pkgs.driversi686Linux.amdvlk ]; | ||||
|       boot = { | ||||
|         initrd.kernelModules = ["amdgpu"]; | ||||
|         kernelModules = ["amdgpu"]; | ||||
|       }; | ||||
|       environment.systemPackages = [ pkgs.nvtopPackages.amd ]; | ||||
|       services.xserver.videoDrivers = mkDefault ["modesetting" "amdgpu"]; | ||||
|     }; | ||||
|     boot = { | ||||
|       initrd.kernelModules = ["amdgpu"]; | ||||
|       kernelModules = ["amdgpu"]; | ||||
|     }; | ||||
|     environment.systemPackages = [ pkgs.nvtopPackages.amd ]; | ||||
|     services.xserver.videoDrivers = mkDefault ["modesetting" "amdgpu"]; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ let | |||
|   inherit (lib) mkIf; | ||||
|   inherit (builtins) elem; | ||||
| 
 | ||||
|   vaapiIntel = pkgs.vaapiIntel.override {enableHypbridCodec = true;}; | ||||
|   # vaapiIntel = pkgs.vaapiIntel.override {enableHybridCodec = true;}; | ||||
| in | ||||
| 
 | ||||
| { | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ in | |||
|         nvidiaSettings = false; | ||||
|         nvidiaPersistenced = true; | ||||
|         modesetting.enable = true; | ||||
|         powermanagement = { | ||||
|         powerManagement = { | ||||
|           enable = mkDefault true; | ||||
|           finegrained = mkDefault false; | ||||
|         }; | ||||
|  |  | |||
|  | @ -1,6 +0,0 @@ | |||
| { | ||||
|   imports = [ | ||||
|     ./power | ||||
|     # ./touchpad | ||||
|   ]; | ||||
| } | ||||
|  | @ -1,29 +0,0 @@ | |||
| { lib, config, pkgs, ... }: | ||||
| 
 | ||||
| let | ||||
|   cfg = config.systemProfile.amd; | ||||
| in | ||||
| 
 | ||||
| { | ||||
|   config = lib.mkIf cfg.enable { | ||||
| 
 | ||||
|     hardware.opengl = { | ||||
|       extraPackages = with pkgs; [ | ||||
|         vulkan-tools | ||||
|         vulkan-loader | ||||
|         vulkan-extension-layer | ||||
|         vulkan-validation-layer | ||||
|         amdvlk | ||||
|         mesa | ||||
|       ]; | ||||
|       extraPackages32 = [ pkgs.driversi686Linux.amdvlk ]; | ||||
|     }; | ||||
| 
 | ||||
|     boot = { | ||||
|       initrd.kernelModules = ["amdgpu"]; | ||||
|       kernelModules = ["amdgpu"]; | ||||
|     }; | ||||
| 
 | ||||
|     environment.systemPackages = [ pkgs.nvtopPackages.amd ]; | ||||
|   }; | ||||
| } | ||||
|  | @ -1,6 +1,7 @@ | |||
| { inputs, outputs, lib, config, pkgs, ... }: | ||||
| 
 | ||||
| let | ||||
|   isx86Linux = pkgs: with pkgs.stdenv; hostPlatform.isLinux && hostPlatform.isx86; | ||||
|   cfg = config.systemProfile.base; | ||||
| in | ||||
| 
 | ||||
|  | @ -51,17 +52,8 @@ in | |||
|       enableAllFirmware = true; | ||||
|       opengl = { | ||||
|         enable = true; | ||||
|         extraPackages = with pkgs; [ | ||||
|           intel-media-driver | ||||
|           vaapiIntel | ||||
|           vaapiVdpau | ||||
|           libvdpau-va-gl | ||||
|           libva-utils | ||||
|         ]; | ||||
|         extraPackages32 = with pkgs.pkgsi686Linux; [ | ||||
|           vaapiVdpau | ||||
|           libvdpau-va-gl | ||||
|         ]; | ||||
|         driSupport = true; | ||||
|         driSupport32Bit = isx86Linux pkgs; | ||||
|       }; | ||||
|     }; | ||||
|     system.stateVersion = lib.mkDefault "23.11"; | ||||
|  |  | |||
|  | @ -9,11 +9,8 @@ in | |||
| { | ||||
|   imports = [ | ||||
|     ./base | ||||
|     ./nvidia | ||||
|     ./gaming | ||||
|     ./laptop | ||||
|     ./mediaServer | ||||
|     ./amd | ||||
|   ]; | ||||
| 
 | ||||
|   options = { | ||||
|  | @ -29,15 +26,6 @@ in | |||
|       gaming = { | ||||
|         enable = lib.mkEnableOption "Enable the gaming profile"; | ||||
|       }; | ||||
|       laptop = { | ||||
|         enable = lib.mkEnableOption "Enable the laptop profile"; | ||||
|       }; | ||||
|       nvidia = { | ||||
|         enable = lib.mkEnableOption "Enable the nvidia profile"; | ||||
|       }; | ||||
|       amd = { | ||||
|         enable = lib.mkEnableOption "Enable the amd profile"; | ||||
|       }; | ||||
|       mediaServer = { | ||||
|         enable = lib.mkEnableOption "Enable the mediaServer profile"; | ||||
|       }; | ||||
|  |  | |||
|  | @ -1,19 +0,0 @@ | |||
| { config, lib, ... }: | ||||
| let | ||||
|   cfg = config.systemProfile.laptop; | ||||
| in  | ||||
| { | ||||
|   imports = [ | ||||
|     ../../modules | ||||
|   ]; | ||||
|    | ||||
|   config = lib.mkIf cfg.enable { | ||||
|     systemModules = { | ||||
|       hardware = { | ||||
|         bluetooth.enable = true; | ||||
|         backlight.enable = true; | ||||
|       }; | ||||
|       laptop.power.enable = true; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  | @ -1,40 +0,0 @@ | |||
| { lib, config, pkgs, ... }: | ||||
| 
 | ||||
| let | ||||
|   cfg = config.systemProfile.nvidia; | ||||
|   production = config.boot.kernelPackages.nvidiaPackages.production; | ||||
|   beta = config.boot.kernelPackages.nvidiaPackages.beta; | ||||
| in | ||||
| 
 | ||||
| { | ||||
|   config = lib.mkIf cfg.enable { | ||||
|     hardware.nvidia = { | ||||
|       open = true; | ||||
|       package = production; | ||||
|       modesetting.enable = true; | ||||
|       nvidiaSettings = true; | ||||
|       powerManagement.enable = true; | ||||
|     }; | ||||
|     hardware.opengl.extraPackages = with pkgs; [ nvidia-vaapi-driver ]; | ||||
|     hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [ nvidia-vaapi-driver ]; | ||||
|     services.xserver.videoDrivers = [ "nvidia" ]; | ||||
|     environment.sessionVariables = { | ||||
|       LIBVA_DRIVER_NAME = "nvidia"; | ||||
|       NVD_BACKEND = "direct"; | ||||
|     }; | ||||
|     environment.systemPackages = with pkgs; [ | ||||
|       nvtopPackages.nvidia | ||||
|       mesa | ||||
|        | ||||
|       libva | ||||
|       libva-utils | ||||
| 
 | ||||
|       vulkan-loader | ||||
|       vulkan-validation-layers | ||||
|       vulkan-tools | ||||
|       vulkan-extension-layer | ||||
|     ]; | ||||
|   }; | ||||
| 
 | ||||
|    | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue