homemanager: fix passthrough of options
This commit is contained in:
		
							parent
							
								
									8b78c651b6
								
							
						
					
					
						commit
						9d1f799c01
					
				
					 6 changed files with 18 additions and 49 deletions
				
			
		|  | @ -17,6 +17,4 @@ with lib.wyrdgard; | ||||||
|       direnv = enabled; |       direnv = enabled; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| 
 |  | ||||||
|   home.stateVersion = "24.11"; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -2,11 +2,12 @@ | ||||||
|   lib, |   lib, | ||||||
|   pkgs, |   pkgs, | ||||||
|   config, |   config, | ||||||
|  |   namespace, | ||||||
|   osConfig ? { }, |   osConfig ? { }, | ||||||
|   format ? "unknown", |   format ? "unknown", | ||||||
|   ... |   ... | ||||||
| }: | }: | ||||||
| with lib.wyrdgard; | with lib.${namespace}; | ||||||
| { | { | ||||||
|   wyrdgard = { |   wyrdgard = { | ||||||
|     apps = { |     apps = { | ||||||
|  | @ -17,6 +18,4 @@ with lib.wyrdgard; | ||||||
|       direnv = enabled; |       direnv = enabled; | ||||||
|     }; |     }; | ||||||
|   }; |   }; | ||||||
| 
 |  | ||||||
|   home.stateVersion = "23.11"; |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -7,10 +7,7 @@ | ||||||
| }: | }: | ||||||
| let | let | ||||||
|   inherit (lib) mkIf mkEnableOption; |   inherit (lib) mkIf mkEnableOption; | ||||||
| 
 |  | ||||||
|   cfg = config.${namespace}.desktop.addons.hypridle; |   cfg = config.${namespace}.desktop.addons.hypridle; | ||||||
| 
 |  | ||||||
|   username = config.${namespace}.user.name; |  | ||||||
| in | in | ||||||
| { | { | ||||||
|   options.${namespace}.desktop.addons.hypridle = { |   options.${namespace}.desktop.addons.hypridle = { | ||||||
|  | @ -18,7 +15,7 @@ in | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = mkIf cfg.enable { |   config = mkIf cfg.enable { | ||||||
|     snowfallorg.users.${username}.home.config = { |     ${namespace}.home.extraOptions = { | ||||||
|       services.hypridle = { |       services.hypridle = { | ||||||
|         enable = true; |         enable = true; | ||||||
|         settings = { |         settings = { | ||||||
|  |  | ||||||
|  | @ -20,15 +20,15 @@ in | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   config = { |   config = { | ||||||
|     ${namespace}.home.extraOptions = { |     snowfallorg.users.${config.${namespace}.user.name}.home.config = mkMerge [ | ||||||
|  |       { | ||||||
|         home.stateVersion = config.system.stateVersion; |         home.stateVersion = config.system.stateVersion; | ||||||
|         home.file = mkAliasDefinitions options.${namespace}.home.file; |         home.file = mkAliasDefinitions options.${namespace}.home.file; | ||||||
|         xdg.enable = true; |         xdg.enable = true; | ||||||
|         xdg.configFile = mkAliasDefinitions options.${namespace}.home.configFile; |         xdg.configFile = mkAliasDefinitions options.${namespace}.home.configFile; | ||||||
|     }; |       } | ||||||
| 
 |       config.${namespace}.home.extraOptions | ||||||
|     snowfallorg.users.${config.${namespace}.user.name}.home.config = |     ]; | ||||||
|       config.${namespace}.home.extraOptions; |  | ||||||
| 
 | 
 | ||||||
|     home-manager = { |     home-manager = { | ||||||
|       useUserPackages = true; |       useUserPackages = true; | ||||||
|  |  | ||||||
|  | @ -2,7 +2,6 @@ | ||||||
|   config, |   config, | ||||||
|   lib, |   lib, | ||||||
|   namespace, |   namespace, | ||||||
|   options, |  | ||||||
|   pkgs, |   pkgs, | ||||||
|   ... |   ... | ||||||
| }: | }: | ||||||
|  | @ -11,33 +10,6 @@ with lib.${namespace}; | ||||||
| let | let | ||||||
|   cfg = config.${namespace}.user; |   cfg = config.${namespace}.user; | ||||||
|   defaultIconFileName = "profile.png"; |   defaultIconFileName = "profile.png"; | ||||||
|   defaultIcon = pkgs.stdenvNoCC.mkDerivation { |  | ||||||
|     name = "default-icon"; |  | ||||||
|     src = ./. + "/${defaultIconFileName}"; |  | ||||||
| 
 |  | ||||||
|     dontUnpack = true; |  | ||||||
| 
 |  | ||||||
|     installPhase = '' |  | ||||||
|       cp $src $out |  | ||||||
|     ''; |  | ||||||
| 
 |  | ||||||
|     passthru = { |  | ||||||
|       fileName = defaultIconFileName; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
|   propagatedIcon = |  | ||||||
|     pkgs.runCommandNoCC "propagated-icon" |  | ||||||
|       { |  | ||||||
|         passthru = { |  | ||||||
|           inherit (fileName) ; |  | ||||||
|         }; |  | ||||||
|       } |  | ||||||
|       '' |  | ||||||
|         local target="$out/share/${namespace}-icons/user/${cfg.name}" |  | ||||||
|         mkdir -p "$target" |  | ||||||
| 
 |  | ||||||
|         cp ${cfg.icon} "$target/${cfg.icon.fileName}" |  | ||||||
|       ''; |  | ||||||
| in | in | ||||||
| { | { | ||||||
|   options.${namespace}.user = with types; { |   options.${namespace}.user = with types; { | ||||||
|  | @ -45,7 +17,7 @@ in | ||||||
|     fullName = mkOpt str "Christoph Hollizeck" "The full name of the user."; |     fullName = mkOpt str "Christoph Hollizeck" "The full name of the user."; | ||||||
|     email = mkOpt str "christoph.hollizeck@hey.com" "The email of the user."; |     email = mkOpt str "christoph.hollizeck@hey.com" "The email of the user."; | ||||||
|     initialPassword = mkOpt str "asdf" "The initial password to use when the user is first created."; |     initialPassword = mkOpt str "asdf" "The initial password to use when the user is first created."; | ||||||
|     icon = mkOpt (nullOr package) defaultIcon "The profile picture to use for the user."; |     icon = mkOpt (nullOr path) ./${defaultIconFileName} "The profile picture to use for the user."; | ||||||
|     extraGroups = mkOpt (listOf str) [ ] "Groups for the user to be assigned."; |     extraGroups = mkOpt (listOf str) [ ] "Groups for the user to be assigned."; | ||||||
|     extraOptions = mkOpt attrs { } (mdDoc "Extra options passed to `users.users.<name>`."); |     extraOptions = mkOpt attrs { } (mdDoc "Extra options passed to `users.users.<name>`."); | ||||||
|     trustedPublicKeys = mkOption { |     trustedPublicKeys = mkOption { | ||||||
|  | @ -78,7 +50,7 @@ in | ||||||
|         "Videos/.keep".text = ""; |         "Videos/.keep".text = ""; | ||||||
|         "projects/.keep".text = ""; |         "projects/.keep".text = ""; | ||||||
|         ".face".source = cfg.icon; |         ".face".source = cfg.icon; | ||||||
|         "Pictures/${cfg.icon.fileName or (builtins.baseNameOf cfg.icon)}".source = cfg.icon; |         "Pictures/${defaultIconFileName}".source = cfg.icon; | ||||||
|       }; |       }; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -28,6 +28,9 @@ in | ||||||
|   programs.ssh.extraConfig = '' |   programs.ssh.extraConfig = '' | ||||||
|     AddressFamily inet |     AddressFamily inet | ||||||
|   ''; |   ''; | ||||||
|  |   home-manager = { | ||||||
|  |     backupFileExtension = ".bak"; | ||||||
|  |   }; | ||||||
| 
 | 
 | ||||||
|   ${namespace} = { |   ${namespace} = { | ||||||
|     archetypes = { |     archetypes = { | ||||||
|  | @ -76,7 +79,7 @@ in | ||||||
| 
 | 
 | ||||||
|         windowrulev2 = [ |         windowrulev2 = [ | ||||||
|           "workspace 8 silent, class:^(steam)$, title:^(Friends List)" |           "workspace 8 silent, class:^(steam)$, title:^(Friends List)" | ||||||
|           "workspace 8 silent, class:^(discord)$, title:^(Discord)" |           "workspace 8 silent, class:^(vesktop)$, title:^(Discord)" | ||||||
|           "workspace 7 silent, class:^(com.obsproject.Studio)$" |           "workspace 7 silent, class:^(com.obsproject.Studio)$" | ||||||
|         ]; |         ]; | ||||||
|       }; |       }; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue