nixos: initial bitmap font support
This commit is contained in:
		
							parent
							
								
									3cb560dfe1
								
							
						
					
					
						commit
						3f11846977
					
				
					 10 changed files with 118 additions and 22 deletions
				
			
		|  | @ -18,7 +18,7 @@ | |||
|     }; | ||||
|     workstation = { | ||||
|       environment = "hyprland"; | ||||
|       theme = "minimal"; | ||||
|       theme = "hozen"; | ||||
|       profiles = ["creative" "virtualization" "gaming" "media" "communication" "productivity"]; | ||||
|       default = { | ||||
|         browser = "firefox"; | ||||
|  |  | |||
|  | @ -51,9 +51,9 @@ in { | |||
|         elixir.symbol = " "; | ||||
|         elm.symbol = " "; | ||||
|         gcloud.symbol = " "; | ||||
|         git_branch.symbol = " "; | ||||
|         git_branch.symbol = ""; | ||||
|         golang.symbol = " "; | ||||
|         hg_branch.symbol = " "; | ||||
|         hg_branch.symbol = ""; | ||||
|         java.symbol = " "; | ||||
|         julia.symbol = " "; | ||||
|         memory_usage.symbol = " "; | ||||
|  |  | |||
|  | @ -13,5 +13,7 @@ in { | |||
|     pkgs.noto-fonts | ||||
|     pkgs.noto-fonts-cjk-sans | ||||
|     pkgs.noto-fonts-emoji | ||||
|     (pkgs.nerdfonts.override | ||||
|       {fonts = ["NerdFontsSymbolsOnly"];}) | ||||
|   ]; | ||||
| } | ||||
|  |  | |||
|  | @ -23,13 +23,13 @@ in { | |||
|       settings.mainBar = { | ||||
|         layer = "top"; | ||||
|         position = "top"; | ||||
|         height = 30; | ||||
|         height = 32; | ||||
|         width = monitorWidth; | ||||
|         exclusive = true; | ||||
|         margin-top = 10; | ||||
|         margin-bottom = -12; | ||||
| 
 | ||||
|         modules-left = ["clock" "battery" "hyprland/workspaces"]; | ||||
|         modules-left = ["custom/logo" "clock" "battery" "hyprland/workspaces"]; | ||||
|         modules-center = []; | ||||
|         modules-right = ["custom/hyprrecord" "tray"]; | ||||
| 
 | ||||
|  | @ -82,6 +82,11 @@ in { | |||
|           on-click = "exec hyprrecord -a --waybar screen copysave video"; | ||||
|           signal = 12; | ||||
|         }; | ||||
|         "custom/logo" = { | ||||
|           format = "    "; | ||||
|           tooltop = "false"; | ||||
|           on-click = "exec notify-send 'hello!'"; | ||||
|         }; | ||||
|       }; | ||||
|       style = | ||||
|         /* | ||||
|  | @ -89,8 +94,8 @@ in { | |||
|         */ | ||||
|         '' | ||||
|           * { | ||||
|             font-family: "${fonts.monospace.family}"; | ||||
|             font-size: 19px; | ||||
|             font-family: "${fonts.monospace.family}:style=Medium"; | ||||
|             font-size: ${toString fonts.monospace.size}px; | ||||
|             border: solid #${color.border.base}; | ||||
|           } | ||||
| 
 | ||||
|  | @ -153,6 +158,13 @@ in { | |||
|             color: #${color.orange.base}; | ||||
|           } | ||||
| 
 | ||||
|           #custom-logo { | ||||
|             background-image: url('/home/ooks/Media/Pictures/my-art/pixel-art/info-icon.svg'); | ||||
|             background-position: center; | ||||
|             background-repeat: no-repeat; | ||||
|             background-size: 24px; | ||||
|           } | ||||
| 
 | ||||
|           #custom-hyprrecord { | ||||
|             color: #${color.red.base}; | ||||
|             padding-right: 20px; | ||||
|  |  | |||
|  | @ -1,22 +1,24 @@ | |||
| { | ||||
|   osConfig, | ||||
|   hozen, | ||||
|   inputs', | ||||
|   ... | ||||
| }: let | ||||
|   inherit (osConfig.ooknet.appearance) cursor; | ||||
|   inherit (hozen) color; | ||||
| in { | ||||
|   wayland.windowManager.hyprland = { | ||||
|     plugins = [inputs'.hyprland-plugins.packages.borders-plus-plus]; | ||||
|     settings = { | ||||
|       # cursor = { | ||||
|       #   inactive_timeout = 4; | ||||
|       # }; | ||||
|       general = { | ||||
|         border_size = 2; | ||||
|         "col.inactive_border" = "rgb(${color.neutrals."700"})"; | ||||
|         "col.active_border" = "rgb(${color.neutrals."650"})"; | ||||
|         gaps_in = 10; | ||||
|         gaps_out = 10; | ||||
|         border_size = 2; | ||||
|         "col.active_border" = "0xff${color.border.active}"; | ||||
|         "col.inactive_border" = "0xff${color.border.inactive}"; | ||||
|       }; | ||||
| 
 | ||||
|       exec-once = [ | ||||
|  | @ -35,12 +37,23 @@ in { | |||
|           ignore_opacity = true; | ||||
|         }; | ||||
|         shadow = { | ||||
|           range = 12; | ||||
|           offset = "3 3"; | ||||
|           color = "0x44000000"; | ||||
|           color_inactive = "0x66000000"; | ||||
|           enabled = true; | ||||
|           range = 2; | ||||
|           sharp = true; | ||||
|           offset = "2 2"; | ||||
|           color = "0xff${color.neutrals."850"}"; | ||||
|           color_inactive = "0xff${color.neutrals."850"}"; | ||||
|         }; | ||||
|       }; | ||||
|       "plugin:borders-plus-plus" = { | ||||
|         enabled = true; | ||||
|         add_borders = 1; | ||||
|         "col.border_1" = "rgb(${color.neutrals."600"})"; | ||||
| 
 | ||||
|         border_size_1 = 2; | ||||
|         border_size_2 = 2; | ||||
|         natural_rounding = false; | ||||
|       }; | ||||
|       animations = { | ||||
|         enabled = false; | ||||
|       }; | ||||
|  |  | |||
|  | @ -9,6 +9,10 @@ | |||
|   inherit (lib) mkMerge mkIf; | ||||
|   inherit (osConfig.ooknet.workstation) default; | ||||
|   cfg = osConfig.ooknet.workstation.programs.foot; | ||||
|   fontOptions = let | ||||
|     size = if fonts.monospace.bitmap then "pixelsize" else "size"; | ||||
|     family = if fonts.monospace.bitmap then "${fonts.monospace.family}:style=Medium" else "${fonts.monospace.family}"; | ||||
|   in "${family}:${size}${toString fonts.monospace.size}"; | ||||
| in { | ||||
|   config = mkMerge [ | ||||
|     (mkIf (cfg.enable || default.terminal == "foot") { | ||||
|  | @ -18,12 +22,12 @@ in { | |||
|         settings = { | ||||
|           main = { | ||||
|             term = "xterm-256color"; | ||||
|             font = "${fonts.monospace.family}:pixelsize=18:antialias=true"; | ||||
|             font-bold = "${fonts.monospace.family}:style=Bold:pixelsize=18:antialias=true"; | ||||
|             font-italic = "${fonts.monospace.family}:style=Italic:pixelsize=18:antialias=true"; | ||||
|             font-bold-italic = "${fonts.monospace.family}:style=Bold Italic:pixelsize=18:antialias=true"; | ||||
|             dpi-aware = "yes"; | ||||
|             letter-spacing = "-1px"; | ||||
|             font = "${fonts.monospace.family}:style=Medium:pixelsize=${toString fonts.monospace.size}",${fonts.monospace.fallback.family}; | ||||
|             font-bold = "${fonts.monospace.family}:style=Medium:pixelsize=${toString fonts.monospace.size}"; | ||||
|             font-italic = "${fonts.monospace.family}:style=Medium:pixelsize=${toString fonts.monospace.size}"; | ||||
|             font-bold-italic = "${fonts.monospace.family}:style=Medium:pixelsize=${toString fonts.monospace.size}"; | ||||
|             dpi-aware = "no"; | ||||
|             letter-spacing = "0"; | ||||
|             bold-text-in-bright = "palette-based"; | ||||
|             resize-delay-ms = "80"; | ||||
|             pad = "9x9 center"; | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| {lib, ...}: let | ||||
|   inherit (lib) mkOption; | ||||
|   inherit (lib.types) str package path int; | ||||
|   inherit (lib.types) str package path int bool; | ||||
| 
 | ||||
|   mkFontOption = { | ||||
|     family = mkOption { | ||||
|  | @ -11,6 +11,28 @@ | |||
|       type = package; | ||||
|       default = null; | ||||
|     }; | ||||
|     size = mkOption { | ||||
|       type = int; | ||||
|       default = 18; | ||||
|     }; | ||||
|     bitmap = mkOption { | ||||
|       type = bool; | ||||
|       default = false; | ||||
|     }; | ||||
|     fallback = { | ||||
|       family = mkOption { | ||||
|         type = str; | ||||
|         default = ""; | ||||
|       }; | ||||
|       package = mkOption { | ||||
|         type = package; | ||||
|         default = null; | ||||
|       }; | ||||
|       size = mkOption { | ||||
|         type = int; | ||||
|         default = null; | ||||
|       }; | ||||
|     }; | ||||
|   }; | ||||
| in { | ||||
|   #  imports = [./palettes]; | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ | |||
| in { | ||||
|   options.ooknet.workstation = { | ||||
|     theme = mkOption { | ||||
|       type = nullOr (enum ["minimal"]); | ||||
|       type = nullOr (enum ["minimal" "hozen"]); | ||||
|       default = null; | ||||
|     }; | ||||
|     profiles = mkOption { | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| { | ||||
|   imports = [ | ||||
|     ./minimal.nix | ||||
|     ./hozen.nix | ||||
|   ]; | ||||
| } | ||||
|  |  | |||
							
								
								
									
										42
									
								
								modules/nixos/workstation/themes/hozen.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								modules/nixos/workstation/themes/hozen.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,42 @@ | |||
| { | ||||
|   config, | ||||
|   lib, | ||||
|   pkgs, | ||||
|   hozen, | ||||
|   ... | ||||
| }: let | ||||
|   inherit (lib) mkIf; | ||||
|   inherit (config.ooknet.workstation) theme; | ||||
|   generatedWallpaper = import ./generated-wallpaper.nix {inherit hozen config pkgs;} {}; | ||||
| in { | ||||
|   config = mkIf (theme == "hozen") { | ||||
|     ooknet.appearance = { | ||||
|       fonts = { | ||||
|         monospace = { | ||||
|           family = "CozetteHiDpi"; | ||||
|           package = pkgs.cozette; | ||||
|           size = 22; | ||||
|           fallback = { | ||||
|             family = "JetBrainsMono Nerd Font"; | ||||
|             package = pkgs.nerfonts.override {fonts = ["JetBrainsMono"];}; | ||||
|             size = 18; | ||||
|           }; | ||||
|         }; | ||||
|         regular = { | ||||
|           family = "Fira Sans"; | ||||
|           package = pkgs.fira; | ||||
|         }; | ||||
|       }; | ||||
| 
 | ||||
|       cursor = { | ||||
|         name = "Bibata-Modern-Ice"; | ||||
|         package = pkgs.bibata-cursors; | ||||
|         size = 22; | ||||
|       }; | ||||
| 
 | ||||
|       wallpaper = { | ||||
|         path = "${generatedWallpaper}"; | ||||
|       }; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue