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 = {
environment = "hyprland";
theme = "minimal";
theme = "hozen";
profiles = ["creative" "virtualization" "gaming" "media" "communication" "productivity"];
default = {
browser = "firefox";

View file

@ -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 = "󰍛 ";

View file

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

View file

@ -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;

View file

@ -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;
};

View file

@ -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";

View file

@ -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];

View file

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

View file

@ -1,5 +1,6 @@
{
imports = [
./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}";
};
};
};
}