{ lib }: with lib; let mkColorOption = import ./color.nix { inherit lib; }; primaryColorModule = types.submodule { options = { background = mkColorOption {}; foreground = mkColorOption {}; }; }; cursorColorModule = types.submodule { options = { text = mkColorOption {}; cursor = mkColorOption {}; }; }; rainbowColorModule = types.submodule { options = { black = mkColorOption {}; red = mkColorOption {}; green = mkColorOption {}; yellow = mkColorOption {}; blue = mkColorOption {}; magenta = mkColorOption {}; cyan = mkColorOption {}; white = mkColorOption {}; }; }; in types.submodule { options = { primary = mkOption { type = primaryColorModule; default = { foreground = "#c5c8c6"; background = "#1d1f21"; }; }; cursor = mkOption { type = cursorColorModule; default = { text = "#1d1f21"; cursor = "#c5c8c6"; }; }; normal = mkOption { type = rainbowColorModule; default = { black = "#1d1f21"; red = "#cc6666"; green = "#b5bd68"; yellow = "#f0c674"; blue = "#81a2be"; magenta = "#b294bb"; cyan = "#8abeb7"; white = "#c5c8c6"; }; }; bright = mkOption { type = rainbowColorModule; default = { black = "#666666"; red = "#d54e53"; green = "#b9ca4a"; yellow = "#e7c547"; blue = "#7aa6da"; magenta = "#c397d8"; cyan = "#70c0b1"; white = "#eaeaea"; }; }; dim = mkOption { type = rainbowColorModule; default = { black = "#131415"; red = "#864343"; green = "#777c44"; yellow = "#9e824c"; blue = "#556a7d"; magenta = "#75617b"; cyan = "#5b7d78"; white = "#828482"; }; }; }; }