From 33edf558a0735a86f322fe121d910d14ecbcdc97 Mon Sep 17 00:00:00 2001 From: Sebastian Zivota Date: Wed, 7 Apr 2021 16:18:09 +0200 Subject: [PATCH] lib/types/fontType: Add size attribute (#1848) * lib/types: Add size attribute to fontType * tests: Add test for kitty * modules/types/fontType: Make size nullable * Add release notes Co-authored-by: Sebastian Zivota --- doc/release-notes/rl-2105.adoc | 10 ++++++ modules/lib/types.nix | 13 ++++++-- modules/misc/gtk.nix | 8 +++-- modules/programs/kitty.nix | 6 +++- tests/default.nix | 1 + tests/modules/programs/kitty/default.nix | 1 + .../kitty/example-settings-expected.conf | 17 ++++++++++ .../programs/kitty/example-settings.nix | 32 +++++++++++++++++++ 8 files changed, 83 insertions(+), 5 deletions(-) create mode 100644 tests/modules/programs/kitty/default.nix create mode 100644 tests/modules/programs/kitty/example-settings-expected.conf create mode 100644 tests/modules/programs/kitty/example-settings.nix diff --git a/doc/release-notes/rl-2105.adoc b/doc/release-notes/rl-2105.adoc index 3ca917e1..29244aac 100644 --- a/doc/release-notes/rl-2105.adoc +++ b/doc/release-notes/rl-2105.adoc @@ -162,6 +162,16 @@ qt = { }; ---- +* The library type `fontType` now has a `size` attribute in addition to `name`. For example: ++ +[source,nix] +---- +font = { + name = "DejaVu Sans"; + size = 8; +}; +---- + [[sec-release-21.05-state-version-changes]] === State Version Changes diff --git a/modules/lib/types.nix b/modules/lib/types.nix index 64a6b4a3..a7d1dd21 100644 --- a/modules/lib/types.nix +++ b/modules/lib/types.nix @@ -47,9 +47,18 @@ in rec { name = mkOption { type = types.str; - example = "DejaVu Sans 8"; + example = "DejaVu Sans"; description = '' - The family name and size of the font within the package. + The family name of the font within the package. + ''; + }; + + size = mkOption { + type = types.nullOr types.int; + default = null; + example = "8"; + description = '' + The size of the font. ''; }; }; diff --git a/modules/misc/gtk.nix b/modules/misc/gtk.nix index bf25aaaf..f5b1c697 100644 --- a/modules/misc/gtk.nix +++ b/modules/misc/gtk.nix @@ -128,8 +128,12 @@ in { }; config = mkIf cfg.enable (let - ini = optionalAttrs (cfg.font != null) { gtk-font-name = cfg.font.name; } - // optionalAttrs (cfg.theme != null) { gtk-theme-name = cfg.theme.name; } + ini = optionalAttrs (cfg.font != null) { + gtk-font-name = let + fontSize = + optionalString (cfg.font.size != null) " ${toString cfg.font.size}"; + in "${cfg.font.name}" + fontSize; + } // optionalAttrs (cfg.theme != null) { gtk-theme-name = cfg.theme.name; } // optionalAttrs (cfg.iconTheme != null) { gtk-icon-theme-name = cfg.iconTheme.name; }; diff --git a/modules/programs/kitty.nix b/modules/programs/kitty.nix index 313a0bfa..3fa4452e 100644 --- a/modules/programs/kitty.nix +++ b/modules/programs/kitty.nix @@ -79,7 +79,11 @@ in { # Generated by Home Manager. # See https://sw.kovidgoyal.net/kitty/conf.html - ${optionalString (cfg.font != null) "font_family ${cfg.font.name}"} + ${optionalString (cfg.font != null) '' + font_family ${cfg.font.name} + ${optionalString (cfg.font.size != null) + "font_size ${toString cfg.font.size}"} + ''} ${toKittyConfig cfg.settings} diff --git a/tests/default.nix b/tests/default.nix index 50bd590f..5cf60bd1 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -55,6 +55,7 @@ import nmt { ./modules/programs/gpg ./modules/programs/i3status ./modules/programs/kakoune + ./modules/programs/kitty ./modules/programs/lf ./modules/programs/lieer ./modules/programs/man diff --git a/tests/modules/programs/kitty/default.nix b/tests/modules/programs/kitty/default.nix new file mode 100644 index 00000000..694c43cd --- /dev/null +++ b/tests/modules/programs/kitty/default.nix @@ -0,0 +1 @@ +{ kitty-example-settings = ./example-settings.nix; } diff --git a/tests/modules/programs/kitty/example-settings-expected.conf b/tests/modules/programs/kitty/example-settings-expected.conf new file mode 100644 index 00000000..23cd3a85 --- /dev/null +++ b/tests/modules/programs/kitty/example-settings-expected.conf @@ -0,0 +1,17 @@ +# Generated by Home Manager. +# See https://sw.kovidgoyal.net/kitty/conf.html + +font_family DejaVu Sans +font_size 8 + + +enable_audio_bell no +scrollback_lines 10000 +update_check_interval 0 + + +map ctrl+c copy_or_interrupt +map ctrl+f>2 set_font_size 20 + + + diff --git a/tests/modules/programs/kitty/example-settings.nix b/tests/modules/programs/kitty/example-settings.nix new file mode 100644 index 00000000..7075dc4d --- /dev/null +++ b/tests/modules/programs/kitty/example-settings.nix @@ -0,0 +1,32 @@ +{ config, lib, pkgs, ... }: + +with lib; + +{ + config = { + programs.kitty = { + enable = true; + package = pkgs.writeScriptBin "dummy-kitty" ""; + settings = { + scrollback_lines = 10000; + enable_audio_bell = false; + update_check_interval = 0; + }; + + font.name = "DejaVu Sans"; + font.size = 8; + + keybindings = { + "ctrl+c" = "copy_or_interrupt"; + "ctrl+f>2" = "set_font_size 20"; + }; + }; + + nmt.script = '' + assertFileExists home-files/.config/kitty/kitty.conf + assertFileContent \ + home-files/.config/kitty/kitty.conf \ + ${./example-settings-expected.conf} + ''; + }; +}