diff --git a/modules/alacritty/hm.nix b/modules/alacritty/hm.nix index dce85c131..4a9d2fcd7 100644 --- a/modules/alacritty/hm.nix +++ b/modules/alacritty/hm.nix @@ -5,6 +5,18 @@ let colors = config.lib.stylix.colors.withHashtag; + useYaml = (builtins.compareVersions config.programs.alacritty.package.version "0.13.0") < 0; + templateRepo = config.lib.stylix.templates. + "base16-alacritty${if useYaml then "-yaml" else ""}"; + + inherit (config.stylix) fonts; + inherit (fonts) sizes; + + monospace = builtins.head fonts.monospace; + + themeFile = config.lib.stylix.colors { + inherit templateRepo; + }; in { options.stylix.targets.alacritty.enable = config.lib.stylix.mkEnableTarget "Alacritty" true; diff --git a/modules/avizo/hm.nix b/modules/avizo/hm.nix index e54033154..66dda159e 100644 --- a/modules/avizo/hm.nix +++ b/modules/avizo/hm.nix @@ -1,7 +1,6 @@ { config, lib, options, ... }: with config.lib.stylix.colors; -with config.stylix.fonts; let aviOpacity = toString config.stylix.opacity.popups; in diff --git a/modules/bemenu/hm.nix b/modules/bemenu/hm.nix index 0abb7d585..23ebc888b 100644 --- a/modules/bemenu/hm.nix +++ b/modules/bemenu/hm.nix @@ -1,8 +1,10 @@ -{pkgs, config, lib, ... }: +{ pkgs, config, lib, ... }: with config.lib.stylix.colors.withHashtag; -with config.stylix.fonts; let + inherit (config.stylix) fonts; + inherit (fonts) sizes; + sansSerif = builtins.head fonts.sansSerif; bemenuOpacity = lib.toHexString ((((builtins.ceil (config.stylix.opacity.popups * 100)) * 255) / 100)); in { options.stylix.targets.bemenu = { @@ -26,26 +28,23 @@ in { }; config = lib.mkIf config.stylix.targets.bemenu.enable { - programs.bemenu.settings = with config.stylix.targets.bemenu; { - tb = "${base01}${bemenuOpacity}"; # Title bg - nb = "${base01}${bemenuOpacity}"; # Normal bg - fb = "${base01}${bemenuOpacity}"; # Filter bg - hb = "${base03}${bemenuOpacity}"; # Highlighted bg - sb = "${base03}${bemenuOpacity}"; # Selected bg - scb = "${base01}"; # Scrollbar bg - - hf = "${base0A}"; # Highlighted fg - sf = "${base0B}"; # Selected fg - tf = "${base05}"; # Title fg - ff = "${base05}"; # Filter fg - nf = "${base05}"; # Normal fg - scf = "${base03}"; # Scrollbar fg - - ab = "${if alternate then base00 else base01}"; # Alternate bg - af = "${if alternate then base04 else base05}"; # Alternate fg - - # Font name - fn = "${sansSerif.name} ${lib.optionalString (fontSize != null) (builtins.toString fontSize)}"; - }; + home.sessionVariables.BEMENU_OPTS = with config.stylix.targets.bemenu; builtins.concatStringsSep " " [ + # Inspired from https://git.sr.ht/~h4n1/base16-bemenu_opts + "--tb '${base01}${bemenuOpacity}'" + "--nb '${base01}${bemenuOpacity}'" + "--fb '${base01}${bemenuOpacity}'" + "--hb '${base03}${bemenuOpacity}'" + "--sb '${base03}${bemenuOpacity}'" + "--hf '${base0A}'" + "--sf '${base0B}'" + "--tf '${base05}'" + "--ff '${base05}'" + "--nf '${base05}'" + "--scb '${base01}'" + "--scf '${base03}'" + "--ab '${if alternate then base00 else base01}'" + "--af '${if alternate then base04 else base05}'" + "--fn '${sansSerif.name} ${lib.optionalString (fontSize != null) (builtins.toString fontSize)}'" + ]; }; } diff --git a/modules/dunst/hm.nix b/modules/dunst/hm.nix index 3d8c8fa9b..341a69cc4 100644 --- a/modules/dunst/hm.nix +++ b/modules/dunst/hm.nix @@ -1,9 +1,11 @@ { config, lib, ... }: with config.lib.stylix.colors.withHashtag; -with config.stylix.fonts; let dunstOpacity = lib.toHexString ((((builtins.ceil (config.stylix.opacity.popups * 100)) * 255) / 100)); + inherit (config.stylix) fonts; + inherit (fonts) sizes; + sansSerif = builtins.head sansSerif; in { options.stylix.targets.dunst.enable = config.lib.stylix.mkEnableTarget "Dunst" true; diff --git a/modules/emacs/hm.nix b/modules/emacs/hm.nix index f97f18fc8..d3416f155 100644 --- a/modules/emacs/hm.nix +++ b/modules/emacs/hm.nix @@ -1,9 +1,10 @@ { pkgs, config, lib, ... }: with config.lib.stylix.colors.withHashtag; -with config.stylix.fonts; let + inherit (config.stylix) fonts; + monospace = builtins.head fonts.monospace; emacsOpacity = builtins.toString (builtins.ceil (config.stylix.opacity.applications * 100)); in { diff --git a/modules/firefox/hm.nix b/modules/firefox/hm.nix index 81deb510e..97b314a3e 100644 --- a/modules/firefox/hm.nix +++ b/modules/firefox/hm.nix @@ -2,10 +2,12 @@ let profileSettings = { - settings = { - "font.name.monospace.x-western" = config.stylix.fonts.monospace.name; - "font.name.sans-serif.x-western" = config.stylix.fonts.sansSerif.name; - "font.name.serif.x-western" = config.stylix.fonts.serif.name; + settings = let + inherit (config.stylix) fonts; + in { + "font.name.monospace.x-western" = (builtins.head fonts.monospace).name; + "font.name.sans-serif.x-western" = (builtins.head fonts.sansSerif).name; + "font.name.serif.x-western" = (builtins.head fonts.serif).name; }; }; makeProfileSettingsPair = profileName: diff --git a/modules/foot/hm.nix b/modules/foot/hm.nix index 8a4865f48..01defed20 100644 --- a/modules/foot/hm.nix +++ b/modules/foot/hm.nix @@ -14,8 +14,11 @@ in { config.programs.foot.settings = lib.mkIf cfg.enable { main = { include = theme; - font = - with config.stylix.fonts; + font = let + inherit (config.stylix) fonts; + inherit (fonts) sizes; + monospace = builtins.head fonts.monospace; + in "${monospace.name}:size=${toString sizes.terminal}"; dpi-aware = "no"; }; diff --git a/modules/fuzzel/hm.nix b/modules/fuzzel/hm.nix index fce4d2d02..1a5b08ac9 100644 --- a/modules/fuzzel/hm.nix +++ b/modules/fuzzel/hm.nix @@ -21,8 +21,11 @@ in { border = "${base0D-hex}ff"; }; - main = { - font = "${config.stylix.fonts.sansSerif.name}:size=${toString config.stylix.fonts.sizes.popups}"; + main = let + inherit (config.stylix) fonts; + sansSerif = builtins.head fonts.sansSerif; + in { + font = "${sansSerif.name}:size=${toString fonts.sizes.popups}"; dpi-aware = "no"; }; }; diff --git a/modules/gnome/hm.nix b/modules/gnome/hm.nix index 2accc30c0..66864e1dc 100644 --- a/modules/gnome/hm.nix +++ b/modules/gnome/hm.nix @@ -14,8 +14,13 @@ with lib; picture-uri = "file://${config.stylix.image}"; picture-uri-dark = "file://${config.stylix.image}"; }; - - "org/gnome/desktop/interface" = with config.stylix.fonts ; { + "org/gnome/desktop/interface" = let + inherit (config.stylix) fonts; + inherit (fonts) sizes; + serif = builtins.head fonts.serif; + sansSerif = builtins.head fonts.sansSerif; + monospace = builtins.head fonts.monospace; + in { # We show the same colours regardless of this setting, and the quick # settings tile is removed. The value is still used by Epiphany to # request dark mode for websites which support it. diff --git a/modules/grub/nixos.nix b/modules/grub/nixos.nix index 7b985be50..fa29d720c 100644 --- a/modules/grub/nixos.nix +++ b/modules/grub/nixos.nix @@ -1,10 +1,14 @@ { pkgs, config, lib, ... }: with config.lib.stylix; -with config.stylix.fonts; with config.lib.stylix.colors.withHashtag; let + inherit (config.stylix) fonts; + inherit (fonts) sizes; + monospace = builtins.head fonts.monospace; + sansSerif = builtins.head fonts.sansSerif; + # Grub requires fonts to be converted to "PFF2 format" # This function takes a font { name, package } and produces a .pf2 file mkGrubFont = font: diff --git a/modules/gtk/hm.nix b/modules/gtk/hm.nix index b1e601756..034f730c8 100644 --- a/modules/gtk/hm.nix +++ b/modules/gtk/hm.nix @@ -37,10 +37,13 @@ in { # programs.dconf.enable = true; required in system config gtk = { enable = true; - font = { - inherit (config.stylix.fonts.sansSerif) package name; - size = config.stylix.fonts.sizes.applications; - }; + font = let + inherit (config.stylix) fonts; + sansSerif = builtins.head fonts.sansSerif; + in { + inherit (sansSerif) package name; + size = fonts.sizes.applications; + }; theme = { package = pkgs.adw-gtk3; name = "adw-gtk3"; diff --git a/modules/i3/hm.nix b/modules/i3/hm.nix index 96ccc1da4..cbad0fe31 100644 --- a/modules/i3/hm.nix +++ b/modules/i3/hm.nix @@ -9,9 +9,9 @@ let unfocused = base03; fonts = let - fonts = config.stylix.fonts; + inherit (config.stylix) fonts; in { - names = [ fonts.sansSerif.name ]; + names = lib.catAttrs "name" fonts.sansSerif; size = fonts.sizes.desktop * 1.0; }; diff --git a/modules/kde/hm.nix b/modules/kde/hm.nix index 120f27374..3811273ba 100644 --- a/modules/kde/hm.nix +++ b/modules/kde/hm.nix @@ -1,9 +1,12 @@ { pkgs, config, lib, ... }: -with config.stylix.fonts; with config.lib.stylix.colors; let + inherit (config.stylix) fonts; + inherit (fonts) sizes; + sansSerif = builtins.head fonts.sansSerif; + monospace = builtins.head fonts.monospace; formatValue = value: if builtins.isBool value then if value then "true" else "false" diff --git a/modules/kitty/hm.nix b/modules/kitty/hm.nix index b4fc514e8..1ca907f25 100644 --- a/modules/kitty/hm.nix +++ b/modules/kitty/hm.nix @@ -22,9 +22,12 @@ in { config = lib.mkIf cfg.enable { programs.kitty = { - font = { - inherit (config.stylix.fonts.monospace) package name; - size = config.stylix.fonts.sizes.terminal; + font = let + inherit (config.stylix) fonts; + monospace = builtins.head fonts.monospace; + in { + inherit (monospace) package name; + size = fonts.sizes.terminal; }; settings.background_opacity = with config.stylix.opacity; "${builtins.toString terminal}"; extraConfig = '' diff --git a/modules/kmscon/nixos.nix b/modules/kmscon/nixos.nix index 1c74bc570..34e904feb 100644 --- a/modules/kmscon/nixos.nix +++ b/modules/kmscon/nixos.nix @@ -4,7 +4,7 @@ config.lib.stylix.mkEnableTarget "the kmscon virtual console" true; config.services.kmscon = lib.mkIf config.stylix.targets.kmscon.enable { - fonts = [config.stylix.fonts.monospace]; + fonts = config.stylix.fonts.monospace; extraConfig = let formatBase = name: diff --git a/modules/mako/hm.nix b/modules/mako/hm.nix index dc2f9a058..91eee7cf1 100644 --- a/modules/mako/hm.nix +++ b/modules/mako/hm.nix @@ -1,8 +1,10 @@ {pkgs, config, lib, options, ... }: with config.lib.stylix.colors.withHashtag; -with config.stylix.fonts; let + inherit (config.stylix) fonts; + inherit(fonts) sizes; + sansSerif = builtins.head fonts.sansSerif; makoOpacity = lib.toHexString ((((builtins.ceil (config.stylix.opacity.popups * 100)) * 255) / 100)); in { options.stylix.targets.mako.enable = diff --git a/modules/qutebrowser/hm.nix b/modules/qutebrowser/hm.nix index a6bf8cc94..630c10c95 100644 --- a/modules/qutebrowser/hm.nix +++ b/modules/qutebrowser/hm.nix @@ -12,11 +12,15 @@ let inverted-foreground = base00; error = base08; - info = base0B; secondary-info = base0C; warning = base0E; + inherit (config.stylix) fonts; + inherit (fonts) sizes; + serif = builtins.head fonts.serif; + sansSerif = builtins.head fonts.sansSerif; + monospace = builtins.head fonts.monospace; in { options.stylix.targets.qutebrowser.enable = config.lib.stylix.mkEnableTarget "Qutebrowser" true; diff --git a/modules/rofi/hm.nix b/modules/rofi/hm.nix index a71fdd36f..7b6035d50 100644 --- a/modules/rofi/hm.nix +++ b/modules/rofi/hm.nix @@ -1,7 +1,5 @@ { config, lib, ... }: -with config.stylix.fonts; - let inherit (config.lib.formats.rasi) mkLiteral; mkRgba = opacity: color: @@ -14,6 +12,10 @@ let mkLiteral "rgba ( ${r}, ${g}, ${b}, ${opacity} % )"; mkRgb = mkRgba "100"; + inherit (config.stylix) fonts; + inherit (fonts) sizes; + monospace = builtins.head fonts.monospace; + rofiOpacity = builtins.toString (builtins.ceil (config.stylix.opacity.popups * 100)); in { diff --git a/modules/sway/hm.nix b/modules/sway/hm.nix index 10e5e8775..20e766121 100644 --- a/modules/sway/hm.nix +++ b/modules/sway/hm.nix @@ -8,9 +8,12 @@ let focused = base0A; unfocused = base03; - fonts = { - names = [ config.stylix.fonts.sansSerif.name ]; - size = config.stylix.fonts.sizes.desktop + 0.0; + fonts = let + inherit (config.stylix) fonts; + inherit (fonts) sizes; + in { + names = lib.catAttrs "name" fonts.sansSerif; + size = sizes.desktop + 0.0; }; in { diff --git a/modules/sxiv/hm.nix b/modules/sxiv/hm.nix index 44c8294ff..20a91e7c5 100644 --- a/modules/sxiv/hm.nix +++ b/modules/sxiv/hm.nix @@ -1,8 +1,9 @@ { config, lib, ... }: let - colors = config.lib.stylix.colors; - fonts = config.stylix.fonts; + inherit (config.lib.stylix) colors; + inherit (config.stylix) fonts; + sansSerif = builtins.head fonts.sansSerif; in { options.stylix.targets.sxiv.enable = config.lib.stylix.mkEnableTarget "Sxiv" true; @@ -12,7 +13,7 @@ in { properties = { "Sxiv.foreground" = "#${colors.base01}"; "Sxiv.background" = "#${colors.base04}"; - "Sxiv.font" = "${fonts.sansSerif.name}-${toString fonts.sizes.applications}"; + "Sxiv.font" = "${sansSerif.name}-${toString fonts.sizes.applications}"; }; }; }; diff --git a/modules/vim/hm.nix b/modules/vim/hm.nix index b67211d9a..636a83742 100644 --- a/modules/vim/hm.nix +++ b/modules/vim/hm.nix @@ -20,14 +20,16 @@ let }; vimOptions = let - fonts = config.stylix.fonts; + inherit (config.stylix) fonts; + inherit (fonts) sizes; + monospace = builtins.head fonts.monospace; in { plugins = [ themePlugin ]; extraConfig = '' set termguicolors colorscheme base16-stylix unlet g:colors_name - set guifont=${escape [" "] fonts.monospace.name}:h${toString fonts.sizes.terminal} + set guifont=${escape [" "] monospace.name}:h${toString sizes.terminal} ''; }; diff --git a/modules/vscode/hm.nix b/modules/vscode/hm.nix index 82954609c..d5c2ef5a6 100644 --- a/modules/vscode/hm.nix +++ b/modules/vscode/hm.nix @@ -1,8 +1,9 @@ {pkgs, config, lib, ... }: -with config.stylix.fonts; - let + inherit (config.stylix) fonts; + monospace = builtins.head fonts.monospace; + themeFile = config.lib.stylix.colors { template = ./template.mustache; extension = ".json"; diff --git a/modules/waybar/hm.nix b/modules/waybar/hm.nix index 69912a409..8f318eb55 100644 --- a/modules/waybar/hm.nix +++ b/modules/waybar/hm.nix @@ -1,7 +1,11 @@ { config, lib, ... }: with config.lib.stylix.colors.withHashtag; -with config.stylix.fonts; let + inherit (config.stylix) fonts; + inherit (fonts) sizes; + + sansSerif = builtins.head fonts.sansSerif; + colorlessModules = place: '' .modules-${place} #workspaces button { border-bottom: 3px solid transparent; diff --git a/modules/wezterm/hm.nix b/modules/wezterm/hm.nix index afc24828a..beee73e6c 100644 --- a/modules/wezterm/hm.nix +++ b/modules/wezterm/hm.nix @@ -1,6 +1,12 @@ { config, lib, ... }: -let colors = config.lib.stylix.colors.withHashtag; +let + colors = config.lib.stylix.colors.withHashtag; + + inherit (config.stylix) fonts; + inherit (fonts) sizes; + + fontList = lib.strings.concatMapStringsSep ", " ({name,...}: "\"${name}\"") (fonts.monospace ++ fonts.emoji); in { options.stylix.targets.wezterm.enable = config.lib.stylix.mkEnableTarget "wezterm" config.programs.wezterm.enable; @@ -47,7 +53,6 @@ in { }; xdg.configFile."wezterm/wezterm.lua".text = with colors; - with config.stylix.fonts; lib.mkForce '' -- Generated by Stylix local wezterm = require("wezterm") @@ -62,10 +67,7 @@ in { -- See https://github.com/wez/wezterm/issues/2615 use_fancy_tab_bar = false, color_scheme = "stylix", - font = wezterm.font_with_fallback { - "${monospace.name}", - "${emoji.name}", - }, + font = wezterm.font_with_fallback { ${fontList} }, font_size = ${builtins.toString sizes.terminal}, window_background_opacity = ${ builtins.toString config.stylix.opacity.terminal diff --git a/modules/xfce/hm.nix b/modules/xfce/hm.nix index 37dbdbc43..4e332b229 100644 --- a/modules/xfce/hm.nix +++ b/modules/xfce/hm.nix @@ -6,7 +6,12 @@ config.lib.stylix.mkEnableTarget "Xfce" false; config = lib.mkIf config.stylix.targets.xfce.enable { - xfconf.settings = with config.stylix.fonts; { + xfconf.settings = let + inherit (config.stylix) fonts; + inherit (fonts) sizes; + sansSerif = builtins.head fonts.sansSerif; + monospace = builtins.head fonts.monospace; + in { xfwm4 = { "general/title_font" = "${sansSerif.name} ${toString sizes.desktop}"; }; diff --git a/modules/xresources/hm.nix b/modules/xresources/hm.nix index c6c673fb3..90186cd1b 100644 --- a/modules/xresources/hm.nix +++ b/modules/xresources/hm.nix @@ -1,11 +1,15 @@ { config, lib, ... }: -{ +let + inherit (config.stylix) fonts; + inherit (fonts) sizes; + monospace = builtins.head fonts.monospace; +in { options.stylix.targets.xresources.enable = config.lib.stylix.mkEnableTarget "Xresources" true; config = lib.mkIf config.stylix.targets.xresources.enable { - xresources.properties = with config.lib.stylix.colors.withHashtag; with config.stylix.fonts; { + xresources.properties = with config.lib.stylix.colors.withHashtag; { "*.faceName" = monospace.name; "*.faceSize" = sizes.terminal; "*.renderFont" = true;