{ pkgs, config, lib, pins, ... }: let cfg = config.my.cli; in { options.my.cli = { bat.enable = lib.mkEnableOption null; btop.enable = lib.mkEnableOption null; eza.enable = lib.mkEnableOption null // { default = true; }; ranger.enable = lib.mkEnableOption null; }; config = lib.mkMerge [ (lib.mkIf cfg.bat.enable { programs.bat = { enable = true; config = { map-syntax = [ "flake.lock:JSON" ]; theme = "catppuccinMocha"; }; themes = { catppuccinMocha = { src = pins.catppuccin-bat; file = "Catppuccin-mocha.tmTheme"; }; }; }; }) (lib.mkIf cfg.btop.enable { programs.btop = { enable = true; settings = { vim_keys = true; color_theme = "catppuccin_mocha"; }; }; xdg.configFile."btop/themes/catppuccin_mocha.theme".source = "${pins.catppuccin-btop}/themes/catppuccin_mocha.theme"; }) (lib.mkIf cfg.eza.enable { programs.eza = { enable = true; }; }) (lib.mkIf cfg.ranger.enable { home.packages = [ pkgs.ranger ]; xdg.configFile."ranger/rc.conf".text = '' set preview_images true set preview_images_method kitty ''; }) ]; }