{ lib, config, ... }: let inherit (lib) mkOption types; cfg = config.horseman.catppuccin; flavors = { mocha = { rosewater = "#f5e0dc"; rosewater-rgb = "rgb(245, 224, 220)"; rosewater-hsl = "hsl(10, 56%, 91%)"; flamingo = "#f2cdcd"; flamingo-rgb = "rgb(242, 205, 205)"; flamingo-hsl = "hsl(0, 59%, 88%)"; pink = "#f5c2e7"; pink-rgb = "rgb(245, 194, 231)"; pink-hsl = "hsl(316, 72%, 86%)"; mauve = "#cba6f7"; mauve-rgb = "rgb(203, 166, 247)"; mauve-hsl = "hsl(267, 84%, 81%)"; red = "#f38ba8"; red-rgb = "rgb(243, 139, 168)"; red-hsl = "hsl(343, 81%, 75%)"; maroon = "#eba0ac"; maroon-rgb = "rgb(235, 160, 172)"; maroon-hsl = "hsl(350, 65%, 77%)"; peach = "#fab387"; peach-rgb = "rgb(250, 179, 135)"; peach-hsl = "hsl(23, 92%, 75%)"; yellow = "#f9e2af"; yellow-rgb = "rgb(249, 226, 175)"; yellow-hsl = "hsl(41, 86%, 83%)"; green = "#a6e3a1"; green-rgb = "rgb(166, 227, 161)"; green-hsl = "hsl(115, 54%, 76%)"; teal = "#94e2d5"; teal-rgb = "rgb(148, 226, 213)"; teal-hsl = "hsl(170, 57%, 73%)"; sky = "#89dceb"; sky-rgb = "rgb(137, 220, 235)"; sky-hsl = "hsl(189, 71%, 73%)"; sapphire = "#74c7ec"; sapphire-rgb = "rgb(116, 199, 236)"; sapphire-hsl = "hsl(199, 76%, 69%)"; blue = "#89b4fa"; blue-rgb = "rgb(137, 180, 250)"; blue-hsl = "hsl(217, 92%, 76%)"; lavender = "#b4befe"; lavender-rgb = "rgb(180, 190, 254)"; lavender-hsl = "hsl(232, 97%, 85%)"; text = "#cdd6f4"; text-rgb = "rgb(205, 214, 244)"; text-hsl = "hsl(226, 64%, 88%)"; subtext1 = "#bac2de"; subtext1-rgb = "rgb(186, 194, 222)"; subtext1-hsl = "hsl(227, 35%, 80%)"; subtext0 = "#a6adc8"; subtext0-rgb = "rgb(166, 173, 200)"; subtext0-hsl = "hsl(228, 24%, 72%)"; overlay2 = "#9399b2"; overlay2-rgb = "rgb(147, 153, 178)"; overlay2-hsl = "hsl(228, 17%, 64%)"; overlay1 = "#7f849c"; overlay1-rgb = "rgb(127, 132, 156)"; overlay1-hsl = "hsl(230, 13%, 55%)"; overlay0 = "#6c7086"; overlay0-rgb = "rgb(108, 112, 134)"; overlay0-hsl = "hsl(231, 11%, 47%)"; surface2 = "#585b70"; surface2-rgb = "rgb(88, 91, 112)"; surface2-hsl = "hsl(233, 12%, 39%)"; surface1 = "#45475a"; surface1-rgb = "rgb(69, 71, 90)"; surface1-hsl = "hsl(234, 13%, 31%)"; surface0 = "#313244"; surface0-rgb = "rgb(49, 50, 68)"; surface0-hsl = "hsl(237, 16%, 23%)"; base = "#1e1e2e"; base-rgb = "rgb(30, 30, 46)"; base-hsl = "hsl(240, 21%, 15%)"; mantle = "#181825"; mantle-rgb = "rgb(24, 24, 37)"; mantle-hsl = "hsl(240, 21%, 12%)"; crust = "#11111b"; crust-rgb = "rgb(17, 17, 27)"; crust-hsl = "hsl(240, 23%, 9%)"; }; macchiato = { rosewater = "#f4dbd6"; rosewater-rgb = "rgb(244, 219, 214)"; rosewater-hsl = "hsl(10, 58%, 90%)"; flamingo = "#f0c6c6"; flamingo-rgb = "rgb(240, 198, 198)"; flamingo-hsl = "hsl(0, 58%, 86%)"; pink = "#f5bde6"; pink-rgb = "rgb(245, 189, 230)"; pink-hsl = "hsl(316, 74%, 85%)"; mauve = "#c6a0f6"; mauve-rgb = "rgb(198, 160, 246)"; mauve-hsl = "hsl(267, 83%, 80%)"; red = "#ed8796"; red-rgb = "rgb(237, 135, 150)"; red-hsl = "hsl(351, 74%, 73%)"; maroon = "#ee99a0"; maroon-rgb = "rgb(238, 153, 160)"; maroon-hsl = "hsl(355, 71%, 77%)"; peach = "#f5a97f"; peach-rgb = "rgb(245, 169, 127)"; peach-hsl = "hsl(21, 86%, 73%)"; yellow = "#eed49f"; yellow-rgb = "rgb(238, 212, 159)"; yellow-hsl = "hsl(40, 70%, 78%)"; green = "#a6da95"; green-rgb = "rgb(166, 218, 149)"; green-hsl = "hsl(105, 48%, 72%)"; teal = "#8bd5ca"; teal-rgb = "rgb(139, 213, 202)"; teal-hsl = "hsl(171, 47%, 69%)"; sky = "#91d7e3"; sky-rgb = "rgb(145, 215, 227)"; sky-hsl = "hsl(189, 59%, 73%)"; sapphire = "#7dc4e4"; sapphire-rgb = "rgb(125, 196, 228)"; sapphire-hsl = "hsl(199, 66%, 69%)"; blue = "#8aadf4"; blue-rgb = "rgb(138, 173, 244)"; blue-hsl = "hsl(220, 83%, 75%)"; lavender = "#b7bdf8"; lavender-rgb = "rgb(183, 189, 248)"; lavender-hsl = "hsl(234, 82%, 85%)"; text = "#cad3f5"; text-rgb = "rgb(202, 211, 245)"; text-hsl = "hsl(227, 68%, 88%)"; subtext1 = "#b8c0e0"; subtext1-rgb = "rgb(184, 192, 224)"; subtext1-hsl = "hsl(228, 39%, 80%)"; subtext0 = "#a5adcb"; subtext0-rgb = "rgb(165, 173, 203)"; subtext0-hsl = "hsl(227, 27%, 72%)"; overlay2 = "#939ab7"; overlay2-rgb = "rgb(147, 154, 183)"; overlay2-hsl = "hsl(228, 20%, 65%)"; overlay1 = "#8087a2"; overlay1-rgb = "rgb(128, 135, 162)"; overlay1-hsl = "hsl(228, 15%, 57%)"; overlay0 = "#6e738d"; overlay0-rgb = "rgb(110, 115, 141)"; overlay0-hsl = "hsl(230, 12%, 49%)"; surface2 = "#5b6078"; surface2-rgb = "rgb(91, 96, 120)"; surface2-hsl = "hsl(230, 14%, 41%)"; surface1 = "#494d64"; surface1-rgb = "rgb(73, 77, 100)"; surface1-hsl = "hsl(231, 16%, 34%)"; surface0 = "#363a4f"; surface0-rgb = "rgb(54, 58, 79)"; surface0-hsl = "hsl(230, 19%, 26%)"; base = "#24273a"; base-rgb = "rgb(36, 39, 58)"; base-hsl = "hsl(232, 23%, 18%)"; mantle = "#1e2030"; mantle-rgb = "rgb(30, 32, 48)"; mantle-hsl = "hsl(233, 23%, 15%)"; crust = "#181926"; crust-rgb = "rgb(24, 25, 38)"; crust-hsl = "hsl(236, 23%, 12%)"; }; frappe = { rosewater = "#f2d5cf"; rosewater-rgb = "rgb(242, 213, 207)"; rosewater-hsl = "hsl(10, 57%, 88%)"; flamingo = "#eebebe"; flamingo-rgb = "rgb(238, 190, 190)"; flamingo-hsl = "hsl(0, 59%, 84%)"; pink = "#f4b8e4"; pink-rgb = "rgb(244, 184, 228)"; pink-hsl = "hsl(316, 73%, 84%)"; mauve = "#ca9ee6"; mauve-rgb = "rgb(202, 158, 230)"; mauve-hsl = "hsl(277, 59%, 76%)"; red = "#e78284"; red-rgb = "rgb(231, 130, 132)"; red-hsl = "hsl(359, 68%, 71%)"; maroon = "#ea999c"; maroon-rgb = "rgb(234, 153, 156)"; maroon-hsl = "hsl(358, 66%, 76%)"; peach = "#ef9f76"; peach-rgb = "rgb(239, 159, 118)"; peach-hsl = "hsl(20, 79%, 70%)"; yellow = "#e5c890"; yellow-rgb = "rgb(229, 200, 144)"; yellow-hsl = "hsl(40, 62%, 73%)"; green = "#a6d189"; green-rgb = "rgb(166, 209, 137)"; green-hsl = "hsl(96, 44%, 68%)"; teal = "#81c8be"; teal-rgb = "rgb(129, 200, 190)"; teal-hsl = "hsl(172, 39%, 65%)"; sky = "#99d1db"; sky-rgb = "rgb(153, 209, 219)"; sky-hsl = "hsl(189, 48%, 73%)"; sapphire = "#85c1dc"; sapphire-rgb = "rgb(133, 193, 220)"; sapphire-hsl = "hsl(199, 55%, 69%)"; blue = "#8caaee"; blue-rgb = "rgb(140, 170, 238)"; blue-hsl = "hsl(222, 74%, 74%)"; lavender = "#babbf1"; lavender-rgb = "rgb(186, 187, 241)"; lavender-hsl = "hsl(239, 66%, 84%)"; text = "#c6d0f5"; text-rgb = "rgb(198, 208, 245)"; text-hsl = "hsl(227, 70%, 87%)"; subtext1 = "#b5bfe2"; subtext1-rgb = "rgb(181, 191, 226)"; subtext1-hsl = "hsl(227, 44%, 80%)"; subtext0 = "#a5adce"; subtext0-rgb = "rgb(165, 173, 206)"; subtext0-hsl = "hsl(228, 29%, 73%)"; overlay2 = "#949cbb"; overlay2-rgb = "rgb(148, 156, 187)"; overlay2-hsl = "hsl(228, 22%, 66%)"; overlay1 = "#838ba7"; overlay1-rgb = "rgb(131, 139, 167)"; overlay1-hsl = "hsl(227, 17%, 58%)"; overlay0 = "#737994"; overlay0-rgb = "rgb(115, 121, 148)"; overlay0-hsl = "hsl(229, 13%, 52%)"; surface2 = "#626880"; surface2-rgb = "rgb(98, 104, 128)"; surface2-hsl = "hsl(228, 13%, 44%)"; surface1 = "#51576d"; surface1-rgb = "rgb(81, 87, 109)"; surface1-hsl = "hsl(227, 15%, 37%)"; surface0 = "#414559"; surface0-rgb = "rgb(65, 69, 89)"; surface0-hsl = "hsl(230, 16%, 30%)"; base = "#303446"; base-rgb = "rgb(48, 52, 70)"; base-hsl = "hsl(229, 19%, 23%)"; mantle = "#292c3c"; mantle-rgb = "rgb(41, 44, 60)"; mantle-hsl = "hsl(231, 19%, 20%)"; crust = "#232634"; crust-rgb = "rgb(35, 38, 52)"; crust-hsl = "hsl(229, 20%, 17%)"; }; latte = { rosewater = "#dc8a78"; rosewater-rgb = "rgb(220, 138, 120)"; rosewater-hsl = "hsl(11, 59%, 67%)"; flamingo = "#dd7878"; flamingo-rgb = "rgb(221, 120, 120)"; flamingo-hsl = "hsl(0, 60%, 67%)"; pink = "#ea76cb"; pink-rgb = "rgb(234, 118, 203)"; pink-hsl = "hsl(316, 73%, 69%)"; mauve = "#8839ef"; mauve-rgb = "rgb(136, 57, 239)"; mauve-hsl = "hsl(266, 85%, 58%)"; red = "#d20f39"; red-rgb = "rgb(210, 15, 57)"; red-hsl = "hsl(347, 87%, 44%)"; maroon = "#e64553"; maroon-rgb = "rgb(230, 69, 83)"; maroon-hsl = "hsl(355, 76%, 59%)"; peach = "#fe640b"; peach-rgb = "rgb(254, 100, 11)"; peach-hsl = "hsl(22, 99%, 52%)"; yellow = "#df8e1d"; yellow-rgb = "rgb(223, 142, 29)"; yellow-hsl = "hsl(35, 77%, 49%)"; green = "#40a02b"; green-rgb = "rgb(64, 160, 43)"; green-hsl = "hsl(109, 58%, 40%)"; teal = "#179299"; teal-rgb = "rgb(23, 146, 153)"; teal-hsl = "hsl(183, 74%, 35%)"; sky = "#04a5e5"; sky-rgb = "rgb(4, 165, 229)"; sky-hsl = "hsl(197, 97%, 46%)"; sapphire = "#209fb5"; sapphire-rgb = "rgb(32, 159, 181)"; sapphire-hsl = "hsl(189, 70%, 42%)"; blue = "#1e66f5"; blue-rgb = "rgb(30, 102, 245)"; blue-hsl = "hsl(220, 91%, 54%)"; lavender = "#7287fd"; lavender-rgb = "rgb(114, 135, 253)"; lavender-hsl = "hsl(231, 97%, 72%)"; text = "#4c4f69"; text-rgb = "rgb(76, 79, 105)"; text-hsl = "hsl(234, 16%, 35%)"; subtext1 = "#5c5f77"; subtext1-rgb = "rgb(92, 95, 119)"; subtext1-hsl = "hsl(233, 13%, 41%)"; subtext0 = "#6c6f85"; subtext0-rgb = "rgb(108, 111, 133)"; subtext0-hsl = "hsl(233, 10%, 47%)"; overlay2 = "#7c7f93"; overlay2-rgb = "rgb(124, 127, 147)"; overlay2-hsl = "hsl(232, 10%, 53%)"; overlay1 = "#8c8fa1"; overlay1-rgb = "rgb(140, 143, 161)"; overlay1-hsl = "hsl(231, 10%, 59%)"; overlay0 = "#9ca0b0"; overlay0-rgb = "rgb(156, 160, 176)"; overlay0-hsl = "hsl(228, 11%, 65%)"; surface2 = "#acb0be"; surface2-rgb = "rgb(172, 176, 190)"; surface2-hsl = "hsl(227, 12%, 71%)"; surface1 = "#bcc0cc"; surface1-rgb = "rgb(188, 192, 204)"; surface1-hsl = "hsl(225, 14%, 77%)"; surface0 = "#ccd0da"; surface0-rgb = "rgb(204, 208, 218)"; surface0-hsl = "hsl(223, 16%, 83%)"; base = "#eff1f5"; base-rgb = "rgb(239, 241, 245)"; base-hsl = "hsl(220, 23%, 95%)"; mantle = "#e6e9ef"; mantle-rgb = "rgb(230, 233, 239)"; mantle-hsl = "hsl(220, 22%, 92%)"; crust = "#dce0e8"; crust-rgb = "rgb(220, 224, 232)"; crust-hsl = "hsl(220, 21%, 89%)"; }; }; in { options = { horseman.catppuccin = { flavor = mkOption { type = types.enum ["latte" "frappe" "mocha" "macchiato"]; default = "mocha"; }; colors = mkOption { type = types.attrsOf types.anything; readOnly = true; }; }; }; config.horseman.catppuccin.colors = lib.mkDefault flavors.${cfg.flavor}; }