cleaned up and simplified theming
This commit is contained in:
parent
39939714b7
commit
d531fb9c59
12 changed files with 249 additions and 452 deletions
|
@ -10,138 +10,54 @@ let
|
|||
desktop = config.modules.desktop;
|
||||
in {
|
||||
options.modules.themes = let
|
||||
inherit (lib.options) mkOption mkPackageOption;
|
||||
inherit (lib.types) attrsOf int lines listOf nullOr path package str;
|
||||
inherit (lib.my) mkOpt toFilteredImage;
|
||||
inherit (lib.options) mkOption mkEnableOption;
|
||||
inherit (lib.types) nullOr enum;
|
||||
in {
|
||||
active = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
apply = v: let
|
||||
theme = getEnv "THEME";
|
||||
in
|
||||
if theme != ""
|
||||
then theme
|
||||
else v;
|
||||
description = ''
|
||||
Name of the theme which ought to be applied.
|
||||
Can be overridden by the `THEME` environment variable.
|
||||
'';
|
||||
enable = mkEnableOption "Theming (Stylix)";
|
||||
|
||||
theme = mkOption {
|
||||
type = nullOr (enum [ "everforest" "catppuccin-latte" "chalk" ]);
|
||||
default = "everforest";
|
||||
description = "The theme to set the system to";
|
||||
example = "everforest";
|
||||
};
|
||||
|
||||
wallpaper = mkOpt (nullOr path) null;
|
||||
|
||||
loginWallpaper = mkOpt (nullOr path) (
|
||||
if cfg.wallpaper != null
|
||||
then toFilteredImage cfg.wallpaper "-gaussian-blur 0x2 -modulate 70 -level 5%"
|
||||
else null
|
||||
);
|
||||
|
||||
gtk = {
|
||||
name = mkOpt str "";
|
||||
package = mkPackageOption pkgs "gtk" {};
|
||||
};
|
||||
|
||||
iconTheme = {
|
||||
name = mkOpt str "";
|
||||
package = mkPackageOption pkgs "icon" {};
|
||||
};
|
||||
|
||||
pointer = {
|
||||
name = mkOpt str "";
|
||||
package = mkPackageOption pkgs "pointer" {};
|
||||
size = mkOpt int 0;
|
||||
};
|
||||
|
||||
onReload = mkOpt (attrsOf lines) {};
|
||||
|
||||
fontConfig = {
|
||||
packages = mkOpt (listOf package) [];
|
||||
mono = mkOpt (listOf str) [""];
|
||||
sans = mkOpt (listOf str) [""];
|
||||
emoji = mkOpt (listOf str) [""];
|
||||
};
|
||||
|
||||
font = {
|
||||
mono = {
|
||||
family = mkOpt str "";
|
||||
weight = mkOpt str "Bold";
|
||||
weightAlt = mkOpt str "Bold";
|
||||
weightNum = mkOpt int 700;
|
||||
size = mkOpt int 13;
|
||||
};
|
||||
sans = {
|
||||
family = mkOpt str "";
|
||||
weight = mkOpt str "SemiBold";
|
||||
weightAlt = mkOpt str "DemiBold";
|
||||
weightNum = mkOpt int 600;
|
||||
size = mkOpt int 10;
|
||||
};
|
||||
};
|
||||
|
||||
colors = {
|
||||
main = {
|
||||
normal = {
|
||||
black = mkOpt str "#000000"; # 0
|
||||
red = mkOpt str "#FF0000"; # 1
|
||||
green = mkOpt str "#00FF00"; # 2
|
||||
yellow = mkOpt str "#FFFF00"; # 3
|
||||
blue = mkOpt str "#0000FF"; # 4
|
||||
magenta = mkOpt str "#FF00FF"; # 5
|
||||
cyan = mkOpt str "#00FFFF"; # 6
|
||||
white = mkOpt str "#BBBBBB"; # 7
|
||||
};
|
||||
bright = {
|
||||
black = mkOpt str "#888888"; # 8
|
||||
red = mkOpt str "#FF8800"; # 9
|
||||
green = mkOpt str "#00FF80"; # 10
|
||||
yellow = mkOpt str "#FF8800"; # 11
|
||||
blue = mkOpt str "#0088FF"; # 12
|
||||
magenta = mkOpt str "#FF88FF"; # 13
|
||||
cyan = mkOpt str "#88FFFF"; # 14
|
||||
white = mkOpt str "#FFFFFF"; # 15
|
||||
};
|
||||
types = let
|
||||
inherit (cfg.colors.main.normal) black red white yellow;
|
||||
inherit (cfg.colors.main.types) bg fg;
|
||||
in {
|
||||
bg = mkOpt str black;
|
||||
fg = mkOpt str white;
|
||||
panelbg = mkOpt str bg;
|
||||
panelfg = mkOpt str fg;
|
||||
border = mkOpt str bg;
|
||||
error = mkOpt str red;
|
||||
warning = mkOpt str yellow;
|
||||
highlight = mkOpt str white;
|
||||
};
|
||||
};
|
||||
|
||||
rofi = {
|
||||
bg = {
|
||||
main = mkOpt str "#FFFFFF";
|
||||
alt = mkOpt str "#FFFFFF";
|
||||
bar = mkOpt str "#FFFFFF";
|
||||
};
|
||||
fg = mkOpt str "#FFFFFF";
|
||||
ribbon = {
|
||||
outer = mkOpt str "#FFFFFF";
|
||||
inner = mkOpt str "#FFFFFF";
|
||||
};
|
||||
selected = mkOpt str "#FFFFFF";
|
||||
urgent = mkOpt str "#FFFFFF";
|
||||
transparent = mkOpt str "#FFFFFF";
|
||||
};
|
||||
};
|
||||
|
||||
editor = {
|
||||
neovim = {
|
||||
light = mkOpt str "";
|
||||
dark = mkOpt str "";
|
||||
};
|
||||
polarity = mkOption {
|
||||
type = nullOr (enum [ "dark" "light" ]);
|
||||
default = "dark";
|
||||
description = "determine if system is in dark or light mode";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf (cfg.active != null) (mkMerge [
|
||||
(mkIf (desktop.type == "wayland") (mkMerge []))
|
||||
]);
|
||||
config = mkIf (cfg.enable) {
|
||||
stylix = {
|
||||
enable = true;
|
||||
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/${cfg.theme}.yaml";
|
||||
image = ./${cfg.theme}.jpg;
|
||||
polarity = cfg.polarity;
|
||||
|
||||
fonts = {
|
||||
serif = {
|
||||
package = pkgs.dejavu_fonts;
|
||||
name = "DejaVu Serif";
|
||||
};
|
||||
|
||||
sansSerif = {
|
||||
package = pkgs.dejavu_fonts;
|
||||
name = "DejaVu Sans";
|
||||
};
|
||||
|
||||
monospace = {
|
||||
package = pkgs.dejavu_fonts;
|
||||
name = "DejaVu Sans Mono";
|
||||
};
|
||||
|
||||
emoji = {
|
||||
package = pkgs.noto-fonts-emoji;
|
||||
name = "Noto Color Emoji";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
Before Width: | Height: | Size: 183 KiB After Width: | Height: | Size: 183 KiB |
|
@ -1,135 +0,0 @@
|
|||
{ config, options, lib, pkgs, ... }:
|
||||
let
|
||||
inherit (builtins) toString readFile;
|
||||
inherit (lib.attrsets) attrValues;
|
||||
inherit (lib.modules) mkDefault mkIf mkMerge;
|
||||
inherit (lib.strings) concatMapStringsSep;
|
||||
|
||||
cfg = config.modules.themes;
|
||||
in
|
||||
{
|
||||
config = mkIf (cfg.active == "everforest")
|
||||
{
|
||||
stylix = {
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/everforest.yaml";
|
||||
image = ./assets/wallpaper.jpg;
|
||||
polarity = "dark";
|
||||
|
||||
fonts = {
|
||||
serif = {
|
||||
package = pkgs.dejavu_fonts;
|
||||
name = "DejaVu Serif";
|
||||
};
|
||||
|
||||
sansSerif = {
|
||||
package = pkgs.dejavu_fonts;
|
||||
name = "DejaVu Sans";
|
||||
};
|
||||
|
||||
monospace = {
|
||||
package = pkgs.dejavu_fonts;
|
||||
name = "DejaVu Sans Mono";
|
||||
};
|
||||
|
||||
emoji = {
|
||||
package = pkgs.noto-fonts-emoji;
|
||||
name = "Noto Color Emoji";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# modules.themes = {
|
||||
# wallpaper = mkDefault ./assets/wallpaper.jpg;
|
||||
#
|
||||
# gtk = {
|
||||
# name = "Everforest-Dark-BL";
|
||||
# package = pkgs.my.everforest-gtk;
|
||||
# };
|
||||
#
|
||||
# iconTheme = {
|
||||
# name = "everforest-dark";
|
||||
# package = pkgs.fluent-icon-theme.override {
|
||||
# colorVariants = [];
|
||||
# };
|
||||
# };
|
||||
#
|
||||
# pointer = {
|
||||
# name = "Bibata-Modern-Classic";
|
||||
# package = pkgs.bibata-cursors;
|
||||
# size = 24;
|
||||
# };
|
||||
#
|
||||
# fontConfig = {
|
||||
# packages = attrValues {
|
||||
# inherit (pkgs) noto-fonts-emoji sarasa-gothic;
|
||||
# google-fonts = pkgs.google-fonts.override {fonts = ["Cardo"];};
|
||||
# nerdfonts =
|
||||
# pkgs.nerdfonts.override {fonts = ["CascadiaCode" "VictorMono"];};
|
||||
# };
|
||||
# mono = ["VictorMono Nerd Font" "Sarasa Mono SC"];
|
||||
# sans = ["Caskaydia Cove Nerd Font" "Sarasa Gothic SC"];
|
||||
# emoji = ["Noto Color Emoji"];
|
||||
# };
|
||||
#
|
||||
# font = {
|
||||
# mono.family = "VictorMono Nerd Font";
|
||||
# sans.family = "CaskaydiaCove Nerd Font";
|
||||
# };
|
||||
#
|
||||
# colors = {
|
||||
# main = {
|
||||
# normal = {
|
||||
# black = "#15161e";
|
||||
# red = "#f7768e";
|
||||
# green = "#9ece6a";
|
||||
# yellow = "#e0af68";
|
||||
# blue = "#7aa2f7";
|
||||
# magenta = "#bb9af7";
|
||||
# cyan = "#7dcfff";
|
||||
# white = "#a9b1d6";
|
||||
# };
|
||||
# bright = {
|
||||
# black = "#414868";
|
||||
# red = "#f7768e";
|
||||
# green = "#9ece6a";
|
||||
# yellow = "#e0af68";
|
||||
# blue = "#7aa2f7";
|
||||
# magenta = "#bb9af7";
|
||||
# cyan = "#7dcfff";
|
||||
# white = "#c0caf5";
|
||||
# };
|
||||
# types = {
|
||||
# fg = "#c0caf5";
|
||||
# bg = "#1a1b26";
|
||||
# panelbg = "#ff9e64";
|
||||
# border = "#1abc9c";
|
||||
# highlight = "#3d59a1";
|
||||
# };
|
||||
# };
|
||||
#
|
||||
# rofi = {
|
||||
# bg = {
|
||||
# main = "hsla(235, 18%, 12%, 1)";
|
||||
# alt = "hsla(235, 18%, 12%, 0)";
|
||||
# bar = "hsla(229, 24%, 18%, 1)";
|
||||
# };
|
||||
# fg = "hsla(228, 72%, 85%, 1)";
|
||||
# ribbon = {
|
||||
# outer = "hsla(188, 68%, 27%, 1)";
|
||||
# inner = "hsla(202, 76%, 24%, 1)";
|
||||
# };
|
||||
# selected = "hsla(220, 88%, 72%, 1)";
|
||||
# urgent = "hsl(349, 89%, 72%, 1)";
|
||||
# transparent = "hsla(0, 0%, 0%, 0)";
|
||||
# };
|
||||
# };
|
||||
#
|
||||
# editor = {
|
||||
# neovim = {
|
||||
# dark = "everforest";
|
||||
# light = "everforest";
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue