diff --git a/hosts/MONSTER/default.nix b/hosts/MONSTER/default.nix index 099ba36..bceea9a 100644 --- a/hosts/MONSTER/default.nix +++ b/hosts/MONSTER/default.nix @@ -49,7 +49,7 @@ }; }; - theming.matugen.enable = true; + theming.md3-evo.enable = true; shell.components = { waybar.enable = true; dunst.enable = true; diff --git a/modules/home-manager/desktops/hyprland/default.nix b/modules/home-manager/desktops/hyprland/default.nix index fad818d..21b242d 100644 --- a/modules/home-manager/desktops/hyprland/default.nix +++ b/modules/home-manager/desktops/hyprland/default.nix @@ -13,9 +13,6 @@ enable = true; variables = [ "--all" ]; }; - extraConfig = '' - source=./theme.conf - ''; settings = { env = [ "XDG_SESSION_TYPE,wayland" @@ -26,16 +23,10 @@ exec-once = [ "gnome-keyring-daemon --start --components=secrets" "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" - "${pkgs.swww}/bin/swww-daemon" - "theme init" ]; general = { layout = "master"; resize_on_border = true; - extend_border_grab_area = 4; - border_size = 1; - gaps_in = 12; - gaps_out = 24; }; master = { orientation = "center"; @@ -100,21 +91,9 @@ "ignorealpha 0.3, anyrun" ]; decoration = { - rounding = 24; drop_shadow = "yes"; shadow_range = 16; "col.shadow" = "rgba(00000044)"; - - dim_inactive = false; - - blur = { - enabled = true; - size = 8; - passes = 3; - noise = 1.0e-2; - contrast = 0.9; - brightness = 0.8; - }; }; animations = { enabled = "yes"; diff --git a/modules/home-manager/desktops/hyprland/kitty.nix b/modules/home-manager/desktops/hyprland/kitty.nix index 4db6b4b..ac364e4 100644 --- a/modules/home-manager/desktops/hyprland/kitty.nix +++ b/modules/home-manager/desktops/hyprland/kitty.nix @@ -8,8 +8,6 @@ font_size 13 ''; settings = { - background_opacity = "0.8"; - background_tint = "0.0"; window_padding_width = 10; }; } diff --git a/modules/home-manager/programs/nixvim/default.nix b/modules/home-manager/programs/nixvim/default.nix index ab344dd..d0b12b1 100644 --- a/modules/home-manager/programs/nixvim/default.nix +++ b/modules/home-manager/programs/nixvim/default.nix @@ -4,15 +4,6 @@ defaultEditor = true; vimAlias = true; - colorscheme = "matugen"; - autoCmd = [ - { - event = [ "Signal" ]; - pattern = [ "SIGUSR1" ]; - command = "colorscheme matugen"; - } - ]; - opts = { number = true; relativenumber = true; @@ -31,8 +22,6 @@ scrolloff = 12; - termguicolors = true; - hlsearch = false; incsearch = true; diff --git a/modules/nixos/theming/hyprland.conf b/modules/nixos/theming/hyprland.conf index bc384ed..0452c8f 100644 --- a/modules/nixos/theming/hyprland.conf +++ b/modules/nixos/theming/hyprland.conf @@ -1,4 +1,17 @@ general { - col.inactive_border = rgba({{colors.surface.default.hex_stripped}}cc) + col.inactive_border = rgba({{colors.surface.default.hex_stripped}}{{custom.transparency_hex | to_lower}}) col.active_border = rgb({{colors.primary.default.hex_stripped}}) + border_size = 1 + extend_border_grab_area = 4 + gaps_in = {{custom.padding}} + gaps_out = {{custom.double_padding}} +} + +decoration { + rounding = {{custom.radius}} + + blur { + size = {{custom.blur}} + passes = 2 + } } diff --git a/modules/nixos/theming/kitty.conf b/modules/nixos/theming/kitty.conf index 1572245..c2373b9 100644 --- a/modules/nixos/theming/kitty.conf +++ b/modules/nixos/theming/kitty.conf @@ -1,3 +1,6 @@ +background_tint 0.0 +background_opacity {{custom.transparency}} + background {{colors.surface.default.hex}} foreground {{colors.on_surface.default.hex}} diff --git a/modules/nixos/theming/matugen.nix b/modules/nixos/theming/matugen.nix index 9e4e4d4..0e022cc 100644 --- a/modules/nixos/theming/matugen.nix +++ b/modules/nixos/theming/matugen.nix @@ -5,18 +5,56 @@ username, ... }: -with lib; let - cfg = config.theming.matugen; + cfg = config.theming.md3-evo; homeCfg = config.home-manager.users.${username}; in { - options.theming.matugen = { - enable = mkEnableOption "Enable dynamic theming through matugen"; + options.theming.md3-evo = { + enable = lib.mkEnableOption "the MD3-EVO theme"; + flavour = lib.mkOption { + type = lib.types.enum [ + "content" + "expressive" + "fidelity" + "fruit-salad" + "monochrome" + "neutral" + "rainbow" + "tonal-spot" + ]; + default = "content"; + description = "The flavour of the theme"; + }; + contrast = lib.mkOption { + type = lib.types.numbers.between (-1) 1; + default = 0; + description = "Use a modified contrast"; + }; + transparency = lib.mkOption { + type = lib.types.numbers.between 0 1; + default = 0.8; + description = "The transparency of apps"; + }; + radius = lib.mkOption { + type = lib.types.ints.positive; + default = 24; + description = "The radius of the corners"; + }; + padding = lib.mkOption { + type = lib.types.ints.positive; + default = 12; + description = "The padding of the windows"; + }; + blur = lib.mkOption { + type = lib.types.ints.positive; + default = 16; + description = "The blur amount of windows"; + }; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { environment = { systemPackages = [ pkgs.adw-gtk3 @@ -77,7 +115,7 @@ in GTK_THEME="adw-gtk3-dark" fi - matugen image "$WALLPAPER" --mode "$MODE" + matugen image "$WALLPAPER" --type scheme-${cfg.flavour} --contrast ${builtins.toString cfg.contrast} --mode "$MODE" sed -i "s/set background=dark/set background=$MODE/g" ${homeCfg.xdg.configHome}/nvim/colors/matugen.vim dconf write /org/gnome/desktop/interface/gtk-theme "'$GTK_THEME'" @@ -96,75 +134,119 @@ in }; home-manager.users.${username} = { - programs.kitty.extraConfig = '' - include ${homeCfg.xdg.configHome}/kitty/theme.conf - ''; + programs.kitty = { + extraConfig = '' + include ${homeCfg.xdg.configHome}/kitty/theme.conf + ''; + }; + + programs.nixvim = { + opts.termguicolors = true; + colorscheme = "md3-evo"; + autoCmd = [ + { + event = [ "Signal" ]; + pattern = [ "SIGUSR1" ]; + command = "colorscheme matugen"; + } + ]; + }; gtk = { gtk3.extraCss = "@import './theme.css';"; gtk4.extraCss = "@import './theme.css';"; }; - xdg.configFile."matugen/config.toml".source = (pkgs.formats.toml { }).generate "matugen" { - config = { - reload_apps = true; - reload_apps_list = { - kitty = homeCfg.programs.kitty.enable; - waybar = false; - dunst = homeCfg.services.dunst.enable; - }; + wayland.windowManager.hyprland = { + settings.exec-once = [ + "${pkgs.swww}/bin/swww-daemon" + "theme init" + ]; + extraConfig = '' + source=./theme.conf + ''; + }; - set_wallpaper = true; - wallpaper_tool = "Swww"; - - custom_colors = { - red = "#ff0000"; - green = "#00ff00"; - yellow = "#ffff00"; - orange = "#ff8000"; - blue = "#0000ff"; - magenta = "#ff00ff"; - cyan = "#00ffff"; - - warn = { - color = "#ffff00"; - blend = false; + xdg.configFile."matugen/config.toml" = { + onChange = '' + theme init + ''; + source = (pkgs.formats.toml { }).generate "matugen" { + config = { + reload_apps = true; + reload_apps_list = { + kitty = homeCfg.programs.kitty.enable; + waybar = false; + dunst = homeCfg.services.dunst.enable; }; - ok = { - color = "#00ff00"; - blend = false; + + set_wallpaper = true; + wallpaper_tool = "Swww"; + + custom_colors = { + red = "#ff0000"; + green = "#00ff00"; + yellow = "#ffff00"; + orange = "#ff8000"; + blue = "#0000ff"; + magenta = "#ff00ff"; + cyan = "#00ffff"; + + warn = { + color = "#ffff00"; + blend = false; + }; + ok = { + color = "#00ff00"; + blend = false; + }; + }; + + custom_keywords = { + padding = builtins.toString cfg.padding; + double_padding = builtins.toString (cfg.padding * 2); + radius = builtins.toString cfg.radius; + transparency = builtins.toString cfg.transparency; + blur = builtins.toString cfg.blur; + flavour = cfg.flavour; + contrast = builtins.toString cfg.contrast; + transparency_hex = + let + zeroPad = hex: if builtins.stringLength hex == 1 then "0${hex}" else hex; + in + zeroPad (lib.trivial.toHexString (builtins.floor (cfg.transparency * 255))); }; }; - }; - templates = { - kitty = { - input_path = ./kitty.conf; - output_path = "${homeCfg.xdg.configHome}/kitty/theme.conf"; - }; - nvim = { - input_path = ./nvim.vim; - output_path = "${homeCfg.xdg.configHome}/nvim/colors/matugen.vim"; - }; - hyprland = { - input_path = ./hyprland.conf; - output_path = "${homeCfg.xdg.configHome}/hypr/theme.conf"; - }; - anyrun = { - input_path = ./anyrun.css; - output_path = "${homeCfg.xdg.configHome}/anyrun/theme.css"; - }; - gtk3 = { - input_path = ./gtk.css; - output_path = "${homeCfg.xdg.configHome}/gtk-3.0/theme.css"; - }; - gtk4 = { - input_path = ./gtk.css; - output_path = "${homeCfg.xdg.configHome}/gtk-4.0/theme.css"; - }; - vesktop = { - input_path = ./discord.css; - output_path = "${homeCfg.xdg.configHome}/vesktop/themes/matugen.theme.css"; + templates = { + kitty = { + input_path = ./kitty.conf; + output_path = "${homeCfg.xdg.configHome}/kitty/theme.conf"; + }; + nvim = { + input_path = ./nvim.vim; + output_path = "${homeCfg.xdg.configHome}/nvim/colors/md3-evo.vim"; + }; + hyprland = { + input_path = ./hyprland.conf; + output_path = "${homeCfg.xdg.configHome}/hypr/theme.conf"; + }; + anyrun = { + input_path = ./anyrun.css; + output_path = "${homeCfg.xdg.configHome}/anyrun/theme.css"; + }; + gtk3 = { + input_path = ./gtk.css; + output_path = "${homeCfg.xdg.configHome}/gtk-3.0/theme.css"; + }; + gtk4 = { + input_path = ./gtk.css; + output_path = "${homeCfg.xdg.configHome}/gtk-4.0/theme.css"; + }; + vesktop = { + input_path = ./discord.css; + output_path = "${homeCfg.xdg.configHome}/vesktop/themes/matugen.theme.css"; + }; }; }; }; diff --git a/modules/nixos/theming/nvim.vim b/modules/nixos/theming/nvim.vim index 170ffaf..3bdb64c 100644 --- a/modules/nixos/theming/nvim.vim +++ b/modules/nixos/theming/nvim.vim @@ -1,12 +1,12 @@ set background=dark -let g:neovide_transparency = 0.8 -let g:neovide_padding_top = 12 -let g:neovide_padding_bottom = 12 -let g:neovide_padding_left = 12 -let g:neovide_padding_right = 12 -let g:neovide_floating_blur_amount_x = 16 -let g:neovide_floating_blur_amount_y = 16 +let g:neovide_transparency = {{custom.transparency}} +let g:neovide_padding_top = {{custom.padding}} +let g:neovide_padding_bottom = {{custom.padding}} +let g:neovide_padding_left = {{custom.padding}} +let g:neovide_padding_right = {{custom.padding}} +let g:neovide_floating_blur_amount_x = {{custom.blur}} +let g:neovide_floating_blur_amount_y = {{custom.blur}} let g:neovide_floating_shadow = 0 if exists("g:neovide")