diff --git a/modules/misc/news/2025/09/2025-09-08_22-33-53.nix b/modules/misc/news/2025/09/2025-09-08_22-33-53.nix new file mode 100644 index 000000000..b2d4557f7 --- /dev/null +++ b/modules/misc/news/2025/09/2025-09-08_22-33-53.nix @@ -0,0 +1,10 @@ +{ config, ... }: +{ + time = "2025-09-09T05:33:53+00:00"; + condition = config.programs.kitty.enable; + message = '' + Kitty 0.42 adds a quick access terminal that appears and disappears with a key press. + + You can now configure this with 'programs.kitty.quickAccessTerminalConfig'. + ''; +} diff --git a/modules/programs/kitty.nix b/modules/programs/kitty.nix index 6eb896bf8..45ae608a1 100644 --- a/modules/programs/kitty.nix +++ b/modules/programs/kitty.nix @@ -255,7 +255,25 @@ in extraConfig = mkOption { default = ""; type = types.lines; - description = "Additional configuration to add."; + description = "Additional configuration to add to kitty.conf."; + }; + + quickAccessTerminalConfig = mkOption { + type = types.attrsOf settingsValueType; + default = { }; + example = literalExpression '' + { + start_as_hidden = false; + hide_on_focus_loss = false; + background_opacity = 0.85; + } + ''; + description = '' + Configuration written to + {file}`$XDG_CONFIG_HOME/kitty/quick-access-terminal.conf`. See + + for the documentation. + ''; }; }; @@ -319,6 +337,14 @@ in ''; }; + xdg.configFile."kitty/quick-access-terminal.conf" = mkIf (cfg.quickAccessTerminalConfig != { }) { + text = '' + # Generated by Home Manager. + # See https://sw.kovidgoyal.net/kitty/kittens/quick-access-terminal/ + ${toKittyConfig cfg.quickAccessTerminalConfig} + ''; + }; + home.activation.checkKittyTheme = mkIf (cfg.themeFile != null) ( let themePath = "${pkgs.kitty-themes}/share/kitty-themes/themes/${cfg.themeFile}.conf"; diff --git a/tests/modules/programs/kitty/default.nix b/tests/modules/programs/kitty/default.nix index 8ef49a04c..bbb3afaec 100644 --- a/tests/modules/programs/kitty/default.nix +++ b/tests/modules/programs/kitty/default.nix @@ -3,4 +3,5 @@ kitty-theme-to-themeFile = ./theme-to-themeFile.nix; kitty-null-shellIntegration = ./null-shellIntegration.nix; kitty-example-mkOrder = ./example-mkOrder.nix; + kitty-example-quickAccessTerminalConfig = ./example-quickAccessTerminalConfig.nix; } diff --git a/tests/modules/programs/kitty/example-quickAccessTerminalConfig-expected.conf b/tests/modules/programs/kitty/example-quickAccessTerminalConfig-expected.conf new file mode 100644 index 000000000..a60f9f073 --- /dev/null +++ b/tests/modules/programs/kitty/example-quickAccessTerminalConfig-expected.conf @@ -0,0 +1,6 @@ +# Generated by Home Manager. +# See https://sw.kovidgoyal.net/kitty/kittens/quick-access-terminal/ +background_opacity 0.850000 +hide_on_focus_loss no +start_as_hidden no + diff --git a/tests/modules/programs/kitty/example-quickAccessTerminalConfig.nix b/tests/modules/programs/kitty/example-quickAccessTerminalConfig.nix new file mode 100644 index 000000000..ef47b8aa8 --- /dev/null +++ b/tests/modules/programs/kitty/example-quickAccessTerminalConfig.nix @@ -0,0 +1,21 @@ +{ lib, pkgs, ... }: +{ + config = { + programs.kitty = { + enable = true; + + quickAccessTerminalConfig = { + start_as_hidden = false; + hide_on_focus_loss = false; + background_opacity = 0.85; + }; + }; + + nmt.script = '' + assertFileExists home-files/.config/kitty/quick-access-terminal.conf + assertFileContent \ + home-files/.config/kitty/quick-access-terminal.conf \ + ${./example-quickAccessTerminalConfig-expected.conf} + ''; + }; +}