{ lib, config, pkgs, ... }: arg: with lib; let cfg = config.colorscheme; getKittyTheme = with builtins; (theme: let matching = filter (x: x.name == theme) (fromJSON (readFile "${pkgs.kitty-themes}/share/kitty-themes/themes.json")); in throwIf (length matching == 0) "kitty-themes does not contain a theme named ${theme}" "${pkgs.kitty-themes}/share/kitty-themes/${(head matching).file}"); unwrapKittyTheme = with pkgs; path: let theme = runCommand "theme.toml" { nativebuildinputs = [ coreutils ]; } '' cat '${path}' | sed -E '/^#|^$/d;s/\s+(.*)/ = "\1"/g' > $out ''; in (builtins.fromTOML (builtins.readFile theme)); defaultTheme = { selection_foreground = ""; selection_background = ""; foreground = ""; background = ""; color0 = ""; color1 = ""; color2 = ""; color3 = ""; color4 = ""; color5 = ""; color6 = ""; color7 = ""; color8 = ""; color9 = ""; color10 = ""; color11 = ""; color12 = ""; color13 = ""; color14 = ""; color15 = ""; cursor = ""; cursor_text_color = ""; url_color = ""; }; in defaultTheme // unwrapKittyTheme (getKittyTheme arg)