forked from jan-leila/nix-config
		
	
		
			
				
	
	
		
			48 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   lib,
 | |
|   pkgs,
 | |
|   config,
 | |
|   ...
 | |
| }: {
 | |
|   options.programs.vscode.profiles = lib.mkOption {
 | |
|     type = lib.types.attrsOf (lib.types.submodule ({config, ...}: {
 | |
|       options = {
 | |
|         extraExtensions.openDyslexicFont = {
 | |
|           enable = lib.mkEnableOption "should OpenDyslexic font be set as the default font for VSCode";
 | |
|           package = lib.mkPackageOption pkgs "nerd-fonts.open-dyslexic" {
 | |
|             default = ["nerd-fonts" "open-dyslexic"];
 | |
|           };
 | |
|         };
 | |
|       };
 | |
|       config = lib.mkIf config.extraExtensions.openDyslexicFont.enable {
 | |
|         userSettings = {
 | |
|           "editor.fontFamily" = "'OpenDyslexicM Nerd Font Mono', 'OpenDyslexic', monospace";
 | |
|           "editor.fontSize" = 14;
 | |
|         };
 | |
|       };
 | |
|     }));
 | |
|   };
 | |
| 
 | |
|   config = let
 | |
|     enabledProfiles =
 | |
|       lib.filter (profile: profile.extraExtensions.openDyslexicFont.enable or false)
 | |
|       (lib.attrValues config.programs.vscode.profiles);
 | |
| 
 | |
|     anyProfileUsesOpenDyslexicFont = enabledProfiles != [];
 | |
| 
 | |
|     fontPackages = lib.unique (map (profile: profile.extraExtensions.openDyslexicFont.package) enabledProfiles);
 | |
|   in {
 | |
|     # Ensure OpenDyslexic font packages are installed when any VSCode profile uses them
 | |
|     home.packages = fontPackages;
 | |
| 
 | |
|     fonts.fontconfig.enable = lib.mkIf anyProfileUsesOpenDyslexicFont true;
 | |
| 
 | |
|     # Add assertion to ensure the fonts are available
 | |
|     assertions =
 | |
|       map (fontPkg: {
 | |
|         assertion = lib.elem fontPkg config.home.packages;
 | |
|         message = "OpenDyslexic font package '${fontPkg.name or "unknown"}' must be installed when using openDyslexicFont extension for VSCode.";
 | |
|       })
 | |
|       fontPackages;
 | |
|   };
 | |
| }
 |