From 77c94148285563113246eaf9f8df5488e00c81d0 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Mon, 13 Nov 2023 13:44:03 +0100 Subject: [PATCH] k9s: allow defining custom theme file Signed-off-by: Sefa Eyeoglu --- modules/programs/k9s.nix | 20 ++++++++++++------- .../modules/programs/k9s/example-settings.nix | 5 +++++ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/modules/programs/k9s.nix b/modules/programs/k9s.nix index 6ef53291a..97944822f 100644 --- a/modules/programs/k9s.nix +++ b/modules/programs/k9s.nix @@ -46,7 +46,7 @@ in { }; skins = mkOption { - type = types.attrsOf yamlFormat.type; + type = with types; attrsOf (either yamlFormat.type path); default = { }; description = '' Skin files written to {file}`$XDG_CONFIG_HOME/k9s/skins/` (linux) @@ -54,13 +54,16 @@ in { for supported values. ''; example = literalExpression '' - my_blue_skin = { - k9s = { - body = { - fgColor = "dodgerblue"; + { + my_blue_skin = { + k9s = { + body = { + fgColor = "dodgerblue"; + }; }; }; - }; + my_red_skin = ./red_skin.yaml; + } ''; }; @@ -174,7 +177,10 @@ in { "k9s/skins/${name}.yaml" else "Library/Application Support/k9s/skins/${name}.yaml") { - source = yamlFormat.generate "k9s-skin-${name}.yaml" value; + source = if lib.types.path.check value then + value + else + yamlFormat.generate "k9s-skin-${name}.yaml" value; }) cfg.skins; enableXdgConfig = !isDarwin || config.xdg.enable; diff --git a/tests/modules/programs/k9s/example-settings.nix b/tests/modules/programs/k9s/example-settings.nix index 23a42120b..0000d81da 100644 --- a/tests/modules/programs/k9s/example-settings.nix +++ b/tests/modules/programs/k9s/example-settings.nix @@ -39,6 +39,7 @@ }; }; }; + "default2" = ./example-skin-expected.yaml; "alt-skin" = { k9s = { body = { @@ -92,6 +93,10 @@ assertFileContent \ "home-files/${configDir}/skins/default.yaml" \ ${./example-skin-expected.yaml} + assertFileExists "home-files/${configDir}/skins/default2.yaml" + assertFileContent \ + "home-files/${configDir}/skins/default2.yaml" \ + ${./example-skin-expected.yaml} assertFileExists "home-files/${configDir}/skins/alt-skin.yaml" assertFileContent \ "home-files/${configDir}/skins/alt-skin.yaml" \