diff --git a/flake.nix b/flake.nix index d8db6d3f..fbf537af 100644 --- a/flake.nix +++ b/flake.nix @@ -64,7 +64,7 @@ _module.args = { colorscheme = "gruvbox"; - fonts = (import ./fonts).iosevka; + fontstack = "iosevka"; username = "noib3"; }; diff --git a/fonts/default.nix b/fonts/default.nix deleted file mode 100644 index 54a7477d..00000000 --- a/fonts/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -let - fonts = { - emoji = import ./emoji; - monospace = import ./monospace; - sansSerif = import ./sans-serif; - serif = import ./serif; - }; -in -{ - blex = pkgs: rec { - sansSerif = monospace; - serif = monospace; - monospace = fonts.monospace.blex-mono { inherit pkgs; }; - emoji = fonts.emoji.noto-color { inherit pkgs; }; - }; - - docsrs = pkgs: { - sansSerif = fonts.sansSerif.fira-sans { inherit pkgs; }; - serif = fonts.serif.source-serif { inherit pkgs; }; - monospace = fonts.monospace.source-code-pro { inherit pkgs; }; - emoji = fonts.emoji.noto-color { inherit pkgs; }; - }; - - fira = pkgs: rec { - sansSerif = fonts.sansSerif.fira-sans { inherit pkgs; }; - serif = sansSerif; - monospace = fonts.monospace.fira-code { inherit pkgs; }; - emoji = fonts.emoji.noto-color { inherit pkgs; }; - }; - - iosevka = pkgs: rec { - sansSerif = fonts.sansSerif.iosevka-aile { inherit pkgs; }; - serif = sansSerif; - monospace = fonts.monospace.iosevka-term { inherit pkgs; }; - emoji = fonts.emoji.noto-color { inherit pkgs; }; - }; -} diff --git a/fonts/emoji/default.nix b/fonts/emoji/default.nix deleted file mode 100644 index f10c9fe2..00000000 --- a/fonts/emoji/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - noto-color = import ./noto-color.nix; -} diff --git a/fonts/emoji/noto-color.nix b/fonts/emoji/noto-color.nix deleted file mode 100644 index 99636864..00000000 --- a/fonts/emoji/noto-color.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - name = "Noto Color Emoji"; - package = pkgs.noto-fonts-color-emoji; - size = _config: _program: 16.5; -} diff --git a/fonts/module.nix b/fonts/module.nix deleted file mode 100644 index f8eac16d..00000000 --- a/fonts/module.nix +++ /dev/null @@ -1,97 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -with lib; -let - cfg = config.fonts; - - mkFontFamily = - { description }: - mkOption { - type = types.submodule { - options = { - name = mkOption { - type = types.str; - example = "Iosevka Nerd Font"; - description = "The name of the font family"; - }; - - package = mkOption { - type = types.package; - example = pkgs.fira-sans; - description = "The package providing the font family"; - }; - - size = mkOption { - type = types.functionTo (types.functionTo types.float); - example = config: program: if program == "qutebrowser" then 18 else 16; - description = '' - The size of the font in a program given the global config and its - name - ''; - }; - - normal = mkOption { - type = types.str; - example = "Regular"; - default = "Regular"; - description = "The normal variant of the font family"; - }; - - bold = mkOption { - type = types.str; - example = "Bold"; - default = "Bold"; - description = "The bold variant of the font family"; - }; - - italic = mkOption { - type = types.str; - example = "Italic"; - default = "Italic"; - description = "The italic variant of the font family"; - }; - - bold_italic = mkOption { - type = types.str; - example = "Bold Italic"; - default = "Bold Italic"; - description = "The bold italic variant of the font family"; - }; - }; - }; - inherit description; - }; -in -{ - options.fonts = { - serif = mkFontFamily { description = "Serif font family"; }; - sansSerif = mkFontFamily { description = "Sans serif font family"; }; - monospace = mkFontFamily { description = "Monospace font family"; }; - emoji = mkFontFamily { description = "Emoji font family"; }; - }; - - config = { - fonts.fontconfig = { - enable = pkgs.stdenv.isLinux; - - defaultFonts = { - serif = [ cfg.serif.name ]; - sansSerif = [ cfg.sansSerif.name ]; - monospace = [ cfg.monospace.name ]; - emoji = [ cfg.emoji.name ]; - }; - }; - - home.packages = [ - cfg.serif.package - cfg.sansSerif.package - cfg.monospace.package - cfg.emoji.package - ]; - }; -} diff --git a/fonts/monospace/blex-mono.nix b/fonts/monospace/blex-mono.nix deleted file mode 100644 index a8364a48..00000000 --- a/fonts/monospace/blex-mono.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ pkgs, ... }: - -{ - name = "BlexMono Nerd Font"; - package = pkgs.nerd-fonts.blex-mono; - size = - config: program: - if program == "ghostty" && config.machines."skunk@linux".isCurrent then - 14.0 - else - 18.5; -} diff --git a/fonts/monospace/default.nix b/fonts/monospace/default.nix deleted file mode 100644 index 90025402..00000000 --- a/fonts/monospace/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ - blex-mono = import ./blex-mono.nix; - fira-code = import ./fira-code.nix; - inconsolata = import ./inconsolata.nix; - iosevka-term = import ./iosevka-term.nix; - jetbrains-mono = import ./jetbrains-mono.nix; - source-code-pro = import ./source-code-pro.nix; -} diff --git a/fonts/monospace/fira-code.nix b/fonts/monospace/fira-code.nix deleted file mode 100644 index 56859d78..00000000 --- a/fonts/monospace/fira-code.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs, ... }: - -{ - name = "FiraCode Nerd Font"; - package = pkgs.nerd-fonts.fira-code; - size = - config: _program: - if config.machines."skunk@darwin".isCurrent then 18.5 else 13.5; -} diff --git a/fonts/monospace/inconsolata.nix b/fonts/monospace/inconsolata.nix deleted file mode 100644 index 34fa0d3a..00000000 --- a/fonts/monospace/inconsolata.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - name = "Inconsolata Nerd Font"; - package = pkgs.nerd-fonts.inconsolata; - size = _config: _program: 16.5; -} diff --git a/fonts/monospace/iosevka-term.nix b/fonts/monospace/iosevka-term.nix deleted file mode 100644 index 2d26af2b..00000000 --- a/fonts/monospace/iosevka-term.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ pkgs, ... }: - -{ - name = "IosevkaTerm Nerd Font"; - bold = "ExtraBold"; - bold_italic = "ExtraBold Italic"; - package = pkgs.nerd-fonts.iosevka-term; - size = - config: _program: - if config.machines."skunk@darwin".isCurrent then - 22.75 - else if config.machines.stolen-bride.isCurrent then - 22.0 - else - 16.5; -} diff --git a/fonts/monospace/jetbrains-mono.nix b/fonts/monospace/jetbrains-mono.nix deleted file mode 100644 index 810e0d24..00000000 --- a/fonts/monospace/jetbrains-mono.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ pkgs, ... }: - -{ - name = "JetBrainsMono Nerd Font"; - package = pkgs.nerd-fonts.jetbrains-mono; - size = _config: _program: 16.5; - bold = { - name = "Extra Bold"; - }; - bold_italic = { - name = "Extra Bold"; - }; -} diff --git a/fonts/monospace/source-code-pro.nix b/fonts/monospace/source-code-pro.nix deleted file mode 100644 index 46a08dbe..00000000 --- a/fonts/monospace/source-code-pro.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ pkgs, ... }: - -{ - name = "SourceCodePro Nerd Font"; - package = pkgs.nerd-fonts.sauce-code-pro; - size = - config: program: - if program == "ghostty" && config.machines."skunk@linux".isCurrent then - 14.0 - else - 16.5; -} diff --git a/fonts/sans-serif/default.nix b/fonts/sans-serif/default.nix deleted file mode 100644 index 97aa6f50..00000000 --- a/fonts/sans-serif/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ - iosevka-aile = import ./iosevka-aile.nix; - fira-sans = import ./fira-sans.nix; -} diff --git a/fonts/sans-serif/fira-sans.nix b/fonts/sans-serif/fira-sans.nix deleted file mode 100644 index 5afe7903..00000000 --- a/fonts/sans-serif/fira-sans.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - name = "FiraSans"; - package = pkgs.fira-sans; - size = _config: _program: 14.5; -} diff --git a/fonts/sans-serif/iosevka-aile.nix b/fonts/sans-serif/iosevka-aile.nix deleted file mode 100644 index 06ce1374..00000000 --- a/fonts/sans-serif/iosevka-aile.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - name = "Iosevka Aile"; - package = pkgs.iosevka-bin.override { variant = "Aile"; }; - size = _config: _program: 16.5; -} diff --git a/fonts/serif/default.nix b/fonts/serif/default.nix deleted file mode 100644 index 86d0b524..00000000 --- a/fonts/serif/default.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - source-serif = import ./source-serif.nix; -} diff --git a/fonts/serif/source-serif.nix b/fonts/serif/source-serif.nix deleted file mode 100644 index b6573397..00000000 --- a/fonts/serif/source-serif.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - name = "Source Serif 4"; - package = pkgs.source-serif; - size = _config: _program: 16.5; -} diff --git a/modules/flake/machines/default.nix b/modules/flake/machines/default.nix index f549de2c..a7626d74 100644 --- a/modules/flake/machines/default.nix +++ b/modules/flake/machines/default.nix @@ -3,7 +3,7 @@ config, lib, colorscheme, - fonts, + fontstack, username, ... }: @@ -90,23 +90,18 @@ in cfg |> lib.mapAttrs ( machineName: machine: - inputs.home-manager.lib.homeManagerConfiguration rec { - pkgs = import inputs.nixpkgs { - inherit (machine) system; - overlays = [ - inputs.brew-nix.overlays.default - ]; - }; + inputs.home-manager.lib.homeManagerConfiguration { + pkgs = inputs.nixpkgs.legacyPackages.${machine.system}; modules = [ - homeManagerMachinesModule - ../../../fonts/module.nix ../../home + homeManagerMachinesModule { - fonts = fonts pkgs; home.username = username; machines.current.name = machineName; modules.colorscheme.${colorscheme}.enable = true; + modules.fonts.stacks.${fontstack}.enable = true; + nixpkgs.overlays = [ inputs.brew-nix.overlays.default ]; } ]; diff --git a/modules/home/fonts/default.nix b/modules/home/fonts/default.nix new file mode 100644 index 00000000..50772f19 --- /dev/null +++ b/modules/home/fonts/default.nix @@ -0,0 +1,70 @@ +{ + config, + lib, + pkgs, + ... +}: + +with lib; +let + cfg = config.modules.fonts; + fontSubmodule = import ./font-submodule.nix { inherit lib; }; +in +{ + imports = [ + ./emoji + ./monospace + ./sans-serif + ./serif + ./stacks + ]; + + options.modules.fonts = { + monospace = mkOption { + type = types.attrsOf fontSubmodule; + default = { }; + description = "All declared monospace fonts"; + }; + + sansSerif = mkOption { + type = types.attrsOf fontSubmodule; + default = { }; + description = "All declared sans-serif fonts"; + }; + + serif = mkOption { + type = types.attrsOf fontSubmodule; + default = { }; + description = "All declared serif fonts"; + }; + + emoji = mkOption { + type = types.attrsOf fontSubmodule; + default = { }; + description = "All declared emoji fonts"; + }; + }; + + config = + let + current = cfg.stacks.current; + in + { + home.packages = unique [ + current.monospace.package + current.sansSerif.package + current.serif.package + current.emoji.package + ]; + + fonts.fontconfig = { + enable = pkgs.stdenv.isLinux; + defaultFonts = { + serif = [ current.serif.name ]; + sansSerif = [ current.sansSerif.name ]; + monospace = [ current.monospace.name ]; + emoji = [ current.emoji.name ]; + }; + }; + }; +} diff --git a/modules/home/fonts/emoji/default.nix b/modules/home/fonts/emoji/default.nix new file mode 100644 index 00000000..8408711b --- /dev/null +++ b/modules/home/fonts/emoji/default.nix @@ -0,0 +1,3 @@ +{ + imports = [ ./noto-color.nix ]; +} diff --git a/modules/home/fonts/emoji/noto-color.nix b/modules/home/fonts/emoji/noto-color.nix new file mode 100644 index 00000000..4fe0a463 --- /dev/null +++ b/modules/home/fonts/emoji/noto-color.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +{ + modules.fonts.emoji.noto-color = { + name = "Noto Color Emoji"; + package = pkgs.noto-fonts-color-emoji; + sizes.default = 16.5; + }; +} diff --git a/modules/home/fonts/font-submodule.nix b/modules/home/fonts/font-submodule.nix new file mode 100644 index 00000000..755a2781 --- /dev/null +++ b/modules/home/fonts/font-submodule.nix @@ -0,0 +1,59 @@ +{ lib }: + +with lib; +types.submodule { + options = { + name = mkOption { + type = types.str; + example = "IosevkaTerm Nerd Font"; + description = "The font family name as known to fontconfig"; + }; + + package = mkOption { + type = types.package; + example = "pkgs.nerd-fonts.iosevka-term"; + description = "The Nix package providing the font"; + }; + + styles = { + normal = mkOption { + type = types.str; + default = "Regular"; + description = "The normal font style"; + }; + + bold = mkOption { + type = types.str; + default = "Bold"; + description = "The bold font style"; + }; + + italic = mkOption { + type = types.str; + default = "Italic"; + description = "The italic font style"; + }; + + boldItalic = mkOption { + type = types.str; + default = "Bold Italic"; + description = "The bold italic font style"; + }; + }; + + sizes = mkOption { + type = types.submodule { + freeformType = types.attrsOf types.float; + options.default = mkOption { + type = types.float; + description = "The default font size, used when no program-specific override exists"; + }; + }; + example = { + default = 16.5; + ghostty = 14.0; + }; + description = "Font sizes keyed by program name"; + }; + }; +} diff --git a/modules/home/fonts/monospace/blex-mono.nix b/modules/home/fonts/monospace/blex-mono.nix new file mode 100644 index 00000000..09577f21 --- /dev/null +++ b/modules/home/fonts/monospace/blex-mono.nix @@ -0,0 +1,12 @@ +{ config, pkgs, ... }: + +{ + modules.fonts.monospace.blex-mono = { + name = "BlexMono Nerd Font"; + package = pkgs.nerd-fonts.blex-mono; + sizes = { + default = 18.5; + ghostty = if config.machines."skunk@linux".isCurrent then 14.0 else 18.5; + }; + }; +} diff --git a/modules/home/fonts/monospace/default.nix b/modules/home/fonts/monospace/default.nix new file mode 100644 index 00000000..b1dcde77 --- /dev/null +++ b/modules/home/fonts/monospace/default.nix @@ -0,0 +1,10 @@ +{ + imports = [ + ./blex-mono.nix + ./fira-code.nix + ./inconsolata.nix + ./iosevka-term.nix + ./jetbrains-mono.nix + ./source-code-pro.nix + ]; +} diff --git a/modules/home/fonts/monospace/fira-code.nix b/modules/home/fonts/monospace/fira-code.nix new file mode 100644 index 00000000..d1a56dee --- /dev/null +++ b/modules/home/fonts/monospace/fira-code.nix @@ -0,0 +1,11 @@ +{ config, pkgs, ... }: + +{ + modules.fonts.monospace.fira-code = { + name = "FiraCode Nerd Font"; + package = pkgs.nerd-fonts.fira-code; + sizes = { + default = if config.machines."skunk@darwin".isCurrent then 18.5 else 13.5; + }; + }; +} diff --git a/modules/home/fonts/monospace/inconsolata.nix b/modules/home/fonts/monospace/inconsolata.nix new file mode 100644 index 00000000..211c5919 --- /dev/null +++ b/modules/home/fonts/monospace/inconsolata.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +{ + modules.fonts.monospace.inconsolata = { + name = "Inconsolata Nerd Font"; + package = pkgs.nerd-fonts.inconsolata; + sizes.default = 16.5; + }; +} diff --git a/modules/home/fonts/monospace/iosevka-term.nix b/modules/home/fonts/monospace/iosevka-term.nix new file mode 100644 index 00000000..bd430934 --- /dev/null +++ b/modules/home/fonts/monospace/iosevka-term.nix @@ -0,0 +1,23 @@ +{ config, pkgs, ... }: + +{ + modules.fonts.monospace.iosevka-term = { + name = "IosevkaTerm Nerd Font"; + package = pkgs.nerd-fonts.iosevka-term; + + styles = { + bold = "ExtraBold"; + boldItalic = "ExtraBold Italic"; + }; + + sizes = { + default = + if config.machines."skunk@darwin".isCurrent then + 22.75 + else if config.machines.stolen-bride.isCurrent then + 22.0 + else + 16.5; + }; + }; +} diff --git a/modules/home/fonts/monospace/jetbrains-mono.nix b/modules/home/fonts/monospace/jetbrains-mono.nix new file mode 100644 index 00000000..29582360 --- /dev/null +++ b/modules/home/fonts/monospace/jetbrains-mono.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: + +{ + modules.fonts.monospace.jetbrains-mono = { + name = "JetBrainsMono Nerd Font"; + package = pkgs.nerd-fonts.jetbrains-mono; + + styles = { + bold = "Extra Bold"; + boldItalic = "Extra Bold Italic"; + }; + + sizes.default = 16.5; + }; +} diff --git a/modules/home/fonts/monospace/source-code-pro.nix b/modules/home/fonts/monospace/source-code-pro.nix new file mode 100644 index 00000000..6adb1cd1 --- /dev/null +++ b/modules/home/fonts/monospace/source-code-pro.nix @@ -0,0 +1,12 @@ +{ config, pkgs, ... }: + +{ + modules.fonts.monospace.source-code-pro = { + name = "SourceCodePro Nerd Font"; + package = pkgs.nerd-fonts.sauce-code-pro; + sizes = { + default = 16.5; + ghostty = if config.machines."skunk@linux".isCurrent then 14.0 else 16.5; + }; + }; +} diff --git a/modules/home/fonts/sans-serif/default.nix b/modules/home/fonts/sans-serif/default.nix new file mode 100644 index 00000000..a5f8e977 --- /dev/null +++ b/modules/home/fonts/sans-serif/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./fira-sans.nix + ./iosevka-aile.nix + ]; +} diff --git a/modules/home/fonts/sans-serif/fira-sans.nix b/modules/home/fonts/sans-serif/fira-sans.nix new file mode 100644 index 00000000..44f7fed5 --- /dev/null +++ b/modules/home/fonts/sans-serif/fira-sans.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +{ + modules.fonts.sansSerif.fira-sans = { + name = "FiraSans"; + package = pkgs.fira-sans; + sizes.default = 14.5; + }; +} diff --git a/modules/home/fonts/sans-serif/iosevka-aile.nix b/modules/home/fonts/sans-serif/iosevka-aile.nix new file mode 100644 index 00000000..4911ce9e --- /dev/null +++ b/modules/home/fonts/sans-serif/iosevka-aile.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +{ + modules.fonts.sansSerif.iosevka-aile = { + name = "Iosevka Aile"; + package = pkgs.iosevka-bin.override { variant = "Aile"; }; + sizes.default = 16.5; + }; +} diff --git a/modules/home/fonts/serif/default.nix b/modules/home/fonts/serif/default.nix new file mode 100644 index 00000000..549302e1 --- /dev/null +++ b/modules/home/fonts/serif/default.nix @@ -0,0 +1,3 @@ +{ + imports = [ ./source-serif.nix ]; +} diff --git a/modules/home/fonts/serif/source-serif.nix b/modules/home/fonts/serif/source-serif.nix new file mode 100644 index 00000000..aa995f55 --- /dev/null +++ b/modules/home/fonts/serif/source-serif.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +{ + modules.fonts.serif.source-serif = { + name = "Source Serif 4"; + package = pkgs.source-serif; + sizes.default = 16.5; + }; +} diff --git a/modules/home/fonts/stacks/blex.nix b/modules/home/fonts/stacks/blex.nix new file mode 100644 index 00000000..b4ef4159 --- /dev/null +++ b/modules/home/fonts/stacks/blex.nix @@ -0,0 +1,13 @@ +{ config, ... }: + +let + fonts = config.modules.fonts; +in +{ + modules.fonts.stacks.blex = { + monospace = fonts.monospace.blex-mono; + sansSerif = fonts.monospace.blex-mono; + serif = fonts.monospace.blex-mono; + emoji = fonts.emoji.noto-color; + }; +} diff --git a/modules/home/fonts/stacks/default.nix b/modules/home/fonts/stacks/default.nix new file mode 100644 index 00000000..9356d50a --- /dev/null +++ b/modules/home/fonts/stacks/default.nix @@ -0,0 +1,87 @@ +{ + config, + lib, + ... +}: + +with lib; +let + cfg = config.modules.fonts; + + stackSubmodule = + let + fontSubmodule = import ../font-submodule.nix { inherit lib; }; + in + types.submodule { + options = { + enable = mkEnableOption "this font stack"; + monospace = mkOption { + type = fontSubmodule; + description = "The monospace font for this stack"; + }; + sansSerif = mkOption { + type = fontSubmodule; + description = "The sans-serif font for this stack"; + }; + serif = mkOption { + type = fontSubmodule; + description = "The serif font for this stack"; + }; + emoji = mkOption { + type = fontSubmodule; + description = "The emoji font for this stack"; + }; + }; + }; + + enabledStacks = + removeAttrs cfg.stacks [ "current" ] |> filterAttrs (_: stack: stack.enable); +in +{ + imports = [ + ./blex.nix + ./docsrs.nix + ./fira.nix + ./iosevka.nix + ]; + + options.modules.fonts.stacks = mkOption { + type = types.submodule { + freeformType = types.attrsOf stackSubmodule; + options.current = mkOption { + type = types.attrs; + readOnly = true; + description = '' + The resolved font configuration for the enabled stack. + ''; + }; + }; + default = { }; + }; + + config = { + assertions = [ + { + assertion = (enabledStacks |> attrNames |> length) == 1; + message = "Exactly one font stack must be enabled"; + } + ]; + + modules.fonts.stacks.current = + enabledStacks + |> attrValues + |> head + # Turn the `sizes` attrset of all the fonts on the enabled stack into + # a functor which takes a program name and returns the font size for that + # program (e.g. `font.sizes "ghostty"`). + |> mapAttrs ( + _category: font: + font + // { + sizes = { + __functor = _: program: font.sizes.${program} or font.sizes.default; + }; + } + ); + }; +} diff --git a/modules/home/fonts/stacks/docsrs.nix b/modules/home/fonts/stacks/docsrs.nix new file mode 100644 index 00000000..8759dbc9 --- /dev/null +++ b/modules/home/fonts/stacks/docsrs.nix @@ -0,0 +1,13 @@ +{ config, ... }: + +let + fonts = config.modules.fonts; +in +{ + modules.fonts.stacks.docsrs = { + monospace = fonts.monospace.source-code-pro; + sansSerif = fonts.sansSerif.fira-sans; + serif = fonts.serif.source-serif; + emoji = fonts.emoji.noto-color; + }; +} diff --git a/modules/home/fonts/stacks/fira.nix b/modules/home/fonts/stacks/fira.nix new file mode 100644 index 00000000..2a68358b --- /dev/null +++ b/modules/home/fonts/stacks/fira.nix @@ -0,0 +1,13 @@ +{ config, ... }: + +let + fonts = config.modules.fonts; +in +{ + modules.fonts.stacks.fira = { + monospace = fonts.monospace.fira-code; + sansSerif = fonts.sansSerif.fira-sans; + serif = fonts.sansSerif.fira-sans; + emoji = fonts.emoji.noto-color; + }; +} diff --git a/modules/home/fonts/stacks/iosevka.nix b/modules/home/fonts/stacks/iosevka.nix new file mode 100644 index 00000000..ac71ad55 --- /dev/null +++ b/modules/home/fonts/stacks/iosevka.nix @@ -0,0 +1,13 @@ +{ config, ... }: + +let + fonts = config.modules.fonts; +in +{ + modules.fonts.stacks.iosevka = { + monospace = fonts.monospace.iosevka-term; + sansSerif = fonts.sansSerif.iosevka-aile; + serif = fonts.sansSerif.iosevka-aile; + emoji = fonts.emoji.noto-color; + }; +} diff --git a/modules/home/ghostty/font.nix b/modules/home/ghostty/font.nix index 7f43a90a..150d097f 100644 --- a/modules/home/ghostty/font.nix +++ b/modules/home/ghostty/font.nix @@ -5,15 +5,15 @@ }: let - font = config.fonts.monospace; + font = config.modules.fonts.stacks.current.monospace; in { font-family = font.name; - font-size = font.size config "ghostty"; - font-style = font.normal; - font-style-bold = font.bold; - font-style-italic = font.italic; - font-style-bold-italic = font.bold_italic; + font-size = font.sizes "ghostty"; + font-style = font.styles.normal; + font-style-bold = font.styles.bold; + font-style-italic = font.styles.italic; + font-style-bold-italic = font.styles.boldItalic; } // lib.optionalAttrs isDarwin { font-thicken = true; diff --git a/modules/home/qutebrowser/default.nix b/modules/home/qutebrowser/default.nix index c2a81993..a038563a 100644 --- a/modules/home/qutebrowser/default.nix +++ b/modules/home/qutebrowser/default.nix @@ -179,11 +179,11 @@ in fonts = let - font = config.fonts.sansSerif; + font = config.modules.fonts.stacks.current.sansSerif; in { default_family = font.name; - default_size = toString (font.size config "qutebrowser") + "pt"; + default_size = toString (font.sizes "qutebrowser") + "pt"; }; hints = { diff --git a/modules/home/zathura/default.nix b/modules/home/zathura/default.nix index 77a3575b..aa6d9829 100644 --- a/modules/home/zathura/default.nix +++ b/modules/home/zathura/default.nix @@ -32,8 +32,8 @@ in font = let - font = config.fonts.serif; - size = toString (font.size config "zathura"); + font = config.modules.fonts.stacks.current.serif; + size = toString (font.sizes "zathura"); in "${font.name} ${size}"; diff --git a/modules/home/zed/settings.nix b/modules/home/zed/settings.nix index f8c188d6..28c71b6f 100644 --- a/modules/home/zed/settings.nix +++ b/modules/home/zed/settings.nix @@ -5,14 +5,14 @@ }: let - bufferFont = config.fonts.monospace; + bufferFont = config.modules.fonts.stacks.current.monospace; preferredLineLength = 80; in { auto_update = false; autosave = "on_focus_change"; buffer_font_family = bufferFont.name; - buffer_font_size = bufferFont.size config "zed"; + buffer_font_size = bufferFont.sizes "zed"; current_line_highlight = "none"; cursor_blink = false; diagnostics.inline.enabled = true;