[nvidia] Move into module
This commit is contained in:
		
							parent
							
								
									5386ed5ba3
								
							
						
					
					
						commit
						5f49e43af9
					
				
					 9 changed files with 87 additions and 48 deletions
				
			
		|  | @ -34,10 +34,12 @@ | ||||||
|     utils.lib.mkFlake { |     utils.lib.mkFlake { | ||||||
|       inherit self inputs; |       inherit self inputs; | ||||||
| 
 | 
 | ||||||
|       channelsConfig = { |       channelsConfig.allowUnfreePredicate = pkg: builtins.elem (nixpkgs.lib.getName pkg) [ | ||||||
|         allowUnfree.allowUnfreePredicate = pkg: builtins.elem (utils.lib.getName pkg) [ |         "nvidia-x11" | ||||||
|         ]; |         "nvidia-settings" | ||||||
|       }; |         "corefonts" | ||||||
|  |         "vista-fonts" | ||||||
|  |       ]; | ||||||
| 
 | 
 | ||||||
|       sharedOverlays = [ |       sharedOverlays = [ | ||||||
|         (import ./overlays/letter) |         (import ./overlays/letter) | ||||||
|  | @ -51,6 +53,10 @@ | ||||||
|         specialArgs = { |         specialArgs = { | ||||||
|           pkgs-unstable = import nixpkgs-unstable { |           pkgs-unstable = import nixpkgs-unstable { | ||||||
|             inherit system; |             inherit system; | ||||||
|  |             config.allowUnfreePredicate = pkg: builtins.elem (nixpkgs.lib.getName pkg) [ | ||||||
|  |               "obsidian" | ||||||
|  |               "spotify" | ||||||
|  |             ]; | ||||||
|           }; |           }; | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -31,6 +31,7 @@ | ||||||
|     "/nix" = { |     "/nix" = { | ||||||
|       device = "/dev/disk/by-label/NIX-STORE"; |       device = "/dev/disk/by-label/NIX-STORE"; | ||||||
|       fsType = "ext4"; |       fsType = "ext4"; | ||||||
|  |       options = [ "noatime" ]; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     "/mnt/Nextcloud" = { |     "/mnt/Nextcloud" = { | ||||||
|  |  | ||||||
|  | @ -3,13 +3,15 @@ | ||||||
| { | { | ||||||
|   imports = [ |   imports = [ | ||||||
|     ./hardware-configuration.nix |     ./hardware-configuration.nix | ||||||
|     ../../modules-old/hardware/nvidia.nix |  | ||||||
|     ../../modules-old |     ../../modules-old | ||||||
|   ]; |   ]; | ||||||
| 
 | 
 | ||||||
|   sisyphus = { |   sisyphus = { | ||||||
|     users.tdpeuter.enable = true; |     users.tdpeuter.enable = true; | ||||||
| 
 | 
 | ||||||
|  |     hardware.nvidia.enable = true; | ||||||
|  |     hardware.nvidia.model = "T2000"; | ||||||
|  | 
 | ||||||
|     programs = { |     programs = { | ||||||
|       home-manager.enable = true; |       home-manager.enable = true; | ||||||
|       sops.enable = true; |       sops.enable = true; | ||||||
|  |  | ||||||
|  | @ -1,15 +1,26 @@ | ||||||
| { inputs, lib, config, pkgs, ... }: | { inputs, lib, config, pkgs, ... }: | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|   # Nix Flakes |   nix = { | ||||||
|   nix.package = pkgs.nixFlakes; |     # Allow Nix Flakes | ||||||
|   nix.extraOptions = '' |     # Keep derivations so shells don't break (direnv) | ||||||
|     experimental-features = nix-command flakes |     # If the disk has less than 100MiB, free up to 2GiB by garbage-collecting. | ||||||
|     keep-outputs = true |     extraOptions = '' | ||||||
|     keep-derivations = true |       experimental-features = nix-command flakes | ||||||
|   ''; |       keep-outputs = true | ||||||
|  |       keep-derivations = true | ||||||
|  |       min-free = ${toString (100 * 1024 * 1024)} | ||||||
|  |       max-free = ${toString (2048 * 1024 * 1024)} | ||||||
|  |     ''; | ||||||
|  |     # Scheduled garbage-collect | ||||||
|  |     gc = { | ||||||
|  |       automatic = true; | ||||||
|  |       dates = "weekly"; | ||||||
|  |       options = "--delete-older-than 30d"; | ||||||
|  |     }; | ||||||
|  |     package = pkgs.nixFlakes; | ||||||
|  |   }; | ||||||
| 
 | 
 | ||||||
|   # Select internationalisation properties. |  | ||||||
|   i18n.defaultLocale = "en_GB.UTF-8"; |   i18n.defaultLocale = "en_GB.UTF-8"; | ||||||
|   console = { |   console = { | ||||||
|     # font = "Lat2-Terminus16"; |     # font = "Lat2-Terminus16"; | ||||||
|  |  | ||||||
|  | @ -1,33 +0,0 @@ | ||||||
| { inputs, lib, config, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| let |  | ||||||
|   nvidia-offload = pkgs.writeShellScriptBin "nvidia-offload" '' |  | ||||||
|     export __NV_PRIME_RENDER_OFFLOAD=1 |  | ||||||
|     export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0 |  | ||||||
|     export __GLX_VENDOR_LIBRARY_NAME=nvidia |  | ||||||
|     export __VK_LAYER_NV_optimus=NVIDIA_only |  | ||||||
|     exec "$@" |  | ||||||
|   ''; |  | ||||||
| in |  | ||||||
| { |  | ||||||
|   nixpkgs.config.allowUnfree = true; |  | ||||||
| 
 |  | ||||||
|   services.xserver.videoDrivers = [ "nvidia" ]; |  | ||||||
| 
 |  | ||||||
|   hardware = { |  | ||||||
|     opengl.enable = true; |  | ||||||
|     nvidia = { |  | ||||||
|       open = true; |  | ||||||
|       package = config.boot.kernelPackages.nvidiaPackages.stable; |  | ||||||
|       modesetting.enable = true; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Offloading |  | ||||||
|   # environment.systemPackages = [ nvidia-offload ]; |  | ||||||
|   # hardware.nvidia.prime = { |  | ||||||
|   #   offload.enable = true; |  | ||||||
|   #   intelBusId = "PCI::00:02:0"; |  | ||||||
|   #   nvidiaBusId = "PCI:01:00:0"; |  | ||||||
|   # }; |  | ||||||
| } |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| { | { | ||||||
|   imports = [ |   imports = [ | ||||||
|  |     ./hardware | ||||||
|     ./programs |     ./programs | ||||||
|     ./services |     ./services | ||||||
|     ./virtualisation |     ./virtualisation | ||||||
|  |  | ||||||
							
								
								
									
										5
									
								
								nixos/modules/hardware/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								nixos/modules/hardware/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | ||||||
|  | { | ||||||
|  |   imports = [ | ||||||
|  |     ./nvidia | ||||||
|  |   ]; | ||||||
|  | } | ||||||
							
								
								
									
										46
									
								
								nixos/modules/hardware/nvidia/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								nixos/modules/hardware/nvidia/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,46 @@ | ||||||
|  | { config, lib, pkgs, ... }: | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  |   cfg = config.sisyphus.hardware.nvidia; | ||||||
|  | 
 | ||||||
|  |   nvidia-offload = pkgs.writeShellScriptBin "nvidia-offload" '' | ||||||
|  |     export __NV_PRIME_RENDER_OFFLOAD=1 | ||||||
|  |     export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0 | ||||||
|  |     export __GLX_VENDOR_LIBRARY_NAME=nvidia | ||||||
|  |     export __VK_LAYER_NV_optimus=NVIDIA_only | ||||||
|  |     exec "$@" | ||||||
|  |   ''; | ||||||
|  | in { | ||||||
|  |   options.sisyphus.hardware.nvidia = { | ||||||
|  |     enable = lib.mkEnableOption "NVIDIA GPU support"; | ||||||
|  |     model = lib.mkOption { | ||||||
|  |       type = lib.types.enum [ "" "T2000" "RTX 2060" ]; | ||||||
|  |       default = ""; | ||||||
|  |       example = "T2000"; | ||||||
|  |       description = lib.mdDoc "The model of NVIDIA GPU card"; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   config = lib.mkIf cfg.enable { | ||||||
|  |     services.xserver.videoDrivers = [ "nvidia" ]; | ||||||
|  |    | ||||||
|  |     hardware = { | ||||||
|  |       opengl.enable = true; | ||||||
|  |       nvidia = { | ||||||
|  |         open = true; | ||||||
|  |         package = config.boot.kernelPackages.nvidiaPackages.stable; | ||||||
|  |         modesetting.enable = true; | ||||||
|  | 
 | ||||||
|  |         prime = lib.mkIf (cfg.model == "T2000") { | ||||||
|  |           offload.enable = true; | ||||||
|  |           intelBusId = "PCI::00:02:0"; | ||||||
|  |           nvidiaBusId = "PCI:01:00:0"; | ||||||
|  |         }; | ||||||
|  |       }; | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     environment.systemPackages = lib.mkIf (cfg.model != "") [ | ||||||
|  |       nvidia-offload | ||||||
|  |     ]; | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | @ -60,10 +60,8 @@ in { | ||||||
|           libreoffice-fresh |           libreoffice-fresh | ||||||
|           nextcloud-client |           nextcloud-client | ||||||
|           nsxiv                 # Lightweight image viewer |           nsxiv                 # Lightweight image viewer | ||||||
|           obsidian |  | ||||||
|           oh-my-zsh |           oh-my-zsh | ||||||
|           qalculate-gtk         # Calculator |           qalculate-gtk         # Calculator | ||||||
|           spotify |  | ||||||
|           tea                   # Gitea CLI |           tea                   # Gitea CLI | ||||||
|           unzip |           unzip | ||||||
|           vifm                  # File manager |           vifm                  # File manager | ||||||
|  | @ -74,6 +72,8 @@ in { | ||||||
|           zsh-syntax-highlighting |           zsh-syntax-highlighting | ||||||
|         ]) ++ (with pkgs-unstable; [ |         ]) ++ (with pkgs-unstable; [ | ||||||
|           mpv |           mpv | ||||||
|  |           obsidian | ||||||
|  |           spotify | ||||||
|         ]) ++ (with pkgs.vimPlugins; [ |         ]) ++ (with pkgs.vimPlugins; [ | ||||||
|           statix |           statix | ||||||
|           vim-plug |           vim-plug | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue