diff options
| author | Caroline Larimore <caroline@larimo.re> | 2025-04-14 19:01:38 -0700 |
|---|---|---|
| committer | Caroline Larimore <caroline@larimo.re> | 2025-04-14 19:01:38 -0700 |
| commit | e8077fde966e051fc449fffcfa061c7f7edc47b0 (patch) | |
| tree | a0b1ce60f2718f90c64e924ed8df8d5d4f0d2289 /modules/home/desktop/default.nix | |
| parent | e486d896215e7ef04438809952bc7317512d5765 (diff) | |
migration: finalize
Diffstat (limited to 'modules/home/desktop/default.nix')
| -rw-r--r-- | modules/home/desktop/default.nix | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/modules/home/desktop/default.nix b/modules/home/desktop/default.nix new file mode 100644 index 0000000..e89ec86 --- /dev/null +++ b/modules/home/desktop/default.nix @@ -0,0 +1,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; + }; +} |