From 0047cf5816313075f5a141daea73532525dbb5df Mon Sep 17 00:00:00 2001 From: Alejandro Angulo <5242883+alejandro-angulo@users.noreply.github.com> Date: Fri, 23 Aug 2024 03:53:12 -0700 Subject: [PATCH] fix(home-manager/k9s): support darwin without XDG (#311) * fix(home-manager/k9s): k9s on darwin with xdg disabled k9s expects configuration files on OS X to live in `~/Library/Application Support/k9s` instead of `~/.config.k9s`. This commit handles the case where the module is built for a darwin system with xdg disabled. * Refactored - More closely matches the upstream module in home-manager - Formatted with nixfmt-rfc-style * Added missing parentheses Co-authored-by: seth --------- Co-authored-by: seth --- modules/home-manager/k9s.nix | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/modules/home-manager/k9s.nix b/modules/home-manager/k9s.nix index cdfdcde3..a3fa6b28 100644 --- a/modules/home-manager/k9s.nix +++ b/modules/home-manager/k9s.nix @@ -1,13 +1,22 @@ -{ config, lib, ... }: +{ + config, + lib, + pkgs, + ... +}: let inherit (config.catppuccin) sources; cfg = config.programs.k9s.catppuccin; enable = cfg.enable && config.programs.k9s.enable; + # NOTE: On MacOS specifically, k9s expects its configuration to be in + # `~/Library/Application Support` when not using XDG + enableXdgConfig = !pkgs.stdenv.hostPlatform.isDarwin || config.xdg.enable; + themeName = "catppuccin-${cfg.flavor}" + lib.optionalString cfg.transparent "-transparent"; themeFile = "${themeName}.yaml"; - themePath = "/skins/${themeFile}"; + themePath = "k9s/skins/${themeFile}"; theme = sources.k9s + "/dist/${themeFile}"; in { @@ -15,9 +24,11 @@ in transparent = lib.mkEnableOption "transparent version of flavor"; }; - config = lib.mkIf enable { - xdg.configFile."k9s${themePath}".source = theme; - - programs.k9s.settings.k9s.ui.skin = themeName; - }; + config = lib.mkIf enable (lib.mkMerge [ + (lib.mkIf (!enableXdgConfig) { + home.file."Library/Application Support/${themePath}".source = theme; + }) + (lib.mkIf enableXdgConfig { xdg.configFile.${themePath}.source = theme; }) + { programs.k9s.settings.k9s.ui.skin = themeName; } + ]); }