57 lines
2 KiB
Nix
57 lines
2 KiB
Nix
{ lib }:
|
||
|
||
let
|
||
inherit (builtins) listToAttrs mapAttrs;
|
||
inherit (lib) imap0 mapAttrsRecursive nameValuePair;
|
||
inherit (import ./lib.nix { inherit lib; }) oklchToRgb rgbToHex;
|
||
|
||
ansiNames = [ "black" "red" "green" "yellow" "blue" "magenta" "cyan" "white" ];
|
||
|
||
oklch = rec {
|
||
# Monokai
|
||
black = { l = 0.22; c = 0.000; h = 0; };
|
||
blue = { l = 0.83; c = 0.108; h = 212; };
|
||
gray = { l = 0.51; c = 0.000; h = 0; };
|
||
green = { l = 0.84; c = 0.204; h = 127; };
|
||
orange = { l = 0.77; c = 0.168; h = 62; };
|
||
purple = { l = 0.70; c = 0.181; h = 298; };
|
||
red = { l = 0.64; c = 0.240; h = 7; };
|
||
white = { l = 0.98; c = 0.000; h = 0; };
|
||
yellow = { l = 0.88; c = 0.125; h = 103; };
|
||
|
||
# Extended
|
||
orange-red = { l = 0.68; c = 0.205; h = 36; };
|
||
teal = { l = 0.81; c = 0.152; h = 171; };
|
||
|
||
# Derived
|
||
alt-blue = blue // { l = 0.76; };
|
||
alt-green = green // { l = 0.77; c = 0.198; };
|
||
alt-orange = orange // { l = 0.70; c = 0.161; };
|
||
alt-orange-red = orange-red // { l = 0.61; };
|
||
alt-purple = purple // { l = 0.64; };
|
||
alt-red = red // { l = 0.57; c = 0.217; };
|
||
alt-teal = teal // { l = 0.74; c = 0.144; };
|
||
alt-yellow = yellow // { l = 0.81; };
|
||
dark-gray = gray // { l = 0.35; };
|
||
dark-orange-red = orange-red // { l = 0.34; c = 0.060; };
|
||
dark-orange-red-text-contrast = orange-red // { l = 0.60; c = 0.030; };
|
||
dark-purple = purple // { l = 0.47; };
|
||
dark-red = red // { l = 0.54; c = 0.216; };
|
||
dark-teal = teal // { l = 0.36; c = 0.060; };
|
||
light-gray = gray // { l = 0.90; };
|
||
};
|
||
in
|
||
rec {
|
||
ansi =
|
||
let
|
||
base = listToAttrs (imap0 (i: n: nameValuePair n (toString (30 + i))) ansiNames);
|
||
effect = p: mapAttrs (_: a: "${p};${a}") base;
|
||
in
|
||
base // { bold = effect "1"; dim = effect "2" // { italic = effect "2;3"; }; italic = effect "3"; };
|
||
|
||
ansiFormat = mapAttrsRecursive (_: a: t: "[${a}m${t}[0m") ansi;
|
||
|
||
hex = mapAttrs (_: rgbToHex) rgb;
|
||
|
||
rgb = mapAttrs (_: oklchToRgb) oklch;
|
||
}
|