nixos: rework font options
This commit is contained in:
parent
c9f7e6b53c
commit
1fa7ae2a66
6 changed files with 107 additions and 41 deletions
|
|
@ -1,19 +1,23 @@
|
|||
{
|
||||
osConfig,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (osConfig.ooknet.appearance.fonts) monospace regular;
|
||||
inherit (lib) optionals;
|
||||
in {
|
||||
fonts.fontconfig.enable = true;
|
||||
home.packages = [
|
||||
monospace.package
|
||||
regular.package
|
||||
home.packages =
|
||||
[
|
||||
monospace.package
|
||||
regular.package
|
||||
|
||||
pkgs.noto-fonts
|
||||
pkgs.noto-fonts-cjk-sans
|
||||
pkgs.noto-fonts-emoji
|
||||
(pkgs.nerdfonts.override
|
||||
{fonts = ["NerdFontsSymbolsOnly"];})
|
||||
];
|
||||
pkgs.noto-fonts
|
||||
pkgs.noto-fonts-cjk-sans
|
||||
pkgs.noto-fonts-emoji
|
||||
(pkgs.nerdfonts.override
|
||||
{fonts = ["NerdFontsSymbolsOnly"];})
|
||||
]
|
||||
++ optionals (monospace.fallback != null) [monospace.fallback.package];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ in {
|
|||
*/
|
||||
''
|
||||
* {
|
||||
font-family: "${fonts.monospace.family}:style=Medium";
|
||||
font-family: "${fonts.monospace.family}";
|
||||
font-size: ${toString fonts.monospace.size}px;
|
||||
border: solid #${color.border.base};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,15 +4,27 @@
|
|||
hozen,
|
||||
...
|
||||
}: let
|
||||
inherit (osConfig.ooknet.appearance) fonts;
|
||||
inherit (osConfig.ooknet.appearance.fonts) monospace;
|
||||
inherit (hozen) color;
|
||||
inherit (lib) mkMerge mkIf;
|
||||
inherit (osConfig.ooknet.workstation) default;
|
||||
|
||||
mkFontConfig = font: style: let
|
||||
mkFont = f: let
|
||||
sizeAttr =
|
||||
if f.bitmap
|
||||
then "pixelsize"
|
||||
else "size";
|
||||
familyStyle = f.variants.${style} or f.variants.regular;
|
||||
in "${familyStyle}:${sizeAttr}=${toString font.size}";
|
||||
primary = mkFont font;
|
||||
fallback =
|
||||
if font.fallback != null
|
||||
then ",${mkFont font.fallback}"
|
||||
else "";
|
||||
in "${primary}${fallback}";
|
||||
|
||||
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") {
|
||||
|
|
@ -22,16 +34,20 @@ in {
|
|||
settings = {
|
||||
main = {
|
||||
term = "xterm-256color";
|
||||
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";
|
||||
font = mkFontConfig monospace "regular";
|
||||
font-bold = mkFontConfig monospace "bold";
|
||||
font-italic = mkFontConfig monospace "italic";
|
||||
font-bold-italic = mkFontConfig monospace "boldItalic";
|
||||
dpi-aware =
|
||||
if monospace.bitmap
|
||||
then "no"
|
||||
else "yes";
|
||||
letter-spacing = "0";
|
||||
bold-text-in-bright = "palette-based";
|
||||
resize-delay-ms = "80";
|
||||
pad = "9x9 center";
|
||||
selection-target = "clipboard";
|
||||
font-size-adjustment = "1px";
|
||||
};
|
||||
|
||||
tweak = {
|
||||
|
|
|
|||
|
|
@ -1,12 +1,32 @@
|
|||
{lib, ...}: let
|
||||
inherit (lib) mkOption;
|
||||
inherit (lib.types) str package path int bool;
|
||||
inherit (lib.types) str package path int bool submodule nullOr;
|
||||
|
||||
mkFontOption = {
|
||||
mkVariantOption = {
|
||||
regular = mkOption {
|
||||
type = str;
|
||||
default = "";
|
||||
};
|
||||
bold = mkOption {
|
||||
type = str;
|
||||
default = "";
|
||||
};
|
||||
italic = mkOption {
|
||||
type = str;
|
||||
default = "";
|
||||
};
|
||||
boldItalic = mkOption {
|
||||
type = str;
|
||||
default = "";
|
||||
};
|
||||
};
|
||||
|
||||
mkBaseFontOption = {
|
||||
family = mkOption {
|
||||
type = str;
|
||||
default = "";
|
||||
};
|
||||
variants = mkVariantOption;
|
||||
package = mkOption {
|
||||
type = package;
|
||||
default = null;
|
||||
|
|
@ -19,21 +39,15 @@
|
|||
type = bool;
|
||||
default = false;
|
||||
};
|
||||
fallback = {
|
||||
family = mkOption {
|
||||
type = str;
|
||||
default = "";
|
||||
};
|
||||
package = mkOption {
|
||||
type = package;
|
||||
default = null;
|
||||
};
|
||||
size = mkOption {
|
||||
type = int;
|
||||
};
|
||||
mkFontOption =
|
||||
mkBaseFontOption
|
||||
// {
|
||||
fallback = mkOption {
|
||||
type = nullOr (submodule {options = mkBaseFontOption;});
|
||||
default = null;
|
||||
};
|
||||
};
|
||||
};
|
||||
in {
|
||||
# imports = [./palettes];
|
||||
options.ooknet.appearance = {
|
||||
|
|
|
|||
|
|
@ -13,17 +13,36 @@ in {
|
|||
ooknet.appearance = {
|
||||
fonts = {
|
||||
monospace = {
|
||||
family = "CozetteHiDpi";
|
||||
package = pkgs.cozette;
|
||||
size = 22;
|
||||
bitmap = true;
|
||||
package = pkgs.monocraft;
|
||||
size = 18;
|
||||
family = "Monocraft";
|
||||
variants = {
|
||||
regular = "Monocraft:style=Medium";
|
||||
bold = "Monocraft:style=Medium";
|
||||
italic = "Monocraft:style=Medium";
|
||||
boldItalic = "Monocraft:style=Medium";
|
||||
};
|
||||
fallback = {
|
||||
family = "JetBrainsMono Nerd Font";
|
||||
package = pkgs.nerfonts.override {fonts = ["JetBrainsMono"];};
|
||||
family = "JetBrainsMono NFM";
|
||||
variants = {
|
||||
regular = "JetBrainsMono NFM:style=Regular";
|
||||
bold = "JetBrainsMono NFM:style=Bold";
|
||||
italic = "JetBrainsMono NFM:style=Italic";
|
||||
boldItalic = "JetBrainsMono NFM:style=Bold Italic";
|
||||
};
|
||||
package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];};
|
||||
size = 18;
|
||||
};
|
||||
};
|
||||
regular = {
|
||||
family = "Fira Sans";
|
||||
variants = {
|
||||
regular = "Fira Sans:style=Regular";
|
||||
bold = "Fira Sans:style=Bold";
|
||||
italic = "Fira Sans:style=Italic";
|
||||
boldItalic = "Fira Sans:style=Bold Italic";
|
||||
};
|
||||
package = pkgs.fira;
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -13,12 +13,25 @@ in {
|
|||
ooknet.appearance = {
|
||||
fonts = {
|
||||
monospace = {
|
||||
family = "JetBrainsMono Nerd Font";
|
||||
package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];};
|
||||
size = 18;
|
||||
family = "JetBrainsMono NF";
|
||||
variants = {
|
||||
regular = "JetBrainsMono NF:style=Regular";
|
||||
bold = "JetBrainsMono NF:style=Bold";
|
||||
italic = "JetBrainsMono NF:style=Italic";
|
||||
boldItalic = "JetBrainsMono NF:style=Bold Italic";
|
||||
};
|
||||
};
|
||||
regular = {
|
||||
family = "Fira Sans";
|
||||
package = pkgs.fira;
|
||||
family = "Fira Sans";
|
||||
variants = {
|
||||
regular = "Fira Sans:style=Regular";
|
||||
bold = "Fira Sans:style=Bold";
|
||||
italic = "Fira Sans:style=Italic";
|
||||
boldItalic = "Fira Sans:style=Bold Italic";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue