nixos: initial bitmap font support

This commit is contained in:
ooks-io 2024-12-08 23:04:16 +11:00
parent 3cb560dfe1
commit 3f11846977
10 changed files with 118 additions and 22 deletions

View file

@ -18,7 +18,7 @@
}; };
workstation = { workstation = {
environment = "hyprland"; environment = "hyprland";
theme = "minimal"; theme = "hozen";
profiles = ["creative" "virtualization" "gaming" "media" "communication" "productivity"]; profiles = ["creative" "virtualization" "gaming" "media" "communication" "productivity"];
default = { default = {
browser = "firefox"; browser = "firefox";

View file

@ -51,9 +51,9 @@ in {
elixir.symbol = " "; elixir.symbol = " ";
elm.symbol = " "; elm.symbol = " ";
gcloud.symbol = " "; gcloud.symbol = " ";
git_branch.symbol = " "; git_branch.symbol = "";
golang.symbol = " "; golang.symbol = " ";
hg_branch.symbol = " "; hg_branch.symbol = "";
java.symbol = " "; java.symbol = " ";
julia.symbol = " "; julia.symbol = " ";
memory_usage.symbol = "󰍛 "; memory_usage.symbol = "󰍛 ";

View file

@ -13,5 +13,7 @@ in {
pkgs.noto-fonts pkgs.noto-fonts
pkgs.noto-fonts-cjk-sans pkgs.noto-fonts-cjk-sans
pkgs.noto-fonts-emoji pkgs.noto-fonts-emoji
(pkgs.nerdfonts.override
{fonts = ["NerdFontsSymbolsOnly"];})
]; ];
} }

View file

@ -23,13 +23,13 @@ in {
settings.mainBar = { settings.mainBar = {
layer = "top"; layer = "top";
position = "top"; position = "top";
height = 30; height = 32;
width = monitorWidth; width = monitorWidth;
exclusive = true; exclusive = true;
margin-top = 10; margin-top = 10;
margin-bottom = -12; margin-bottom = -12;
modules-left = ["clock" "battery" "hyprland/workspaces"]; modules-left = ["custom/logo" "clock" "battery" "hyprland/workspaces"];
modules-center = []; modules-center = [];
modules-right = ["custom/hyprrecord" "tray"]; modules-right = ["custom/hyprrecord" "tray"];
@ -82,6 +82,11 @@ in {
on-click = "exec hyprrecord -a --waybar screen copysave video"; on-click = "exec hyprrecord -a --waybar screen copysave video";
signal = 12; signal = 12;
}; };
"custom/logo" = {
format = " ";
tooltop = "false";
on-click = "exec notify-send 'hello!'";
};
}; };
style = style =
/* /*
@ -89,8 +94,8 @@ in {
*/ */
'' ''
* { * {
font-family: "${fonts.monospace.family}"; font-family: "${fonts.monospace.family}:style=Medium";
font-size: 19px; font-size: ${toString fonts.monospace.size}px;
border: solid #${color.border.base}; border: solid #${color.border.base};
} }
@ -153,6 +158,13 @@ in {
color: #${color.orange.base}; 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 { #custom-hyprrecord {
color: #${color.red.base}; color: #${color.red.base};
padding-right: 20px; padding-right: 20px;

View file

@ -1,22 +1,24 @@
{ {
osConfig, osConfig,
hozen, hozen,
inputs',
... ...
}: let }: let
inherit (osConfig.ooknet.appearance) cursor; inherit (osConfig.ooknet.appearance) cursor;
inherit (hozen) color; inherit (hozen) color;
in { in {
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
plugins = [inputs'.hyprland-plugins.packages.borders-plus-plus];
settings = { settings = {
# cursor = { # cursor = {
# inactive_timeout = 4; # inactive_timeout = 4;
# }; # };
general = { general = {
border_size = 2;
"col.inactive_border" = "rgb(${color.neutrals."700"})";
"col.active_border" = "rgb(${color.neutrals."650"})";
gaps_in = 10; gaps_in = 10;
gaps_out = 10; gaps_out = 10;
border_size = 2;
"col.active_border" = "0xff${color.border.active}";
"col.inactive_border" = "0xff${color.border.inactive}";
}; };
exec-once = [ exec-once = [
@ -35,12 +37,23 @@ in {
ignore_opacity = true; ignore_opacity = true;
}; };
shadow = { shadow = {
range = 12; enabled = true;
offset = "3 3"; range = 2;
color = "0x44000000"; sharp = true;
color_inactive = "0x66000000"; 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 = { animations = {
enabled = false; enabled = false;
}; };

View file

@ -9,6 +9,10 @@
inherit (lib) mkMerge mkIf; inherit (lib) mkMerge mkIf;
inherit (osConfig.ooknet.workstation) default; inherit (osConfig.ooknet.workstation) default;
cfg = osConfig.ooknet.workstation.programs.foot; 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 { in {
config = mkMerge [ config = mkMerge [
(mkIf (cfg.enable || default.terminal == "foot") { (mkIf (cfg.enable || default.terminal == "foot") {
@ -18,12 +22,12 @@ in {
settings = { settings = {
main = { main = {
term = "xterm-256color"; term = "xterm-256color";
font = "${fonts.monospace.family}:pixelsize=18:antialias=true"; font = "${fonts.monospace.family}:style=Medium:pixelsize=${toString fonts.monospace.size}",${fonts.monospace.fallback.family};
font-bold = "${fonts.monospace.family}:style=Bold:pixelsize=18:antialias=true"; font-bold = "${fonts.monospace.family}:style=Medium:pixelsize=${toString fonts.monospace.size}";
font-italic = "${fonts.monospace.family}:style=Italic:pixelsize=18:antialias=true"; font-italic = "${fonts.monospace.family}:style=Medium:pixelsize=${toString fonts.monospace.size}";
font-bold-italic = "${fonts.monospace.family}:style=Bold Italic:pixelsize=18:antialias=true"; font-bold-italic = "${fonts.monospace.family}:style=Medium:pixelsize=${toString fonts.monospace.size}";
dpi-aware = "yes"; dpi-aware = "no";
letter-spacing = "-1px"; letter-spacing = "0";
bold-text-in-bright = "palette-based"; bold-text-in-bright = "palette-based";
resize-delay-ms = "80"; resize-delay-ms = "80";
pad = "9x9 center"; pad = "9x9 center";

View file

@ -1,6 +1,6 @@
{lib, ...}: let {lib, ...}: let
inherit (lib) mkOption; inherit (lib) mkOption;
inherit (lib.types) str package path int; inherit (lib.types) str package path int bool;
mkFontOption = { mkFontOption = {
family = mkOption { family = mkOption {
@ -11,6 +11,28 @@
type = package; type = package;
default = null; 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 { in {
# imports = [./palettes]; # imports = [./palettes];

View file

@ -4,7 +4,7 @@
in { in {
options.ooknet.workstation = { options.ooknet.workstation = {
theme = mkOption { theme = mkOption {
type = nullOr (enum ["minimal"]); type = nullOr (enum ["minimal" "hozen"]);
default = null; default = null;
}; };
profiles = mkOption { profiles = mkOption {

View file

@ -1,5 +1,6 @@
{ {
imports = [ imports = [
./minimal.nix ./minimal.nix
./hozen.nix
]; ];
} }

View 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}";
};
};
};
}