summaryrefslogtreecommitdiffstats
path: root/lib/theme.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lib/theme.nix')
-rw-r--r--lib/theme.nix35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/theme.nix b/lib/theme.nix
new file mode 100644
index 0000000..72e43bc
--- /dev/null
+++ b/lib/theme.nix
@@ -0,0 +1,35 @@
1{ lib, ... }:
2
3with lib;
4let
5 # Convert 2 consecutive characters from a string from hexadecimal to decimal
6 hex2dec = str: start:
7 let
8 conversionTable = {
9 "0" = 0; "1" = 1; "2" = 2; "3" = 3; "4" = 4;
10 "5" = 5; "6" = 6; "7" = 7; "8" = 8; "9" = 9;
11 "a" = 10; "b" = 11; "c" = 12;
12 "d" = 13; "e" = 14; "f" = 15;
13 };
14 firstHexDigit = toLower (elemAt (stringToCharacters str) start);
15 secondHexDigit = toLower (elemAt (stringToCharacters str) (start + 1));
16 in conversionTable.${firstHexDigit} * 16 + conversionTable.${secondHexDigit};
17
18 makeColorCode = color:
19 let genComponent = hex2dec color;
20 in "${toString (genComponent 1)};${toString (genComponent 3)};${toString (genComponent 5)}";
21
22 hex2RGB = color:
23 let genComponent = hex2dec color;
24 in {
25 red = genComponent 1;
26 green = genComponent 3;
27 blue = genComponent 5;
28 };
29
30 fgEscapeCode = hexCode: "[38;2;${makeColorCode hexCode}m";
31 bgEscapeCode = hexCode: "[48;2;${makeColorCode hexCode}m";
32in
33{
34 inherit fgEscapeCode bgEscapeCode hex2RGB;
35}