139 lines
3.1 KiB
Nix
139 lines
3.1 KiB
Nix
|
{ lib, pkgs, ... }:
|
||
|
let
|
||
|
inherit (lib) mkOption;
|
||
|
inherit (lib.types)
|
||
|
attrsOf
|
||
|
int
|
||
|
package
|
||
|
str
|
||
|
submodule
|
||
|
;
|
||
|
|
||
|
fontSubmodule = {
|
||
|
options = {
|
||
|
family = mkOption {
|
||
|
type = str;
|
||
|
};
|
||
|
package = mkOption {
|
||
|
type = package;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
in
|
||
|
{
|
||
|
options.theme = {
|
||
|
colors = mkOption {
|
||
|
type = attrsOf str;
|
||
|
default = { };
|
||
|
};
|
||
|
fonts = {
|
||
|
sans = mkOption {
|
||
|
type = submodule fontSubmodule;
|
||
|
default = { };
|
||
|
};
|
||
|
serif = mkOption {
|
||
|
type = submodule fontSubmodule;
|
||
|
default = { };
|
||
|
};
|
||
|
mono = mkOption {
|
||
|
type = submodule fontSubmodule;
|
||
|
default = { };
|
||
|
};
|
||
|
emoji = mkOption {
|
||
|
type = submodule fontSubmodule;
|
||
|
default = { };
|
||
|
};
|
||
|
icons = mkOption {
|
||
|
type = submodule fontSubmodule;
|
||
|
default = { };
|
||
|
};
|
||
|
size = mkOption {
|
||
|
type = submodule {
|
||
|
options =
|
||
|
let
|
||
|
sizeOpt = mkOption {
|
||
|
type = int;
|
||
|
};
|
||
|
in
|
||
|
{
|
||
|
big = sizeOpt;
|
||
|
normal = sizeOpt;
|
||
|
small = sizeOpt;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
icons = mkOption {
|
||
|
type = (
|
||
|
submodule {
|
||
|
options = {
|
||
|
name = mkOption {
|
||
|
type = str;
|
||
|
};
|
||
|
package = mkOption {
|
||
|
type = package;
|
||
|
};
|
||
|
};
|
||
|
}
|
||
|
);
|
||
|
default = { };
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = {
|
||
|
theme = {
|
||
|
colors = {
|
||
|
color0 = "1e1e2e"; # base
|
||
|
color1 = "181825"; # mantle
|
||
|
color2 = "313244"; # surface0
|
||
|
color3 = "45475a"; # surface1
|
||
|
color4 = "585b70"; # surface2
|
||
|
color5 = "cdd6f4"; # text
|
||
|
color6 = "f5e0dc"; # rosewater
|
||
|
color7 = "b4befe"; # lavender
|
||
|
color8 = "f38ba8"; # red
|
||
|
color9 = "fab387"; # peach
|
||
|
color10 = "f9e2af"; # yellow
|
||
|
color11 = "a6e3a1"; # green
|
||
|
color12 = "94e2d5"; # teal
|
||
|
color13 = "89b4fa"; # blue
|
||
|
color14 = "cba6f7"; # mauve
|
||
|
color15 = "f2cdcd"; # flamingo
|
||
|
};
|
||
|
fonts = {
|
||
|
sans = {
|
||
|
family = "Atkinson Hyperlegible Next";
|
||
|
package = pkgs.atkinson-hyperlegible-next;
|
||
|
};
|
||
|
serif = {
|
||
|
family = "Atkinson Hyperlegible Next";
|
||
|
package = pkgs.atkinson-hyperlegible-next;
|
||
|
};
|
||
|
mono = {
|
||
|
# family = "Atkinson Hyperlegible Mono";
|
||
|
# package = pkgs.atkinson-hyperlegible-mono;
|
||
|
family = "VictorMono Nerd Font Mono";
|
||
|
package = pkgs.nerd-fonts.victor-mono;
|
||
|
};
|
||
|
emoji = {
|
||
|
family = "Noto Color Emoji";
|
||
|
package = pkgs.noto-fonts-color-emoji;
|
||
|
};
|
||
|
icons = {
|
||
|
# family = "Material Icons";
|
||
|
# package = pkgs.material-icons;
|
||
|
family = "Rose-Pine";
|
||
|
package = pkgs.rosepine-gtk-icons;
|
||
|
};
|
||
|
size.big = 14;
|
||
|
size.normal = 12;
|
||
|
size.small = 11;
|
||
|
};
|
||
|
icons = {
|
||
|
name = "Papirus-Dark";
|
||
|
package = pkgs.papirus-icon-theme;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
}
|