From 3f1184697726d737f86356d78cc9a21794ec1495 Mon Sep 17 00:00:00 2001 From: ooks-io Date: Sun, 8 Dec 2024 23:04:16 +1100 Subject: [PATCH] nixos: initial bitmap font support --- hosts/ooksdesk/default.nix | 2 +- modules/home/console/tools/starship.nix | 4 +- modules/home/workstation/appearance/fonts.nix | 2 + .../hyprland/components/waybar.nix | 20 +++++++-- .../hyprland/settings/appearance.nix | 27 ++++++++---- modules/home/workstation/terminal/foot.nix | 16 ++++--- modules/nixos/appearance/options.nix | 24 ++++++++++- modules/nixos/workstation/options.nix | 2 +- modules/nixos/workstation/themes/default.nix | 1 + modules/nixos/workstation/themes/hozen.nix | 42 +++++++++++++++++++ 10 files changed, 118 insertions(+), 22 deletions(-) create mode 100644 modules/nixos/workstation/themes/hozen.nix diff --git a/hosts/ooksdesk/default.nix b/hosts/ooksdesk/default.nix index ccb862e..b3f3359 100644 --- a/hosts/ooksdesk/default.nix +++ b/hosts/ooksdesk/default.nix @@ -18,7 +18,7 @@ }; workstation = { environment = "hyprland"; - theme = "minimal"; + theme = "hozen"; profiles = ["creative" "virtualization" "gaming" "media" "communication" "productivity"]; default = { browser = "firefox"; diff --git a/modules/home/console/tools/starship.nix b/modules/home/console/tools/starship.nix index deb4449..95cd762 100644 --- a/modules/home/console/tools/starship.nix +++ b/modules/home/console/tools/starship.nix @@ -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 = "󰍛 "; diff --git a/modules/home/workstation/appearance/fonts.nix b/modules/home/workstation/appearance/fonts.nix index 2354d11..1a42574 100644 --- a/modules/home/workstation/appearance/fonts.nix +++ b/modules/home/workstation/appearance/fonts.nix @@ -13,5 +13,7 @@ in { pkgs.noto-fonts pkgs.noto-fonts-cjk-sans pkgs.noto-fonts-emoji + (pkgs.nerdfonts.override + {fonts = ["NerdFontsSymbolsOnly"];}) ]; } diff --git a/modules/home/workstation/hyprland/components/waybar.nix b/modules/home/workstation/hyprland/components/waybar.nix index 89ac6b0..16c44b7 100644 --- a/modules/home/workstation/hyprland/components/waybar.nix +++ b/modules/home/workstation/hyprland/components/waybar.nix @@ -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; diff --git a/modules/home/workstation/hyprland/settings/appearance.nix b/modules/home/workstation/hyprland/settings/appearance.nix index 2f06c55..2b15154 100644 --- a/modules/home/workstation/hyprland/settings/appearance.nix +++ b/modules/home/workstation/hyprland/settings/appearance.nix @@ -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; }; diff --git a/modules/home/workstation/terminal/foot.nix b/modules/home/workstation/terminal/foot.nix index 2c481cf..3a6f95b 100644 --- a/modules/home/workstation/terminal/foot.nix +++ b/modules/home/workstation/terminal/foot.nix @@ -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"; diff --git a/modules/nixos/appearance/options.nix b/modules/nixos/appearance/options.nix index da0de81..aea78c4 100644 --- a/modules/nixos/appearance/options.nix +++ b/modules/nixos/appearance/options.nix @@ -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]; diff --git a/modules/nixos/workstation/options.nix b/modules/nixos/workstation/options.nix index f4e72a4..7f1ff9b 100644 --- a/modules/nixos/workstation/options.nix +++ b/modules/nixos/workstation/options.nix @@ -4,7 +4,7 @@ in { options.ooknet.workstation = { theme = mkOption { - type = nullOr (enum ["minimal"]); + type = nullOr (enum ["minimal" "hozen"]); default = null; }; profiles = mkOption { diff --git a/modules/nixos/workstation/themes/default.nix b/modules/nixos/workstation/themes/default.nix index a153a13..269af8e 100644 --- a/modules/nixos/workstation/themes/default.nix +++ b/modules/nixos/workstation/themes/default.nix @@ -1,5 +1,6 @@ { imports = [ ./minimal.nix + ./hozen.nix ]; } diff --git a/modules/nixos/workstation/themes/hozen.nix b/modules/nixos/workstation/themes/hozen.nix new file mode 100644 index 0000000..83f8d12 --- /dev/null +++ b/modules/nixos/workstation/themes/hozen.nix @@ -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}"; + }; + }; + }; +}