project-plus: home-manager module init
This commit is contained in:
		
							parent
							
								
									1898815955
								
							
						
					
					
						commit
						f59c08deb5
					
				
					 4 changed files with 144 additions and 0 deletions
				
			
		|  | @ -11,6 +11,7 @@ in { | |||
|     ./wine.nix | ||||
|     ./bottles.nix | ||||
|     ./emulation.nix | ||||
|     ./project-plus | ||||
|   ]; | ||||
|   config = mkIf (elem "gaming" profiles) { | ||||
|     ooknet.binds = { | ||||
|  |  | |||
|  | @ -2,6 +2,7 @@ | |||
|   lib, | ||||
|   osConfig, | ||||
|   pkgs, | ||||
|   self', | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib) mkIf elem; | ||||
|  | @ -14,6 +15,14 @@ in { | |||
|         (pkgs) | ||||
|         ryujinx | ||||
|         ; | ||||
|       inherit | ||||
|         (self'.packages) | ||||
|         wii-u-gc-adapter | ||||
|         ; | ||||
|     }; | ||||
|     ooknet.gaming.project-plus = { | ||||
|       enable = true; | ||||
|       netplay.nickname = "ooks"; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
							
								
								
									
										5
									
								
								modules/home/workstation/gaming/project-plus/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								modules/home/workstation/gaming/project-plus/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| { | ||||
|   imports = [ | ||||
|     ./options.nix | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										129
									
								
								modules/home/workstation/gaming/project-plus/options.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								modules/home/workstation/gaming/project-plus/options.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,129 @@ | |||
| { | ||||
|   lib, | ||||
|   self', | ||||
|   config, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib) mkOption mkEnableOption mkIf; | ||||
|   inherit (lib.types) package str path attrsOf anything bool int; | ||||
|   cfg = config.ooknet.gaming.project-plus; | ||||
| in { | ||||
|   options.ooknet.gaming.project-plus = { | ||||
|     enable = mkEnableOption "Enable Project Plus"; | ||||
|     package = mkOption { | ||||
|       type = package; | ||||
|       default = self'.packages.project-plus.override { | ||||
|         inherit (cfg) userDir; | ||||
|       }; | ||||
|     }; | ||||
|     userDir = mkOption { | ||||
|       type = str; | ||||
|       default = "${config.xdg.configHome}/project-plus"; | ||||
|       description = '' | ||||
|         Location of the Dolphin User directory, this is the path that the wrapped package | ||||
|         will use for User configuration. defaults to "\$\{config.xdg.configHome}/project-plus" | ||||
|       ''; | ||||
|     }; | ||||
| 
 | ||||
|     launcherSource = mkOption { | ||||
|       type = path; | ||||
|       default = "${self'.packages.fpp-launcher}/Launcher"; | ||||
|       description = '' | ||||
|         Location of the faster-project-plus launcher files. | ||||
|       ''; | ||||
|     }; | ||||
|     sdCardSource = mkOption { | ||||
|       type = path; | ||||
|       default = "${self'.packages.fpp-sd}/sd.raw"; | ||||
|       description = '' | ||||
|         Location of the faster-project-plus sd card | ||||
|       ''; | ||||
|     }; | ||||
|     userSource = mkOption { | ||||
|       type = path; | ||||
|       default = "${self'.packages.fpp-config}/Binaries/User"; | ||||
|     }; | ||||
| 
 | ||||
|     netplay = { | ||||
|       nickname = mkOption { | ||||
|         type = str; | ||||
|         default = "Player"; | ||||
|         description = "Netplay nickname displayed to other players"; | ||||
|       }; | ||||
|       disableMusic = mkOption { | ||||
|         type = bool; | ||||
|         default = true; | ||||
|         description = "Whether to disable music during netplay"; | ||||
|       }; | ||||
|       buffer = mkOption { | ||||
|         type = int; | ||||
|         default = 4; | ||||
|         description = "Default netplay buffer"; | ||||
|       }; | ||||
|     }; | ||||
| 
 | ||||
|     gamesDir = mkOption { | ||||
|       type = str; | ||||
|       default = "./Games"; | ||||
|       description = '' | ||||
|         Location of the directory that stores all game isos, this is where you should store | ||||
|         your brawl iso. Defaults to "./Brawl" (The . is relative to the User dolphin directory) | ||||
|       ''; | ||||
|     }; | ||||
| 
 | ||||
|     extraSettings = mkOption { | ||||
|       type = attrsOf anything; | ||||
|       default = {}; | ||||
|       description = '' | ||||
|         Additional settings for Dolphin.ini | ||||
|       ''; | ||||
|     }; | ||||
|   }; | ||||
|   config = mkIf cfg.enable { | ||||
|     home.packages = [cfg.package]; | ||||
|     xdg.configFile = { | ||||
|       "project-plus/Config/Dolphin.ini" = { | ||||
|         text = lib.generators.toINI {} { | ||||
|           # default settings to ensure project-plus works OOTB. | ||||
|           General = { | ||||
|             IsoPaths = 2; | ||||
|             IsoPath0 = "${cfg.userDir}/Games"; | ||||
|             IsoPath1 = "${cfg.userDir}/Launcher"; | ||||
|             WiiSDCardPath = "${cfg.userDir}/Wii/sd.raw"; | ||||
|           }; | ||||
|           Core = { | ||||
|             DefaultISO = "${cfg.userDir}/Games/brawl.iso"; | ||||
|           }; | ||||
|           Netplay = | ||||
|             { | ||||
|               SelectedHostGame = "Project+ Netplay Launcher.dol"; | ||||
|               BufferSize = cfg.netplay.buffer; | ||||
|               Nickname = cfg.netplay.nickname; | ||||
|               MusicOff = cfg.netplay.disableMusic; | ||||
|               ListenPort = "0x0a42"; | ||||
|               HostPort = "0x0a42"; | ||||
|               ConnectPort = "0x0a42"; | ||||
|               HostCode = 00000000; | ||||
|               TraversalChoice = "traversal"; | ||||
|             } | ||||
|             // cfg.extraSettings; | ||||
|         }; | ||||
|       }; | ||||
|       # Copy dolphin GameSettings configuration from faster-project-plus config | ||||
|       # This includes various Gecko Code files to make for a better Netplay experience | ||||
|       "project-plus/GameSettings" = { | ||||
|         source = "${cfg.userSource}/GameSettings"; | ||||
|         recursive = true; | ||||
|       }; | ||||
|       "project-plus/Launcher" = { | ||||
|         source = "${cfg.launcherSource}"; | ||||
|         recursive = true; | ||||
|       }; | ||||
|       # Cant get this to work, does the sd card need to be writable for dolphin to use it? | ||||
|       # for now sd card will need to be manually placed in the SD directory | ||||
|       # "project-plus/Wii/sd.raw" = { | ||||
|       #   source = cfg.sdCardSource; | ||||
|       # }; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue