blob: e89ec86680d4c742d9271b2692fa9205e5be761e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
{ options, config, lib, namespace, ... }:
with lib; with lib.${namespace}; let
cfg = config.${namespace}.desktop;
in {
options.${namespace}.desktop = with types; {
background = mkOption {
type = enum [
"lycoris.png"
"matama.png"
"mem.png"
"nonon.png"
"ryo.png"
"shinobu.png"
"skull.png"
];
apply = value: ./bg/${value};
};
theme = {
name = mkOption {
type = enum [ "gruvbox" ];
default = "gruvbox";
};
colors = let
mkColorOption = name: {
inherit name;
value = mkOption {
type = strMatching "[a-fA-F0-9]{6}";
default = "ff00ff";
example = "23ce94";
description = ''
Hex value for color "${name}".
'';
};
};
in listToAttrs (map mkColorOption [
"accent"
"black" "red" "green" "yellow" "blue" "magenta" "cyan" "white"
"brightBlack" "brightRed" "brightGreen" "brightYellow" "brightBlue" "brightMagenta" "brightCyan" "brightWhite"
"bg" "bg0" "bg1" "bg2" "bg3" "bg4"
"fg" "fg0" "fg1" "fg2" "fg3" "fg4"
"orange" "brightOrange"
]);
};
};
config = {
cxl.desktop.theme.colors = import ./theme/${cfg.theme.name}.nix;
};
}
|