summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorbeeb5k <beebeeb5k@gmail.com>2026-03-06 21:37:34 +0530
committerbeeb5k <beebeeb5k@gmail.com>2026-03-06 21:37:34 +0530
commit0de067092c9dd19c3352554e39de73e172f29b42 (patch)
tree4175503766405733846687efdb29657bb322dccd /common
parentf1de2014dcd426e015a2638222160d9d349ea4e5 (diff)
Add modules
Diffstat (limited to 'common')
-rw-r--r--common/default.nix9
-rw-r--r--common/modules/beevim/default.nix44
-rw-r--r--common/modules/default.nix34
-rw-r--r--common/modules/mango/default.nix416
-rw-r--r--common/modules/matugen/default.nix186
-rw-r--r--common/modules/matugen/templates/default.nix4
-rw-r--r--common/modules/matugen/templates/matugen-btop.nix93
-rw-r--r--common/modules/matugen/templates/matugen-discord.nix112
-rw-r--r--common/modules/matugen/templates/matugen-dunst.nix44
-rw-r--r--common/modules/matugen/templates/matugen-gtk.nix58
-rw-r--r--common/modules/matugen/templates/matugen-mango.nix24
-rw-r--r--common/modules/matugen/templates/matugen-rofi.nix25
-rw-r--r--common/modules/matugen/templates/matugen-swaylock.nix54
-rw-r--r--common/modules/matugen/templates/matugen-terminal.nix107
-rw-r--r--common/modules/matugen/templates/matugen-waybar.nix24
-rw-r--r--common/modules/matugen/templates/matugen-wlogout.nix11
-rw-r--r--common/modules/matugen/templates/matugen-xresources.nix47
-rw-r--r--common/modules/matugen/templates/matugen-yazi.nix197
-rw-r--r--common/modules/matugen/templates/matugen-zathura.nix109
-rw-r--r--common/modules/matugen/templates/matugen-zed.nix602
-rw-r--r--common/modules/matugen/templates/matugen-zen.nix105
-rw-r--r--common/modules/terminal/alacritty.nix46
-rw-r--r--common/modules/terminal/default.nix72
-rw-r--r--common/modules/terminal/foot.nix33
-rw-r--r--common/modules/terminal/ghostty.nix54
25 files changed, 2510 insertions, 0 deletions
diff --git a/common/default.nix b/common/default.nix
new file mode 100644
index 0000000..c6d3f68
--- /dev/null
+++ b/common/default.nix
@@ -0,0 +1,9 @@
+inputs:
+{ lib, ... }:
+{
+ imports = [
+ (lib.modules.importApply ./modules { inherit inputs; })
+ ];
+ # flake.templates = import ./templates inputs;
+ # flake.homeModules.programs = import ./programs;
+}
diff --git a/common/modules/beevim/default.nix b/common/modules/beevim/default.nix
new file mode 100644
index 0000000..477ffb4
--- /dev/null
+++ b/common/modules/beevim/default.nix
@@ -0,0 +1,44 @@
+{
+ homeManager,
+ inputs,
+ moduleNameSpace,
+ ...
+}:
+{
+ pkgs,
+ config,
+ lib,
+ ...
+}:
+let
+ cfg = config.${moduleNameSpace}.beeVim;
+in
+{
+ imports = [
+ # inputs.beebVim.homeModules.default
+ ];
+
+ options.${moduleNameSpace}.beeVim = {
+ enable = lib.mkEnableOption "Enable neovim config";
+ };
+
+ config = lib.mkIf cfg.enable {
+ beevim = {
+ enable = true;
+ packageDefinitions.replace = builtins.mapAttrs (
+ n: _:
+ { pkgs, ... }:
+ {
+ settings = {
+ neovim-unwrapped = pkgs.neovim-unwrapped;
+ };
+ categories = {
+ clang = false;
+ markdown = false;
+ };
+ }
+ ) inputs.beeVim.packages.${pkgs.stdenv.hostPlatform.system}.default.packageDefinitions;
+ };
+ };
+
+}
diff --git a/common/modules/default.nix b/common/modules/default.nix
new file mode 100644
index 0000000..4df376f
--- /dev/null
+++ b/common/modules/default.nix
@@ -0,0 +1,34 @@
+{ inputs, ... }:
+let
+ lib = inputs.nixpkgs.lib;
+ mkMods =
+ homeManager:
+ let
+ args = {
+ moduleNameSpace = "beeMods";
+ inherit inputs homeManager;
+ };
+ modules = {
+ mango = import ./mango args;
+ terminal = import ./terminal args;
+ # beevim = import ./beevim args;
+ matugen = import ./matugen args;
+ };
+ in
+ modules
+ // {
+ beeMods = {
+ imports = lib.attrValues modules;
+ };
+ };
+in
+{
+ options.flake.homeModules = lib.mkOption {
+ type = lib.types.lazyAttrsOf lib.types.unspecified;
+ };
+
+ config = {
+ flake.nixosModules = mkMods false;
+ flake.homeModules = mkMods true;
+ };
+}
diff --git a/common/modules/mango/default.nix b/common/modules/mango/default.nix
new file mode 100644
index 0000000..b5332a4
--- /dev/null
+++ b/common/modules/mango/default.nix
@@ -0,0 +1,416 @@
+{
+ homeManager,
+ inputs,
+ moduleNameSpace,
+ ...
+}:
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+let
+ cfg = config.${moduleNameSpace}.mango;
+ snip = pkgs.writeShellScript "snip" ''
+ case $1 in
+ full)
+ ${pkgs.grim}/bin/grim - | wl-copy
+ ;;
+ selection)
+ GEOM=$(${pkgs.slurp}/bin/slurp) || exit
+ ${pkgs.grim}/bin/grim -g "$GEOM" - | wl-copy
+ ;;
+ esac
+ '';
+ smart-alacritty = pkgs.writeShellScript "smart-alacritty" ''
+ alacritty msg create-window || exec alacritty
+ '';
+ smart-ghostty = pkgs.writeShellScript "smart-ghostty" ''
+ ghostty +new-window || exec ghostty
+ '';
+ terminal =
+ if config.beeMods.terminal.default == "alacritty" then
+ smart-alacritty
+ else if config.beeMods.terminal.default == "ghostty" then
+ smart-ghostty
+ else
+ config.beeMods.terminal.default;
+in
+{
+ imports =
+ if homeManager then
+ [
+ inputs.mango.hmModules.mango
+ ]
+ else
+ [
+ inputs.mango.nixosModules.mango
+ ];
+ options.${moduleNameSpace}.mango = {
+ enable = lib.mkEnableOption "mango setup";
+ animations = lib.mkEnableOption "Uiiiiiiiiiii";
+ waybar = lib.mkEnableOption "Enable waybar";
+ window = {
+ blur = {
+ enable = lib.mkEnableOption "Enable window blur";
+ passes = lib.mkOption {
+ type = lib.types.int;
+ default = 1;
+ };
+ radius = lib.mkOption {
+ type = lib.types.int;
+ default = 10;
+ };
+ };
+ shadows = lib.mkEnableOption "Enable window drop shadows";
+ border_radius = lib.mkOption {
+ type = lib.types.int;
+ default = 0;
+ description = "Border radius";
+ };
+ opacity = lib.mkOption {
+ type = lib.types.number;
+ default = 1.0;
+ description = "Window opacity";
+ };
+ };
+ };
+
+ config = lib.mkIf cfg.enable (
+ if homeManager then
+ {
+ wayland.windowManager.mango = {
+ enable = true;
+ settings = ''
+ ${lib.optionalString (config.beeMods.matugen.enable) ''
+ source=~/.config/mango/mango-colors.conf
+ ''}
+
+ # Window effect
+ blur=${if cfg.window.blur.enable then "1" else "0"}
+ blur_layer=0
+ blur_optimized=1
+ blur_params_num_passes = ${toString cfg.window.blur.passes}
+ blur_params_radius = ${toString cfg.window.blur.radius}
+ blur_params_noise = 0.02
+ blur_params_brightness = 0.9
+ blur_params_contrast = 0.9
+ blur_params_saturation = 1.2
+
+ shadows=${if cfg.window.shadows then "1" else "0"}
+ layer_shadows = 0
+ shadow_only_floating = 1
+ shadows_size = 10
+ shadows_blur = 15
+ shadows_position_x = 0
+ shadows_position_y = 0
+
+ border_radius=${toString cfg.window.border_radius}
+ no_radius_when_single=0
+
+ ${
+ if (cfg.window.blur.enable && cfg.window.opacity == 1.0) then
+ ''
+ focused_opacity=0.91
+ unfocused_opacity=0.91
+ ''
+ else
+ ''
+ focused_opacity=${toString cfg.window.opacity}
+ unfocused_opacity=${toString cfg.window.opacity}
+ ''
+ }
+
+ # Animation Configuration(support type:zoom,slide)
+ # tag_animation_direction: 1-horizontal,0-vertical
+ animations=${if cfg.animations then "1" else "0"}
+ layer_animations=0
+ animation_type_open=slide
+ animation_type_close=zoom
+ animation_fade_in=0
+ animation_fade_out=1
+ tag_animation_direction=1
+ zoom_initial_ratio=0.8
+ zoom_end_ratio=0.8
+ fadein_begin_opacity=0.5
+ fadeout_begin_opacity=0.5
+ animation_duration_move=300
+ animation_duration_open=350
+ animation_duration_tag=350
+ animation_duration_close=150
+ animation_duration_focus=0
+ animation_curve_open=0.05,0.7,0.1,1.0
+ animation_curve_move=0.46,1.0,0.29,1
+ animation_curve_tag=0.46,1.0,0.29,1
+ animation_curve_close=0.0,0.0,1.0,1.0
+ animation_curve_focus=0.05,0.7,0.1,1.0
+ animation_curve_opafadeout=0.5,0.5,0.5,0.5
+ animation_curve_opafadein=0.46,1.0,0.29,1
+
+ # Scroller configuration
+ scroller_structs=15
+ scroller_default_proportion=0.8
+ scroller_focus_center=0
+ scroller_prefer_center=0
+ edge_scroller_pointer_focus=1
+ scroller_default_proportion_single=1.0
+ scroller_ignore_proportion_single=0
+ scroller_proportion_preset=0.5,0.8,1.0
+
+ # Master-Stack Layout Setting
+ new_is_master=0
+ default_mfact=0.56
+ default_nmaster=1
+ smartgaps=0
+
+ # Overview Setting
+ hotarea_size=10
+ enable_hotarea=0
+ ov_tab_mode=0
+ overviewgappi=5
+ overviewgappo=30
+
+ # Misc
+ no_border_when_single=0
+ axis_bind_apply_timeout=100
+ focus_on_activate=1
+ idleinhibit_ignore_visible=0
+ sloppyfocus=1
+ warpcursor=1
+ focus_cross_monitor=0
+ focus_cross_tag=0
+ enable_floating_snap=0
+ snap_distance=30
+ # cursor_size=24
+ drag_tile_to_tile=1
+ xwayland_persistence=0
+ syncobj_enable=0
+ allow_tearing=0
+
+ # keyboard
+ repeat_delay=300;
+ repeat_rate=50;
+ numlockon=0
+ xkb_rules_layout=us
+
+ # Trackpad
+ # need relogin to make it apply
+ disable_trackpad=0
+ tap_to_click=1
+ tap_and_drag=1
+ drag_lock=1
+ trackpad_natural_scrolling=1
+ disable_while_typing=1
+ left_handed=0
+ middle_button_emulation=0
+ swipe_min_threshold=1
+
+ # mouse
+ # need relogin to make it apply
+ mouse_natural_scrolling=0
+
+ windowrule=tags:1,appid:^(foot|footclient|alacritty)$
+ windowrule=tags:2,appid:^(zen|firefox|obsidian)$
+ windowrule=tags:3,appid:^(vesktop|discord|thunderbird|Element|equibop)$
+ windowrule=tags:4,appid:^steam$
+
+ windowrule=scroller_proportion:0.3,appid:^steam$,title:^Friends List$
+ windowrule=scroller_proportion:0.5,appid:^steam$,title:.*(Settings|Properties).*
+ windowrule=isfloating:1,appid:^steam$,title:^Steam - News$
+ windowrule=isfloating:1,appid:^(org.gnome.Calculator|org.pulseaudio.pavucontrol)$
+ windowrule=isoverlay:1,appid:^com.gabm.satty$
+
+ # Appearance
+ gappih=5
+ gappiv=5
+ gappoh=5
+ gappov=5
+ scratchpad_width_ratio=0.8
+ scratchpad_height_ratio=0.9
+ borderpx=2
+
+ # layout support:
+ # tile,scroller,grid,deck,monocle,center_tile,vertical_tile,vertical_scroller
+ tagrule=id:1,layout_name:tgmix
+ tagrule=id:2,layout_name:scroller
+ tagrule=id:3,layout_name:scroller
+ tagrule=id:4,layout_name:scroller
+ tagrule=id:5,layout_name:grid
+ tagrule=id:6,layout_name:tile
+ tagrule=id:7,layout_name:tile
+ tagrule=id:8,layout_name:tile
+ tagrule=id:9,layout_name:tile
+
+ # Key Bindings
+ # key name refer to `xev` or `wev` command output,
+ # mod keys name: super,ctrl,alt,shift,none
+
+ # reload config
+ bind=SUPER,r,reload_config
+
+ bind=SUPER,Return,spawn,${terminal}
+
+ # bind=SUPER,v,spawn,clipvault list | rofi -dmenu -display-columns 2 | clipvault get | wl-copy
+ bind=SUPER,a,spawn,rofi -show drun
+ bind=SUPER,period,spawn,rofi -show emoji -modi emoji
+ bind=ALT,F4,spawn,wlogout -C ~/.config/wlogout/style.css -l ~/.config/wlogout/layout -b 6 --protocol layer-shell
+ bind=SUPER,y,spawn,wall-picker
+
+ bind=SUPER,F12,spawn,gnome-calculator
+ bind=SUPER,b,spawn,zen
+ bind=SUPER,e,spawn,nautilus
+
+ # exit
+ bind=SUPER,m,quit
+ bind=SUPER,q,killclient,
+
+ # switch window focus
+ bind=SUPER,h,focusdir,left
+ bind=SUPER,l,focusdir,right
+ bind=SUPER,k,focusdir,up
+ bind=SUPER,j,focusdir,down
+
+ bind=NONE,Print,spawn,${snip} full
+ bind=SUPER,Print,spawn,${snip} selection
+
+ # swap window
+ bind=SUPER+SHIFT,k,exchange_client,up
+ bind=SUPER+SHIFT,j,exchange_client,down
+ bind=SUPER+SHIFT,h,exchange_client,left
+ bind=SUPER+SHIFT,l,exchange_client,right
+
+ # switch window status
+ bind=SUPER,g,toggleglobal,
+ bind=ALT,Tab,toggleoverview,
+ bind=SUPER,space,togglefloating,
+ bind=ALT,a,togglemaximizescreen,
+ bind=ALT,f,togglefullscreen,
+ bind=ALT+SHIFT,f,togglefakefullscreen,
+ bind=SUPER,i,minimized,
+ bind=SUPER,o,toggleoverlay,
+ bind=SUPER+SHIFT,I,restore_minimized
+ bind=ALT,z,toggle_scratchpad
+
+ # scroller layout
+ bind=ALT,e,set_proportion,1.0
+ bind=ALT,x,switch_proportion_preset,
+
+ # switch layout
+ bind=SUPER,n,switch_layout
+
+ # tag switch
+ bind=SUPER,1,view,1,0
+ bind=SUPER,2,view,2,0
+ bind=SUPER,3,view,3,0
+ bind=SUPER,4,view,4,0
+ bind=SUPER,5,view,5,0
+ bind=SUPER,6,view,6,0
+ bind=SUPER,7,view,7,0
+ bind=SUPER,8,view,8,0
+ bind=SUPER,9,view,9,0
+
+ # tag: move client to the tag and focus it
+ # tagsilent: move client to the tag and not focus it
+ # bind=Alt,1,tagsilent,1
+ bind=SUPER+SHIFT,1,tag,1,0
+ bind=SUPER+SHIFT,2,tag,2,0
+ bind=SUPER+SHIFT,3,tag,3,0
+ bind=SUPER+SHIFT,4,tag,4,0
+ bind=SUPER+SHIFT,5,tag,5,0
+ bind=SUPER+SHIFT,6,tag,6,0
+ bind=SUPER+SHIFT,7,tag,7,0
+ bind=SUPER+SHIFT,8,tag,8,0
+ bind=SUPER+SHIFT,9,tag,9,0
+
+ # monitor switch
+ bind=alt+shift,Left,focusmon,left
+ bind=alt+shift,Right,focusmon,right
+ bind=SUPER+Alt,Left,tagmon,left
+ bind=SUPER+Alt,Right,tagmon,right
+
+ # gaps
+ bind=ALT+SHIFT,X,incgaps,1
+ bind=ALT+SHIFT,Z,incgaps,-1
+ bind=ALT+SHIFT,R,togglegaps
+
+ # movewin
+ bind=SUPER,Up,movewin,+0,-50
+ bind=SUPER,Down,movewin,+0,+50
+ bind=SUPER,Left,movewin,-50,+0
+ bind=SUPER,Right,movewin,+50,+0
+
+ # resizewin
+ bind=ALT,k,resizewin,+0,-50
+ bind=ALT,j,resizewin,+0,+50
+ bind=ALT,h,resizewin,-50,+0
+ bind=ALT,l,resizewin,+50,+0
+
+ # Volume Control (using wpctl/Pipewire)
+ bind=NONE,XF86AudioRaiseVolume,spawn,volume-control up
+ bind=NONE,XF86AudioLowerVolume,spawn,volume-control down
+ bind=NONE,XF86AudioMute,spawn,volume-control mute
+
+ bind=NONE,XF86AudioPlay,spawn,playerctl play-pause
+ bind=NONE,XF86AudioNext,spawn,playerctl next
+ bind=NONE,XF86AudioPrev,spawn,playerctl previous
+ bind=NONE,XF86AudioStop,spawn,playerctl stop
+
+ # Mic Control
+ bind=NONE,XF86AudioMicMute,spawn,mic-control toggle
+
+ # Brightness Control (using brightnessctl)
+ bind=NONE,XF86MonBrightnessUp,spawn,brightness-control up
+ bind=NONE,XF86MonBrightnessDown,spawn,brightness-control down
+
+ # Mouse Button Bindings
+ # NONE mode key only work in ov mode
+ mousebind=SUPER,btn_left,moveresize,curmove
+ mousebind=NONE,btn_middle,togglemaximizescreen,0
+ mousebind=SUPER,btn_right,moveresize,curresize
+
+ # Axis Bindings
+ axisbind=SUPER,UP,viewtoleft_have_client
+ axisbind=SUPER,DOWN,viewtoright_have_client
+
+ # layer rule
+ layerrule=animation_type_open:zoom,layer_name:rofi
+ layerrule=animation_type_close:zoom,layer_name:rofi
+
+ env=NIXOS_OZONE_WL,1
+ env=QT_AUTO_SCREEN_SCALE_FACTOR,1
+ env=ELECTRON_OZONE_PLATFORM_HINT,auto
+ env=QT_QPA_PLATFORM,wayland;xcb
+ env=XDG_SESSION_TYPE,wayland
+ env=GDK_BACKEND,wayland,x11
+ env=GDK_SCALE,1
+
+ # exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+ exec-once = /bin/sh -c 'eval $(gnome-keyring-daemon --start --components=secrets,ssh); dbus-update-activation-environment --systemd --all'
+ exec-once = ${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1
+
+ ${lib.optionalString (config.services.picom.enable) ''
+ exec-once = systemctl --user stop picom.service
+ ''}
+ exec-once = sh ~/.swaybg
+
+ ${lib.optionalString (cfg.waybar) ''
+ exec-once = waybar &
+ ''}
+ exec-once = dunst &
+
+ exec-once = wl-clip-persist --clipboard regular
+ '';
+ };
+ home.packages = with pkgs; [
+ swaybg
+ wl-clipboard-rs
+ wl-clip-persist
+ ];
+ }
+ else
+ {
+ programs.mango.enable = true;
+ }
+ );
+}
diff --git a/common/modules/matugen/default.nix b/common/modules/matugen/default.nix
new file mode 100644
index 0000000..29599bd
--- /dev/null
+++ b/common/modules/matugen/default.nix
@@ -0,0 +1,186 @@
+{
+ homeManager,
+ inputs,
+ moduleNameSpace,
+ ...
+}:
+
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+let
+ cfg = config.${moduleNameSpace}.matugen;
+ link_zen = pkgs.writeShellScript "link_zen" ''
+ export PROFILE_DIR=$(find ~/.config/zen/ -maxdepth 1 -type d -name "*.Default Profile" | head -n 1)
+ mkdir -p "$PROFILE_DIR/chrome"
+ ln -sf ~/.cache/wallust/userChrome.css "$PROFILE_DIR/chrome/userChrome.css"
+ '';
+ update_gtkcolors = pkgs.writeShellScript "update_gtkcolors" ''
+ dconf write /org/gnome/desktop/interface/color-scheme "'prefer-light'"
+ sleep 0.1
+ dconf write /org/gnome/desktop/interface/color-scheme "'prefer-dark'"
+
+ systemctl --user restart xdg-desktop-portal-gtk
+ '';
+in
+{
+ imports = [ ./templates ];
+
+ options.${moduleNameSpace}.matugen = {
+ enable = lib.mkEnableOption "Enable Dynamic colors";
+ };
+
+ config = lib.mkIf cfg.enable {
+ programs.wallust = {
+ enable = true;
+ settings = {
+ backend = "wal";
+ color_space = "labmixed";
+ palette = "dark16";
+ fallback_generator = "interpolate";
+ threshold = 11;
+ check_contrast = true;
+ templates = {
+ foot = {
+ template = "foot-colors.ini";
+ target = "~/.config/foot/colors.ini";
+ };
+ alacritty = {
+ template = "alacritty-colors.toml";
+ target = "~/.config/alacritty/colors.toml";
+ };
+ ghostty = {
+ template = "ghostty-colors.conf";
+ target = "~/.config/ghostty/colors.conf";
+ };
+ zen = {
+ template = "userChrome.css";
+ target = "~/.cache/wallust/userChrome.css";
+ };
+ xresources = {
+ template = "colors-xresources";
+ target = "~/.config/x11/matugen.Xresources";
+ };
+ };
+ };
+ };
+
+ xdg.configFile = {
+ "matugen/config.toml" = {
+ # enable = !config.programs.noctalia-shell.enable;
+ text =
+ # toml
+ ''
+ [config]
+ ${lib.optionalString config.beeMods.terminal.alacritty ''
+ [templates.alacritty]
+ input_path = '~/.config/matugen/templates/alacritty-colors.toml'
+ output_path = '~/.config/wallust/templates/alacritty-colors.toml'
+ ''}
+
+ ${lib.optionalString config.beeMods.terminal.foot ''
+ [templates.foot]
+ input_path = '~/.config/matugen/templates/foot-colors.ini'
+ output_path = '~/.config/wallust/templates/foot-colors.ini'
+ ''}
+
+ ${lib.optionalString config.beeMods.terminal.ghostty ''
+ [templates.ghostty]
+ input_path = '~/.config/matugen/templates/ghostty.conf'
+ output_path = '~/.config/wallust/templates/ghostty-colors.conf'
+ ''}
+
+ ${lib.optionalString config.programs.zathura.enable ''
+ [templates.zathura]
+ input_path = '~/.config/matugen/templates/zathura.toml'
+ output_path = '~/.config/zathura/matugen'
+ ''}
+
+ ${lib.optionalString config.programs.swaylock.enable ''
+ [templates.swaylock]
+ input_path = '~/.config/matugen/templates/swaylock-colors'
+ output_path = '~/.config/swaylock/swaylock-colors'
+ ''}
+
+ ${lib.optionalString config.beeMods.mango.enable ''
+ [templates.mango]
+ input_path = '~/.config/matugen/templates/mango.conf'
+ output_path = '~/.config/mango/mango-colors.conf'
+ post_hook = 'mmsg -d reload_config'
+ ''}
+
+ ${lib.optionalString config.programs.btop.enable ''
+ [templates.btop]
+ input_path = '~/.config/matugen/templates/btop.theme'
+ output_path = '~/.config/btop/themes/matugen.theme'
+ ''}
+
+ ${lib.optionalString config.programs.yazi.enable ''
+ [templates.yazi]
+ input_path = '~/.config/matugen/templates/yazi.toml'
+ output_path = '~/.config/yazi/theme.toml'
+ ''}
+
+
+ ${lib.optionalString config.beeMods.mango.enable ''
+ [templates.Xresources]
+ input_path = "~/.config/matugen/templates/colors-xresources"
+ output_path = "~/.config/wallust/templates/colors-xresources"
+ ''}
+
+
+ ${lib.optionalString config.programs.vesktop.enable ''
+ [templates.discord]
+ input_path = "~/.config/matugen/templates/discord.css"
+ output_path = "~/.config/vesktop/themes/midnight.css"
+ ''}
+
+ ${lib.optionalString config.beeMods.mango.waybar ''
+ [templates.waybar]
+ input_path = "~/.config/matugen/templates/waybar.css"
+ output_path = "~/.config/waybar/colors.css"
+ # post_hook = "pkill -SIGUSR2 waybar"
+ ''}
+
+ [templates.wlogout]
+ input_path = "~/.config/matugen/templates/wlogout.css"
+ output_path = "~/.config/wlogout/colors.css"
+
+ [templates.dunst]
+ input_path = '~/.config/matugen/templates/dunstrc'
+ output_path = '~/.config/dunst/dunstrc'
+ post_hook = "dunstctl reload"
+
+ ${lib.optionalString config.programs.rofi.enable ''
+ [templates.rofi]
+ input_path = '~/.config/matugen/templates/rofi-colors.rasi'
+ output_path = '~/.config/rofi/shared/colors.rasi'
+ ''}
+
+ ${lib.optionalString config.gtk.enable ''
+ [templates.gtk3]
+ input_path = '~/.config/matugen/templates/colors.css'
+ output_path = '~/.config/gtk-3.0/colors.css'
+
+ [templates.gtk4]
+ input_path = '~/.config/matugen/templates/colors.css'
+ output_path = '~/.config/gtk-4.0/colors.css'
+ post_hook = "${update_gtkcolors}"
+ ''}
+
+ [templates.zed]
+ input_path = '~/.config/matugen/templates/zed.json'
+ output_path = '~/.config/zed/themes/matugen.json'
+
+ [templates.zen]
+ input_path = '~/.config/matugen/templates/zen.css'
+ output_path = '~/.config/wallust/templates/userChrome.css'
+ post_hook = "${link_zen}"
+ '';
+ };
+ };
+ };
+}
diff --git a/common/modules/matugen/templates/default.nix b/common/modules/matugen/templates/default.nix
new file mode 100644
index 0000000..d170adb
--- /dev/null
+++ b/common/modules/matugen/templates/default.nix
@@ -0,0 +1,4 @@
+{ importer, ... }:
+{
+ imports = importer ./.;
+}
diff --git a/common/modules/matugen/templates/matugen-btop.nix b/common/modules/matugen/templates/matugen-btop.nix
new file mode 100644
index 0000000..1f23c25
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-btop.nix
@@ -0,0 +1,93 @@
+{
+ config,
+ lib,
+ ...
+}:
+{
+ config = lib.mkIf config.programs.btop.enable {
+ xdg.configFile = {
+ "matugen/templates/btop.theme" = {
+ text = ''
+ # Main background, empty for terminal default, need to be empty if you want transparent background
+ theme[main_bg]=""
+
+ # Main text color
+ theme[main_fg]="{{colors.on_surface.default.hex}}"
+
+ # Title color for boxes
+ theme[title]="{{colors.primary.default.hex}}"
+
+ # Highlight color for keyboard shortcuts
+ theme[hi_fg]="{{colors.secondary.default.hex}}"
+
+ # Background color of selected item in processes box
+ theme[selected_bg]="{{colors.primary.default.hex}}"
+
+ # Foreground color of selected item in processes box
+ theme[selected_fg]="{{colors.on_primary.default.hex}}"
+
+ # Color of inactive/disabled text
+ theme[inactive_fg]="{{colors.on_surface_variant.default.hex}}"
+
+ # Misc colors for processes box including mini cpu graphs, details memory graph and details status text
+ theme[proc_misc]="{{colors.tertiary.default.hex}}"
+
+ # Cpu box outline color
+ theme[cpu_box]="{{colors.outline.default.hex}}"
+
+ # Memory/disks box outline color
+ theme[mem_box]="{{colors.outline.default.hex}}"
+
+ # Net up/down box outline color
+ theme[net_box]="{{colors.outline.default.hex}}"
+
+ # Processes box outline color
+ theme[proc_box]="{{colors.outline.default.hex}}"
+
+ # Box divider line and small boxes line color
+ theme[div_line]="{{colors.outline_variant.default.hex}}"
+
+ # Temperature graph colors
+ theme[temp_start]="{{colors.secondary.default.hex}}"
+ theme[temp_mid]="{{colors.primary.default.hex}}"
+ theme[temp_end]="{{colors.error.default.hex}}"
+
+ # CPU graph colors
+ theme[cpu_start]="{{colors.secondary.default.hex}}"
+ theme[cpu_mid]="{{colors.primary.default.hex}}"
+ theme[cpu_end]="{{colors.error.default.hex}}"
+
+ # Mem/Disk free meter
+ theme[free_start]="{{colors.secondary.default.hex}}"
+ theme[free_mid]=""
+ theme[free_end]="{{colors.secondary_container.default.hex}}"
+
+ # Mem/Disk cached meter
+ theme[cached_start]="{{colors.tertiary.default.hex}}"
+ theme[cached_mid]=""
+ theme[cached_end]="{{colors.tertiary_container.default.hex}}"
+
+ # Mem/Disk available meter
+ theme[available_start]="{{colors.primary.default.hex}}"
+ theme[available_mid]=""
+ theme[available_end]="{{colors.primary_container.default.hex}}"
+
+ # Mem/Disk used meter
+ theme[used_start]="{{colors.error.default.hex}}"
+ theme[used_mid]=""
+ theme[used_end]="{{colors.error_container.default.hex}}"
+
+ # Download graph colors
+ theme[download_start]="{{colors.secondary.default.hex}}"
+ theme[download_mid]="{{colors.primary.default.hex}}"
+ theme[download_end]="{{colors.tertiary.default.hex}}"
+
+ # Upload graph colors
+ theme[upload_start]="{{colors.secondary.default.hex}}"
+ theme[upload_mid]="{{colors.primary.default.hex}}"
+ theme[upload_end]="{{colors.tertiary.default.hex}}"
+ '';
+ };
+ };
+ };
+}
diff --git a/common/modules/matugen/templates/matugen-discord.nix b/common/modules/matugen/templates/matugen-discord.nix
new file mode 100644
index 0000000..7beef19
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-discord.nix
@@ -0,0 +1,112 @@
+{
+ config,
+ lib,
+ ...
+}:
+{
+ config = lib.mkIf config.programs.vesktop.enable {
+ xdg.configFile."matugen/templates/discord.css" = {
+ text = ''
+ /**
+ * @name midnight
+ * @description midnight-discord, generated by matugen
+ * @author refact0r
+ * @version 1.6.2
+ * @invite nz87hXyvcy
+ * @website https://github.com/refact0r/midnight-discord
+ * @source https://github.com/refact0r/midnight-discord/blob/master/midnight.theme.css
+ * @authorId 508863359777505290
+ * @authorLink https://www.refact0r.dev
+ */
+
+ /* IMPORTANT: make sure to enable dark mode in discord settings for the theme to apply properly!!! */
+
+ @import url('https://refact0r.github.io/midnight-discord/build/midnight.css');
+
+ /* customize things here */
+ :root {
+ /* font, change to 'gg sans' for default discord font*/
+ --font: 'IBM Plex Mono';
+
+ /* top left corner text */
+ --corner-text: 'Midnight';
+
+ /* color of status indicators and window controls */
+ --online-indicator: {{colors.inverse_primary.default.hex}}; /* change to #23a55a for default green */
+ --dnd-indicator: {{colors.error.default.hex}}; /* change to #f13f43 for default red */
+ --idle-indicator: {{colors.tertiary_container.default.hex}}; /* change to #f0b232 for default yellow */
+ --streaming-indicator: {{colors.on_primary.default.hex}}; /* change to #593695 for default purple */
+
+ /* accent colors */
+ --accent-1: {{colors.tertiary.default.hex}}; /* links */
+ --accent-2: {{colors.primary.default.hex}}; /* general unread/mention elements, some icons when active */
+ --accent-3: {{colors.primary.default.hex}}; /* accent buttons */
+ --accent-4: {{colors.surface_bright.default.hex}}; /* accent buttons when hovered */
+ --accent-5: {{colors.primary_fixed_dim.default.hex}}; /* accent buttons when clicked */
+ --mention: {{colors.surface.default.hex}}; /* mentions & mention messages */
+ --mention-hover: {{colors.surface_bright.default.hex}}; /* mentions & mention messages when hovered */
+
+ /* text colors */
+ --text-0: {{colors.surface.default.hex}}; /* text on colored elements */
+ --text-1: {{colors.on_surface.default.hex}}; /* other normally white text */
+ --text-2: {{colors.on_surface.default.hex}}; /* headings and important text */
+ --text-3: {{colors.on_surface_variant.default.hex}}; /* normal text */
+ --text-4: {{colors.on_surface_variant.default.hex}}; /* icon buttons and channels */
+ --text-5: {{colors.outline.default.hex}}; /* muted channels/chats and timestamps */
+
+ /* background and dark colors */
+ --bg-1: {{colors.surface_variant.default.hex}}; /* dark buttons when clicked */
+ --bg-2: {{colors.surface_container_high.default.hex}}; /* dark buttons */
+ --bg-3: {{colors.surface_container_low.default.hex}}; /* spacing, secondary elements */
+ --bg-4: {{colors.surface.default.hex}}; /* main background color */
+ --hover: {{colors.surface_bright.default.hex}}; /* channels and buttons when hovered */
+ --active: {{colors.surface_bright.default.hex}}; /* channels and buttons when clicked or selected */
+ --message-hover: {{colors.surface_bright.default.hex}}; /* messages when hovered */
+
+ /* amount of spacing and padding */
+ --spacing: 12px;
+
+ /* animations */
+ /* ALL ANIMATIONS CAN BE DISABLED WITH REDUCED MOTION IN DISCORD SETTINGS */
+ --list-item-transition: 0.2s ease; /* channels/members/settings hover transition */
+ --unread-bar-transition: 0.2s ease; /* unread bar moving into view transition */
+ --moon-spin-transition: 0.4s ease; /* moon icon spin */
+ --icon-spin-transition: 1s ease; /* round icon button spin (settings, emoji, etc.) */
+
+ /* corner roundness (border-radius) */
+ --roundness-xl: 22px; /* roundness of big panel outer corners */
+ --roundness-l: 20px; /* popout panels */
+ --roundness-m: 16px; /* smaller panels, images, embeds */
+ --roundness-s: 12px; /* members, settings inputs */
+ --roundness-xs: 10px; /* channels, buttons */
+ --roundness-xxs: 8px; /* searchbar, small elements */
+
+ /* direct messages moon icon */
+ /* change to block to show, none to hide */
+ --discord-icon: none; /* discord icon */
+ --moon-icon: block; /* moon icon */
+ --moon-icon-url: url('https://upload.wikimedia.org/wikipedia/commons/c/c4/Font_Awesome_5_solid_moon.svg'); /* custom icon url */
+ --moon-icon-size: auto;
+
+ /* filter uncolorable elements to fit theme */
+ /* (just set to none, they're too much work to configure) */
+ --login-bg-filter: saturate(0.3) hue-rotate(-15deg) brightness(0.4); /* login background artwork */
+ --green-to-accent-3-filter: hue-rotate(56deg) saturate(1.43); /* add friend page explore icon */
+ --blurple-to-accent-3-filter: hue-rotate(304deg) saturate(0.84) brightness(1.2); /* add friend page school icon */
+ }
+
+ /* Selected chat/friend text */
+ .selected_f5eb4b,
+ .selected_f6f816 .link_d8bfb3 {
+ color: var(--text-0) !important;
+ background: var(--accent-3) !important;
+ }
+
+ .selected_f6f816 .link_d8bfb3 * {
+ color: var(--text-0) !important;
+ fill: var(--text-0) !important;
+ }
+ '';
+ };
+ };
+}
diff --git a/common/modules/matugen/templates/matugen-dunst.nix b/common/modules/matugen/templates/matugen-dunst.nix
new file mode 100644
index 0000000..2f7d107
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-dunst.nix
@@ -0,0 +1,44 @@
+{
+ config,
+ pkgs,
+ ...
+}:
+let
+ playSound = pkgs.writeShellScriptBin "play-notification-sound" ''
+ ${pkgs.libcanberra-gtk3}/bin/canberra-gtk-play -i message
+ '';
+in
+{
+ xdg.configFile."matugen/templates/dunstrc" = {
+ text = ''
+ [global]
+ font = "Lilex Nerd Font 11"
+ corner_radius=0
+ frame_width = 2
+ markup = yes
+ plain_text = no
+ browser = zen --new-tab
+
+ [play_sound]
+ summary = "*"
+ script = "${playSound}/bin/play-notification-sound"
+
+ # --- Matugen Colors ---
+ frame_color = "{{colors.primary.default.hex}}"
+ separator_color = "{{colors.primary_container.default.hex}}"
+
+ [urgency_low]
+ background = "{{colors.surface.default.hex}}"
+ foreground = "{{colors.on_surface.default.hex}}"
+
+ [urgency_normal]
+ background = "{{colors.surface.default.hex}}"
+ foreground = "{{colors.on_surface.default.hex}}"
+
+ [urgency_critical]
+ background = "{{colors.error_container.default.hex}}"
+ foreground = "{{colors.on_error_container.default.hex}}"
+ frame_color = "{{colors.error.default.hex}}"
+ '';
+ };
+}
diff --git a/common/modules/matugen/templates/matugen-gtk.nix b/common/modules/matugen/templates/matugen-gtk.nix
new file mode 100644
index 0000000..0896d04
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-gtk.nix
@@ -0,0 +1,58 @@
+{
+ config,
+ lib,
+ ...
+}:
+{
+ config = lib.mkIf config.gtk.enable {
+ xdg.configFile = {
+ "matugen/templates/colors.css" = {
+ text =
+ # css
+ ''
+ /* Destructive colors are basically error colors */
+ @define-color destructive_bg_color {{colors.error.default.hex}};
+ @define-color destructive_fg_color {{colors.on_error.default.hex}};
+ /* Follow material spec */
+ @define-color error_bg_color {{colors.error.default.hex}};
+ @define-color error_fg_color {{colors.on_error.default.hex}};
+ /* Follow material spec (also I think looks nicer) */
+ @define-color accent_fg_color {{colors.on_primary.default.hex}};
+ @define-color accent_bg_color {{colors.primary.default.hex}};
+ /* Use surface instead of background */
+ @define-color window_bg_color {{colors.surface.default.hex}};
+ @define-color window_fg_color {{colors.on_surface.default.hex}};
+ /* Make it more similar to Adwaita */
+ @define-color view_bg_color {{colors.surface.default.hex}};
+ @define-color view_fg_color {{colors.on_surface.default.hex}};
+ @define-color headerbar_bg_color {{colors.surface.default.hex}};
+ @define-color headerbar_fg_color {{colors.on_surface.default.hex}};
+ @define-color sidebar_bg_color {{colors.surface_container.default.hex}};
+ @define-color sidebar_fg_color {{colors.on_surface.default.hex}};
+ /* There is only like one application I know that uses this, and there isn't a good way to get
+ a color between surface and surface container so I think just giving this surface is a good enough fallback*/
+ @define-color secondary_sidebar_bg_color {{colors.surface.default.hex}};
+ @define-color secondary_sidebar_fg_color {{colors.on_surface.default.hex}};
+ @define-color card_bg_color {{colors.surface_container.default.hex}};
+ @define-color card_fg_color {{colors.on_surface.default.hex}};
+ @define-color overview_bg_color {{colors.surface_container.default.hex}};
+ @define-color overview_fg_color {{colors.on_surface.default.hex}};
+ @define-color popover_bg_color {{colors.surface_container.default.hex}};
+ @define-color popover_fg_color {{colors.on_surface.default.hex}};
+ @define-color dialog_bg_color {{colors.surface.default.hex}};
+ @define-color dialog_fg_color {{colors.on_surface.default.hex}};
+
+ /* Backdrop/unfocused states - prevents white flash on window unfocus */
+ @define-color headerbar_backdrop_color @window_bg_color;
+ @define-color sidebar_backdrop_color @sidebar_bg_color;
+ @define-color theme_unfocused_fg_color @window_fg_color;
+ @define-color theme_unfocused_text_color @view_fg_color;
+ @define-color theme_unfocused_bg_color @window_bg_color;
+ @define-color theme_unfocused_base_color @window_bg_color;
+ @define-color theme_unfocused_selected_bg_color @accent_bg_color;
+ @define-color theme_unfocused_selected_fg_color @accent_fg_color;
+ '';
+ };
+ };
+ };
+}
diff --git a/common/modules/matugen/templates/matugen-mango.nix b/common/modules/matugen/templates/matugen-mango.nix
new file mode 100644
index 0000000..b6a89b2
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-mango.nix
@@ -0,0 +1,24 @@
+{
+ config,
+ lib,
+ ...
+}:
+{
+ config = lib.mkIf config.beeMods.mango.enable {
+ xdg.configFile = {
+ "matugen/templates/mango.conf" = {
+ text = ''
+ shadowscolor = 0x{{colors.shadow.default.hex_stripped}}ff
+ rootcolor = 0x{{colors.surface.default.hex_stripped}}ff
+ bordercolor = 0x{{colors.outline.default.hex_stripped}}ff
+ focuscolor = 0x{{colors.primary.default.hex_stripped}}ff
+ maximizescreencolor = 0x{{colors.secondary.default.hex_stripped}}ff
+ urgentcolor = 0x{{colors.error.default.hex_stripped}}ff
+ scratchpadcolor = 0x{{colors.tertiary.default.hex_stripped}}ff
+ globalcolor = 0x{{colors.on_tertiary.default.hex_stripped}}ff
+ overlaycolor = 0x{{colors.on_primary.default.hex_stripped}}ff
+ '';
+ };
+ };
+ };
+}
diff --git a/common/modules/matugen/templates/matugen-rofi.nix b/common/modules/matugen/templates/matugen-rofi.nix
new file mode 100644
index 0000000..9645e5a
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-rofi.nix
@@ -0,0 +1,25 @@
+{
+ config,
+ lib,
+ ...
+}:
+{
+ config = lib.mkIf config.programs.rofi.enable {
+ xdg.configFile = {
+ "matugen/templates/rofi-colors.rasi" = {
+ text =
+ # rasi
+ ''
+ * {
+ background: {{colors.surface.default.hex}};
+ background-alt: {{colors.surface_container.default.hex}};
+ foreground: {{colors.on_surface.default.hex}};
+ selected: {{colors.primary.default.hex}};
+ active: {{colors.secondary.default.hex}};
+ urgent: {{colors.error.default.hex}};
+ }
+ '';
+ };
+ };
+ };
+}
diff --git a/common/modules/matugen/templates/matugen-swaylock.nix b/common/modules/matugen/templates/matugen-swaylock.nix
new file mode 100644
index 0000000..19514cf
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-swaylock.nix
@@ -0,0 +1,54 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+{
+ config = lib.mkIf config.programs.swaylock.enable {
+ xdg.configFile."matugen/templates/swaylock-colors" = {
+ text = ''
+ # --- Swaylock Config (Moved from Nix settings) ---
+ show-failed-attempts
+ indicator-radius=100
+ indicator-thickness=7
+ line-uses-inside
+
+ # --- Base Colors ---
+ color={{colors.background.default.hex}}
+ layout-text-color={{colors.on_surface.default.hex}}
+
+ # --- State: Idle (Gray-like ring for visibility) ---
+ # Using surface_variant for a distinct but neutral gray ring
+ ring-color={{colors.surface_variant.default.hex}}
+ inside-color={{colors.surface.default.hex}}
+ text-color={{colors.on_surface.default.hex}}
+
+ # Key Highlight (When typing)
+ key-hl-color={{colors.primary.default.hex}}
+ separator-color={{colors.outline.default.hex}}
+
+ # --- State: Verifying (Pressing Enter) ---
+ # Switched to Primary to make the "Enter" state pop
+ ring-ver-color={{colors.primary.default.hex}}
+ inside-ver-color={{colors.primary_container.default.hex}}
+ text-ver-color={{colors.on_primary_container.default.hex}}
+
+ # --- State: Wrong Password ---
+ ring-wrong-color={{colors.error.default.hex}}
+ inside-wrong-color={{colors.error_container.default.hex}}
+ text-wrong-color={{colors.on_error_container.default.hex}}
+
+ # --- State: Backspace / Clear ---
+ ring-clear-color={{colors.secondary.default.hex}}
+ inside-clear-color={{colors.surface_variant.default.hex}}
+ text-clear-color={{colors.on_surface_variant.default.hex}}
+
+ # --- Misc ---
+ bs-hl-color={{colors.error.default.hex}}
+ caps-lock-key-hl-color={{colors.tertiary.default.hex}}
+ caps-lock-bs-hl-color={{colors.error.default.hex}}
+ '';
+ };
+ };
+}
diff --git a/common/modules/matugen/templates/matugen-terminal.nix b/common/modules/matugen/templates/matugen-terminal.nix
new file mode 100644
index 0000000..ae8cd79
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-terminal.nix
@@ -0,0 +1,107 @@
+{
+ config,
+ lib,
+ ...
+}:
+{
+ config = lib.mkMerge [
+ (lib.mkIf config.beeMods.terminal.foot {
+ xdg.configFile."matugen/templates/foot-colors.ini" = {
+ text = ''
+ [colors]
+ foreground={{colors.on_surface.default.hex_stripped}}
+ background={{colors.background.default.hex_stripped}}
+ selection-foreground={{colors.on_surface.default.hex_stripped}}
+ selection-background={{colors.primary_container.default.hex_stripped}}
+ cursor = {{colors.background.default.hex_stripped}} {{colors.primary.default.hex_stripped}}
+
+ regular0=\{{color0[1:]}}
+ regular1=\{{color1[1:]}}
+ regular2=\{{color2[1:]}}
+ regular3=\{{color3[1:]}}
+ regular4=\{{color4[1:]}}
+ regular5=\{{color5[1:]}}
+ regular6=\{{color6[1:]}}
+ regular7=\{{color7[1:]}}
+
+ bright0=\{{color8[1:]}}
+ bright1=\{{color9[1:]}}
+ bright2=\{{color10[1:]}}
+ bright3=\{{color11[1:]}}
+ bright4=\{{color12[1:]}}
+ bright5=\{{color13[1:]}}
+ bright6=\{{color14[1:]}}
+ bright7=\{{color15[1:]}}
+
+
+ dim-blend-towards=<* if {{ is_dark_mode }} *>black<* else *>white<* endif *>
+ '';
+ };
+ })
+ (lib.mkIf config.beeMods.terminal.alacritty {
+ xdg.configFile."matugen/templates/alacritty-colors.toml" = {
+ text = ''
+ [colors.primary]
+ background = '{{colors.background.default.hex}}'
+ foreground = '{{colors.on_surface.default.hex}}'
+
+ [colors.selection]
+ text = '{{colors.on_surface.default.hex}}'
+ background = '{{colors.primary_container.default.hex}}'
+
+ [colors.cursor]
+ text = '{{colors.background.default.hex}}'
+ cursor = '{{colors.primary.default.hex}}'
+
+ [colors.normal]
+ black = "\{{color0}}"
+ red = "\{{color1}}"
+ green = "\{{color2}}"
+ yellow = "\{{color3}}"
+ blue = "\{{color4}}"
+ magenta = "\{{color5}}"
+ cyan = "\{{color6}}"
+ white = "\{{color7}}"
+
+ [colors.bright]
+ black = "\{{color8}}"
+ red = "\{{color9}}"
+ green = "\{{color10}}"
+ yellow = "\{{color11}}"
+ blue = "\{{color12}}"
+ magenta = "\{{color13}}"
+ cyan = "\{{color14}}"
+ white = "\{{color15}}"
+ '';
+ };
+ })
+ (lib.mkIf config.beeMods.terminal.ghostty {
+ xdg.configFile."matugen/templates/ghostty.conf" = {
+ text = ''
+ background = {{colors.background.default.hex}}
+ foreground = {{colors.on_surface.default.hex}}
+ cursor-color = {{colors.primary.default.hex}}
+ selection-background = {{colors.primary_container.default.hex}}
+ selection-foreground = {{colors.on_surface.default.hex}}
+
+ palette = 0=\{{color0}}
+ palette = 1=\{{color1}}
+ palette = 2=\{{color2}}
+ palette = 3=\{{color3}}
+ palette = 4=\{{color4}}
+ palette = 5=\{{color5}}
+ palette = 6=\{{color6}}
+ palette = 7=\{{color7}}
+ palette = 8=\{{color8}}
+ palette = 9=\{{color9}}
+ palette = 10=\{{color10}}
+ palette = 11=\{{color11}}
+ palette = 12=\{{color12}}
+ palette = 13=\{{color13}}
+ palette = 14=\{{color14}}
+ palette = 15=\{{color15}}
+ '';
+ };
+ })
+ ];
+}
diff --git a/common/modules/matugen/templates/matugen-waybar.nix b/common/modules/matugen/templates/matugen-waybar.nix
new file mode 100644
index 0000000..add8a09
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-waybar.nix
@@ -0,0 +1,24 @@
+{
+ config,
+ lib,
+ ...
+}:
+{
+ config = lib.mkIf config.beeMods.mango.waybar {
+ xdg.configFile."matugen/templates/waybar.css" = {
+ text = ''
+ @define-color bg_panel alpha({{colors.surface.default.hex}}, 0.9);
+ @define-color bg_base transparent;
+ @define-color border_color {{colors.primary.default.hex}};
+ @define-color text_main {{colors.primary.default.hex}};
+ @define-color text_muted {{colors.primary.default.hex}};
+ @define-color text_dim {{colors.primary.default.hex}};
+ @define-color text_accent {{colors.primary.default.hex}};
+ @define-color text_dark {{colors.surface_container_highest.default.hex}};
+ @define-color alert_urgent {{colors.error.default.hex}};
+ @define-color alert_minimized {{colors.error_container.default.hex}};
+ @define-color alert_critical {{colors.on_error_container.default.hex}};
+ '';
+ };
+ };
+}
diff --git a/common/modules/matugen/templates/matugen-wlogout.nix b/common/modules/matugen/templates/matugen-wlogout.nix
new file mode 100644
index 0000000..d982a00
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-wlogout.nix
@@ -0,0 +1,11 @@
+{
+ xdg.configFile."matugen/templates/wlogout.css" = {
+ text = ''
+ /* Generated by Matugen - GTK3 Color Variables */
+ @define-color surface_bg rgba({{ colors.surface.default.red }}, {{ colors.surface.default.green }}, {{ colors.surface.default.blue }}, 0.69);
+ @define-color primary_accent {{ colors.primary.default.hex }};
+ @define-color on_surface {{ colors.on_surface.default.hex }};
+ @define-color hover_bg rgba({{ colors.primary_container.default.red }}, {{ colors.primary_container.default.green }}, {{ colors.primary_container.default.blue }}, 0.3);
+ '';
+ };
+}
diff --git a/common/modules/matugen/templates/matugen-xresources.nix b/common/modules/matugen/templates/matugen-xresources.nix
new file mode 100644
index 0000000..614a4bc
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-xresources.nix
@@ -0,0 +1,47 @@
+{
+ config,
+ lib,
+ ...
+}:
+{
+ config = lib.mkIf config.beeMods.mango.enable {
+ xdg.configFile."matugen/templates/colors-xresources" = {
+ text = ''
+ dwm.normbordercolor : {{colors.outline.default.hex}}
+ dwm.normbgcolor : {{colors.surface.default.hex}}
+ dwm.normfgcolor : {{colors.on_surface.default.hex}}
+ dwm.selbordercolor : {{colors.primary.default.hex}}
+ dwm.selbgcolor : {{colors.surface_container.default.hex}}
+ dwm.selfgcolor : {{colors.primary.default.hex}}
+
+ st.background: {{colors.surface.default.hex}}
+ st.foreground: {{colors.on_surface.default.hex}}
+ st.cursorColor: {{colors.primary.default.hex}}
+
+ st.color0: \{{color0}}
+ st.color8: \{{color8}}
+
+ st.color1: \{{color1}}
+ st.color9: \{{color9}}
+
+ st.color2: \{{color2}}
+ st.color10: \{{color10}}
+
+ st.color3: \{{color3}}
+ st.color11: \{{color11}}
+
+ st.color4: \{{color4}}
+ st.color12: \{{color12}}
+
+ st.color5: \{{color5}}
+ st.color13: \{{color13}}
+
+ st.color6: \{{color6}}
+ st.color14: \{{color14}}
+
+ st.color7: \{{color7}}
+ st.color15: \{{color15}}
+ '';
+ };
+ };
+}
diff --git a/common/modules/matugen/templates/matugen-yazi.nix b/common/modules/matugen/templates/matugen-yazi.nix
new file mode 100644
index 0000000..4985b8e
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-yazi.nix
@@ -0,0 +1,197 @@
+{
+ config,
+ lib,
+ ...
+}:
+{
+ config = lib.mkIf config.programs.yazi.enable {
+ xdg.configFile = {
+ "matugen/templates/yazi.toml" = {
+ text = ''
+ # : Manager [[[
+
+ [mgr]
+ cwd = { fg = "{{colors.on_surface.default.hex}}" }
+
+ # Find
+ find_keyword = { fg = "{{colors.error.default.hex}}", bold = true, italic = true, underline = true }
+ find_position = { fg = "{{colors.error.default.hex}}", bold = true, italic = true }
+
+ # Marker
+ marker_copied = { fg = "{{colors.tertiary_fixed.default.hex | auto_lightness: 20.0}}", bg = "{{colors.tertiary_fixed.default.hex | auto_lightness: 20.0}}" }
+ marker_cut = { fg = "{{colors.tertiary_fixed.default.hex}}", bg = "{{colors.tertiary_fixed.default.hex}}" }
+ marker_marked = { fg = "{{colors.error.default.hex}}", bg = "{{colors.error.default.hex}}" }
+ marker_selected = { fg = "{{colors.tertiary.default.hex}}", bg = "{{colors.tertiary.default.hex}}" }
+
+ # Count
+ count_copied = { fg = "{{colors.on_tertiary_fixed.default.hex}}", bg = "{{colors.tertiary_fixed.default.hex}}" }
+ count_cut = { fg = "{{colors.on_tertiary_fixed.default.hex}}", bg = "{{colors.tertiary_fixed.default.hex}}" }
+ count_selected = { fg = "{{colors.on_primary.default.hex}}", bg = "{{colors.tertiary.default.hex}}" }
+
+ # Border
+ border_symbol = "│"
+ border_style = { fg = "{{colors.surface_tint.default.hex}}" }
+
+ # : ]]]
+
+
+ # : Indicator [[[
+
+ [indicator]
+ padding = { open = "█", close = "█" }
+
+ # : ]]]
+
+
+ # : Tabs [[[
+
+ [tabs]
+ active = { fg = "{{colors.primary.default.hex}}", bold = true, bg = "{{colors.surface.default.hex}}" }
+ inactive = { fg = "{{colors.secondary.default.hex}}", bg = "{{colors.surface.default.hex}}" }
+ sep_inner = { open = "[", close = "]" }
+
+ # : ]]]
+
+
+ # : Mode [[[
+
+ [mode]
+ # Mode
+ normal_main = { bg = "{{colors.primary.default.hex}}", fg = "{{colors.on_primary.default.hex}}", bold = true }
+ normal_alt = { bg = "{{colors.surface_variant.default.hex}}", fg = "{{colors.on_surface_variant.default.hex}}" }
+
+ # Select mode
+ select_main = { bg = "{{colors.secondary.default.hex}}", fg = "{{colors.on_secondary.default.hex}}", bold = true }
+ select_alt = { bg = "{{colors.surface_variant.default.hex}}", fg = "{{colors.on_surface_variant.default.hex}}" }
+
+ # Unset mode
+ unset_main = { bg = "{{colors.tertiary.default.hex}}", fg = "{{colors.on_tertiary.default.hex}}", bold = true }
+ unset_alt = { bg = "{{colors.surface_variant.default.hex}}", fg = "{{colors.on_surface_variant.default.hex}}" }
+
+ # : ]]]
+
+
+ # : Status [[[
+
+ [status]
+ sep_left = { open = "🭁", close = "🭠" }
+ sep_right = { open = "🭁", close = "🭠" }
+
+ # Permissions
+ perm_type = { fg = "{{colors.secondary.default.hex | auto_lightness: 30.0}}" }
+ perm_write = { fg = "{{colors.tertiary.default.hex | auto_lightness: 30.0}}" }
+ perm_read = { fg = "{{colors.error.default.hex | auto_lightness: 30.0}}" }
+ perm_exec = { fg = "{{colors.tertiary_fixed.default.hex | auto_lightness: 30.0}}" }
+ perm_sep = { fg = "{{colors.primary_fixed.default.hex | auto_lightness: 30.0}}" }
+
+ # Progress
+ progress_label = { bold = true }
+ progress_normal = { fg = "{{colors.primary.default.hex}}", bg = "{{colors.surface_bright.default.hex}}" }
+ progress_error = { fg = "{{colors.error.default.hex}}", bg = "{{colors.surface_bright.default.hex}}" }
+
+ # : ]]]
+
+
+ # : Which [[[
+
+ [which]
+ cols = 3
+ mask = { bg = "{{colors.surface_bright.default.hex}}" }
+ cand = { fg = "{{colors.primary.default.hex}}" }
+ rest = { fg = "{{colors.on_primary.default.hex}}" }
+ desc = { fg = "{{colors.on_surface.default.hex}}" }
+ separator = " ▶ "
+ separator_style = { fg = "{{colors.on_surface.default.hex}}" }
+
+ # : ]]]
+
+
+ # : Notify [[[
+
+ [notify]
+ title_info = { fg = "{{colors.tertiary.default.hex}}" }
+ title_warn = { fg = "{{colors.primary.default.hex}}" }
+ title_error = { fg = "{{colors.error.default.hex}}" }
+
+ # : ]]]
+
+
+ # : Picker [[[
+
+ [pick]
+ border = { fg = "{{colors.primary.default.hex}}" }
+ active = { fg = "{{colors.tertiary.default.hex}}", bold = true }
+ inactive = {}
+
+ # : ]]]
+
+
+ # : Input [[[
+
+ [input]
+ border = { fg = "{{colors.primary.default.hex}}" }
+ value = { fg = "{{colors.on_surface.default.hex}}" }
+
+ # : ]]]
+
+
+ # : Completion [[[
+
+ [cmp]
+ border = { fg = "{{colors.primary.default.hex}}", bg = "{{colors.on_primary.default.hex}}" }
+
+ # : ]]]
+
+
+ # : Tasks [[[
+
+ [tasks]
+ border = { fg = "{{colors.primary.default.hex}}" }
+ title = {}
+ hovered = { fg = "{{colors.tertiary_fixed.default.hex}}", underline = true }
+
+ # : ]]]
+
+
+ # : Help [[[
+
+ [help]
+ on = { fg = "{{colors.on_surface.default.hex}}" }
+ run = { fg = "{{colors.on_surface.default.hex}}" }
+ footer = { fg = "{{colors.on_secondary.default.hex}}", bg = "{{colors.secondary.default.hex}}" }
+
+ # : ]]]
+
+
+ # : File-specific styles [[[
+
+ [filetype]
+
+ rules = [
+ # Images
+ { mime = "image/*", fg = "#94e2d5" },
+
+ # Media
+ { mime = "{audio,video}/*", fg = "#f9e2af" },
+
+ # Archives
+ { mime = "application/{zip,rar,7z*,tar,gzip,xz,zstd,bzip*,lzma,compress,archive,cpio,arj,xar,ms-cab*}", fg = "#f5c2e7" },
+
+ # Documents
+ { mime = "application/{pdf,doc,rtf}", fg = "#a6e3a1" },
+
+ # Special files
+ { name = "*", is = "orphan", bg = "{{colors.error_container.default.hex}}" },
+ { name = "*", is = "exec", fg = "{{colors.on_error_container.default.hex}}" },
+
+ # Fallback
+ { url = "*", fg = "{{colors.on_surface.default.hex}}" },
+ { url = "*/", fg = "{{colors.surface_tint.default.hex}}" },
+ ]
+
+ # : ]]]
+ '';
+ };
+ };
+ };
+}
diff --git a/common/modules/matugen/templates/matugen-zathura.nix b/common/modules/matugen/templates/matugen-zathura.nix
new file mode 100644
index 0000000..afb78ee
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-zathura.nix
@@ -0,0 +1,109 @@
+{
+ config,
+ lib,
+ ...
+}:
+{
+ config = lib.mkIf config.programs.zathura.enable {
+ xdg.configFile = {
+ "matugen/templates/zathura.toml" = {
+ text =
+ # toml
+ ''
+ " -----------------------------------------------------------------------------
+ " Zathura settings
+ " -----------------------------------------------------------------------------
+
+ " Colors
+ set default-bg "{{colors.on_primary.default.rgba | set_alpha: 1.0}}"
+ set default-fg "{{colors.primary.default.hex}}"
+
+ set statusbar-bg "{{colors.on_primary.default.hex}}"
+ set statusbar-fg "{{colors.primary.default.hex}}"
+
+ set inputbar-bg "{{colors.on_primary.default.hex}}"
+ set inputbar-fg "{{colors.primary.default.hex}}"
+
+ set notification-error-bg "{{colors.on_error.default.hex}}"
+ set notification-error-fg "{{colors.error.default.hex}}"
+
+ set notification-warning-bg "{{colors.primary_fixed.default.hex}}"
+ set notification-warning-fg "{{colors.error_container.default.hex}}"
+
+ set highlight-color "{{colors.primary_fixed.default.hex}}"
+ set highlight-active-color "{{colors.primary_fixed_dim.default.hex}}"
+
+ set completion-highlight-fg "{{colors.on_primary.default.hex}}"
+ set completion-highlight-bg {{colors.primary.default.hex}}""
+
+ set completion-bg "{{colors.on_primary.default.hex}}"
+ set completion-fg "{{colors.primary.default.hex}}"
+
+ set notification-bg "{{colors.on_primary.default.hex}}"
+ set notification-fg "{{colors.primary.default.hex}}"
+
+ set recolor "true"
+ set recolor-lightcolor "{{colors.on_primary.default.rgba | set_alpha: 1.0}}"
+ set recolor-darkcolor "{{colors.primary.default.hex}}"
+ set recolor-reverse-video "true"
+ set recolor-keephue "true"
+
+ " Clipboard
+ set selection-clipboard clipboard
+
+ " Search
+ set incremental-search true
+ set search-hadjust true
+
+ " Autoadjust
+ set adjust-open width
+
+ " Typography
+ set font "FiraCode Nerd Font 12"
+
+ " -----------------------------------------------------------------------------
+ " Zathura mappings
+ " -----------------------------------------------------------------------------
+ " remove status bar
+ set guioptions none
+ " Zoom in/out
+ map [normal] z zoom in
+ map [normal] Z zoom out
+ map [fullscreen] z zoom in
+ map [fullscreen] Z zoom out
+
+ " Toggle mode
+ map [normal] D toggle_page_mode
+ map [fullscreen] D toggle_page_mode
+
+ " Scroll
+ map [normal] u scroll half-up
+ map [normal] d scroll half-down
+ map [fullscreen] u scroll half-up
+ map [fullscreen] d scroll half-down
+
+ " Fullscreen
+ map [normal] f toggle_fullscreen
+ map [fullscreen] f toggle_fullscreen
+
+ " Reload
+ map [normal] <C-r> reload
+ map [fullscreen] <C-r> reload
+
+ " Status bar
+ map [normal] b toggle_statusbar
+ map [fullscreen] b toggle_statusbar
+
+ " Set width as in mupdf
+ map [normal] H adjust_window best-fit
+ map [normal] W adjust_window width
+ map [fullscreen] H adjust_window best-fit
+ map [fullscreen] W adjust_window width
+
+ map [normal] i set recolor
+ map [fullscreen] i set recolor
+ '';
+ };
+ };
+ };
+}
diff --git a/common/modules/matugen/templates/matugen-zed.nix b/common/modules/matugen/templates/matugen-zed.nix
new file mode 100644
index 0000000..9e603a4
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-zed.nix
@@ -0,0 +1,602 @@
+{
+ xdg.configFile = {
+ "matugen/templates/zed.json" = {
+ enable = true;
+ text =
+ # toml
+ ''
+ {
+ "$schema": "https://zed.dev/schema/themes/v0.2.0.json",
+ "name": "Matugen",
+ "author": "Matugen",
+ "themes": [
+ {
+ "name": "Matugen Dark",
+ "appearance": "dark",
+ "style": {
+ "accents": [
+ "{{colors.primary.dark.hex}}",
+ "{{colors.secondary.dark.hex}}",
+ "{{colors.tertiary.dark.hex}}"
+ ],
+ "background.appearance": "opaque",
+ "border": "{{colors.outline_variant.dark.hex}}",
+ "border.variant": "{{colors.outline.dark.hex}}",
+ "border.focused": "{{colors.primary.dark.hex}}",
+ "border.selected": "{{colors.primary.dark.hex}}",
+ "border.transparent": "{{colors.outline_variant.dark.hex}}40",
+ "border.disabled": "{{colors.outline_variant.dark.hex}}60",
+ "elevated_surface.background": "{{colors.surface_container_high.dark.hex}}",
+ "surface.background": "{{colors.surface.dark.hex}}",
+ "background": "{{colors.background.dark.hex}}",
+ "element.background": "{{colors.surface_container.dark.hex}}",
+ "element.hover": "{{colors.surface_container_high.dark.hex}}",
+ "element.active": "{{colors.surface_container_highest.dark.hex}}",
+ "element.selected": "{{colors.secondary_container.dark.hex}}",
+ "element.disabled": "{{colors.surface_variant.dark.hex}}",
+ "drop_target.background": "{{colors.primary_container.dark.hex}}80",
+ "ghost_element.background": null,
+ "ghost_element.hover": "{{colors.surface_container.dark.hex}}80",
+ "ghost_element.active": "{{colors.surface_container_high.dark.hex}}",
+ "ghost_element.selected": "{{colors.secondary_container.dark.hex}}80",
+ "ghost_element.disabled": "{{colors.surface_variant.dark.hex}}60",
+ "text": "{{colors.on_surface.dark.hex}}",
+ "text.muted": "{{colors.on_surface_variant.dark.hex}}",
+ "text.placeholder": "{{colors.on_surface_variant.dark.hex}}99",
+ "text.disabled": "{{colors.on_surface.dark.hex}}60",
+ "text.accent": "{{colors.primary.dark.hex}}",
+ "icon": "{{colors.on_surface.dark.hex}}",
+ "icon.muted": "{{colors.on_surface_variant.dark.hex}}",
+ "icon.disabled": "{{colors.on_surface.dark.hex}}60",
+ "icon.placeholder": "{{colors.on_surface_variant.dark.hex}}80",
+ "icon.accent": "{{colors.primary.dark.hex}}",
+ "status_bar.background": "{{colors.surface.dark.hex}}",
+ "title_bar.background": "{{colors.surface.dark.hex}}",
+ "title_bar.inactive_background": "{{colors.surface_dim.dark.hex}}",
+ "toolbar.background": "{{colors.surface_container_low.dark.hex}}",
+ "tab_bar.background": "{{colors.surface_container.dark.hex}}",
+ "tab.inactive_backgorround": "{{colors.surface_container_low.dark.hex}}",
+ "tab.active_background": "{{colors.surface_container_high.dark.hex}}",
+ "search.match_background": "{{colors.tertiary_container.dark.hex}}80",
+ "panel.background": "{{colors.surface_container_low.dark.hex}}",
+ "panel.focused_border": "{{colors.primary.dark.hex}}",
+ "pane.focused_border": "{{colors.primary.dark.hex}}",
+ "scrollbar.thumb.background": "{{colors.on_surface_variant.dark.hex}}80",
+ "scrollbar.thumb.hover_background": "{{colors.on_surface_variant.dark.hex}}c0",
+ "scrollbar.thumb.border": "{{colors.outline_variant.dark.hex}}40",
+ "scrollbar.track.background": "{{colors.surface_container.dark.hex}}",
+ "scrollbar.track.border": "{{colors.outline_variant.dark.hex}}20",
+ "editor.foreground": "{{colors.on_surface.dark.hex}}",
+ "editor.background": "{{colors.surface_container_low.dark.hex}}",
+ "editor.gutter.background": "{{colors.surface_container_low.dark.hex}}",
+ "editor.subheader.background": "{{colors.surface_container.dark.hex}}",
+ "editor.indent_guide": "{{colors.outline_variant.dark.hex}}60",
+ "editor.indent_guide_active": "{{colors.outline.dark.hex}}",
+ "editor.active_line.background": "{{colors.surface_container_high.dark.hex}}80",
+ "editor.highlighted_line.background": "{{colors.surface_container_high.dark.hex}}60",
+ "editor.line_number": "{{colors.on_surface_variant.dark.hex}}",
+ "editor.active_line_number": "{{colors.primary.dark.hex}}",
+ "editor.invisible": "{{colors.outline_variant.dark.hex}}80",
+ "editor.wrap_guide": "{{colors.outline_variant.dark.hex}}40",
+ "editor.active_wrap_guide": "{{colors.outline.dark.hex}}80",
+ "editor.document_highlight.read_background": "{{colors.primary_container.dark.hex}}60",
+ "editor.document_highlight.write_background": "{{colors.secondary_container.dark.hex}}80",
+ "terminal.background": "{{colors.surface_container_low.dark.hex}}",
+ "terminal.foreground": "{{colors.on_surface.dark.hex}}",
+ "terminal.bright_foreground": "{{colors.on_surface.dark.hex}}",
+ "terminal.dim_foreground": "{{colors.on_surface_variant.dark.hex}}",
+ "terminal.ansi.black": "{{colors.surface_dim.dark.hex}}",
+ "terminal.ansi.bright_black": "{{colors.surface_container_high.dark.hex}}",
+ "terminal.ansi.dim_black": "{{colors.surface.dark.hex}}",
+ "terminal.ansi.red": "{{colors.error.dark.hex}}",
+ "terminal.ansi.bright_red": "{{colors.error.dark.hex}}",
+ "terminal.ansi.dim_red": "{{colors.on_error_container.dark.hex}}",
+ "terminal.ansi.green": "{{colors.tertiary.dark.hex}}",
+ "terminal.ansi.bright_green": "{{colors.tertiary.dark.hex}}",
+ "terminal.ansi.dim_green": "{{colors.on_tertiary_container.dark.hex}}",
+ "terminal.ansi.yellow": "{{colors.tertiary_fixed_dim.dark.hex}}",
+ "terminal.ansi.bright_yellow": "{{colors.tertiary_fixed.dark.hex}}",
+ "terminal.ansi.dim_yellow": "{{colors.on_tertiary_fixed.dark.hex}}",
+ "terminal.ansi.blue": "{{colors.primary.dark.hex}}",
+ "terminal.ansi.bright_blue": "{{colors.primary.dark.hex}}",
+ "terminal.ansi.dim_blue": "{{colors.on_primary_container.dark.hex}}",
+ "terminal.ansi.magenta": "{{colors.secondary.dark.hex}}",
+ "terminal.ansi.bright_magenta": "{{colors.secondary.dark.hex}}",
+ "terminal.ansi.dim_magenta": "{{colors.on_secondary_container.dark.hex}}",
+ "terminal.ansi.cyan": "{{colors.primary_fixed_dim.dark.hex}}",
+ "terminal.ansi.bright_cyan": "{{colors.primary_fixed.dark.hex}}",
+ "terminal.ansi.dim_cyan": "{{colors.on_primary_fixed_variant.dark.hex}}",
+ "terminal.ansi.white": "{{colors.on_surface.dark.hex}}",
+ "terminal.ansi.bright_white": "{{colors.on_surface.dark.hex}}",
+ "terminal.ansi.dim_white": "{{colors.on_surface_variant.dark.hex}}",
+ "link_text.hover": "{{colors.primary.dark.hex}}",
+ "conflict": "{{colors.error.dark.hex}}",
+ "conflict.background": "{{colors.error_container.dark.hex}}80",
+ "conflict.border": "{{colors.on_error_container.dark.hex}}",
+ "created": "{{colors.tertiary.dark.hex}}",
+ "created.background": "{{colors.tertiary_container.dark.hex}}80",
+ "created.border": "{{colors.on_tertiary_container.dark.hex}}",
+ "deleted": "{{colors.error.dark.hex}}",
+ "deleted.background": "{{colors.error_container.dark.hex}}80",
+ "deleted.border": "{{colors.on_error_container.dark.hex}}",
+ "error": "{{colors.error.dark.hex}}",
+ "error.background": "{{colors.error_container.dark.hex}}",
+ "error.border": "{{colors.on_error_container.dark.hex}}",
+ "hidden": "{{colors.outline_variant.dark.hex}}",
+ "hidden.border": "{{colors.outline_variant.dark.hex}}60",
+ "hint": "{{colors.primary.dark.hex}}",
+ "hint.background": "{{colors.primary_container.dark.hex}}80",
+ "hint.border": "{{colors.on_primary_container.dark.hex}}",
+ "ignored": "{{colors.on_surface_variant.dark.hex}}60",
+ "ignored.background": "{{colors.surface_variant.dark.hex}}40",
+ "ignored.border": "{{colors.outline_variant.dark.hex}}40",
+ "info": "{{colors.primary.dark.hex}}",
+ "info.background": "{{colors.primary_container.dark.hex}}80",
+ "info.border": "{{colors.on_primary_container.dark.hex}}",
+ "modified": "{{colors.secondary.dark.hex}}",
+ "modified.background": "{{colors.secondary_container.dark.hex}}80",
+ "modified.border": "{{colors.on_secondary_container.dark.hex}}",
+ "predictive": "{{colors.on_surface_variant.dark.hex}}80",
+ "predictive.border": "{{colors.outline.dark.hex}}",
+ "predictive.background": "{{colors.surface_container_highest.dark.hex}}80",
+ "renamed": "{{colors.secondary.dark.hex}}",
+ "renamed.border": "{{colors.on_secondary_container.dark.hex}}",
+ "renamed.background": "{{colors.secondary_container.dark.hex}}80",
+ "success": "{{colors.tertiary.dark.hex}}",
+ "success.background": "{{colors.tertiary_container.dark.hex}}80",
+ "success.border": "{{colors.on_tertiary_container.dark.hex}}",
+ "unreachable": "{{colors.on_surface_variant.dark.hex}}60",
+ "unreachable.background": "{{colors.surface_variant.dark.hex}}40",
+ "unreachable.border": "{{colors.outline_variant.dark.hex}}60",
+ "warning": "{{colors.tertiary_fixed_dim.dark.hex}}",
+ "warning.background": "{{colors.tertiary_container.dark.hex}}80",
+ "warning.border": "{{colors.on_tertiary_container.dark.hex}}",
+ "players": [
+ {
+ "cursor": "{{colors.primary.dark.hex}}",
+ "background": "{{colors.primary_container.dark.hex}}80",
+ "selection": "{{colors.primary_container.dark.hex}}60"
+ },
+ {
+ "cursor": "{{colors.secondary.dark.hex}}",
+ "background": "{{colors.secondary_container.dark.hex}}80",
+ "selection": "{{colors.secondary_container.dark.hex}}60"
+ }
+ ],
+ "syntax": {
+ "boolean": {
+ "color": "{{colors.tertiary.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "comment": {
+ "color": "{{colors.on_surface_variant.dark.hex}}",
+ "font_style": "italic",
+ "font_weight": null
+ },
+ "comment.doc": {
+ "color": "{{colors.on_surface_variant.dark.hex}}",
+ "font_style": "italic",
+ "font_weight": null
+ },
+ "constant": {
+ "color": "{{colors.tertiary.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "constructor": {
+ "color": "{{colors.secondary.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "emphasis": {
+ "color": "{{colors.primary.dark.hex}}",
+ "font_style": "italic",
+ "font_weight": null
+ },
+ "emphasis.strong": {
+ "color": "{{colors.primary.dark.hex}}",
+ "font_style": null,
+ "font_weight": 700
+ },
+ "function": {
+ "color": "{{colors.primary.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "keyword": {
+ "color": "{{colors.secondary.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "number": {
+ "color": "{{colors.tertiary_fixed.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "operator": {
+ "color": "{{colors.on_surface_variant.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "property": {
+ "color": "{{colors.on_surface.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "punctuation": {
+ "color": "{{colors.on_surface_variant.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "punctuation.bracket": {
+ "color": "{{colors.secondary_fixed.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "punctuation.delimiter": {
+ "color": "{{colors.on_surface_variant.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "punctuation.list_marker": {
+ "color": "{{colors.on_surface_variant.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "punctuation.special": {
+ "color": "{{colors.secondary.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "string": {
+ "color": "{{colors.tertiary.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "string.escape": {
+ "color": "{{colors.tertiary_fixed_dim.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "string.regex": {
+ "color": "{{colors.tertiary_fixed.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "string.special": {
+ "color": "{{colors.on_tertiary_container.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "string.special.symbol": {
+ "color": "{{colors.tertiary.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "tag": {
+ "color": "{{colors.secondary.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "text.literal": {
+ "color": "{{colors.tertiary.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "type": {
+ "color": "{{colors.primary_fixed.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "variable": {
+ "color": "{{colors.on_surface.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "variable.special": {
+ "color": "{{colors.primary.dark.hex}}",
+ "font_style": null,
+ "font_weight": null
+ }
+ }
+ }
+ },
+ {
+ "name": "Matugen Light",
+ "appearance": "light",
+ "style": {
+ "accents": [
+ "{{colors.primary.light.hex}}",
+ "{{colors.secondary.light.hex}}",
+ "{{colors.tertiary.light.hex}}"
+ ],
+ "background.appearance": "opaque",
+ "border": "{{colors.outline_variant.light.hex}}",
+ "border.variant": "{{colors.outline.light.hex}}",
+ "border.focused": "{{colors.primary.light.hex}}",
+ "border.selected": "{{colors.primary.light.hex}}",
+ "border.transparent": "{{colors.outline_variant.light.hex}}40",
+ "border.disabled": "{{colors.outline_variant.light.hex}}60",
+ "elevated_surface.background": "{{colors.surface_container_high.light.hex}}",
+ "surface.background": "{{colors.surface.light.hex}}",
+ "background": "{{colors.background.light.hex}}",
+ "element.background": "{{colors.surface_container.light.hex}}",
+ "element.hover": "{{colors.surface_container_high.light.hex}}",
+ "element.active": "{{colors.surface_container_highest.light.hex}}",
+ "element.selected": "{{colors.secondary_container.light.hex}}",
+ "element.disabled": "{{colors.surface_variant.light.hex}}",
+ "drop_target.background": "{{colors.primary_container.light.hex}}80",
+ "ghost_element.background": null,
+ "ghost_element.hover": "{{colors.surface_container.light.hex}}80",
+ "ghost_element.active": "{{colors.surface_container_high.light.hex}}",
+ "ghost_element.selected": "{{colors.secondary_container.light.hex}}80",
+ "ghost_element.disabled": "{{colors.surface_variant.light.hex}}60",
+ "text": "{{colors.on_surface.light.hex}}",
+ "text.muted": "{{colors.on_surface_variant.light.hex}}",
+ "text.placeholder": "{{colors.on_surface_variant.light.hex}}99",
+ "text.disabled": "{{colors.on_surface.light.hex}}60",
+ "text.accent": "{{colors.primary.light.hex}}",
+ "icon": "{{colors.on_surface.light.hex}}",
+ "icon.muted": "{{colors.on_surface_variant.light.hex}}",
+ "icon.disabled": "{{colors.on_surface.light.hex}}60",
+ "icon.placeholder": "{{colors.on_surface_variant.light.hex}}80",
+ "icon.accent": "{{colors.primary.light.hex}}",
+ "status_bar.background": "{{colors.surface.light.hex}}",
+ "title_bar.background": "{{colors.surface.light.hex}}",
+ "title_bar.inactive_background": "{{colors.surface_dim.light.hex}}",
+ "toolbar.background": "{{colors.surface_container_low.light.hex}}",
+ "tab_bar.background": "{{colors.surface_container.light.hex}}",
+ "tab.inactive_backgorround": "{{colors.surface_container_low.light.hex}}",
+ "tab.active_background": "{{colors.surface_container_high.light.hex}}",
+ "search.match_background": "{{colors.tertiary_container.light.hex}}80",
+ "panel.background": "{{colors.surface_container_low.light.hex}}",
+ "panel.focused_border": "{{colors.primary.light.hex}}",
+ "pane.focused_border": "{{colors.primary.light.hex}}",
+ "scrollbar.thumb.background": "{{colors.on_surface_variant.light.hex}}80",
+ "scrollbar.thumb.hover_background": "{{colors.on_surface_variant.light.hex}}c0",
+ "scrollbar.thumb.border": "{{colors.outline_variant.light.hex}}40",
+ "scrollbar.track.background": "{{colors.surface_container.light.hex}}",
+ "scrollbar.track.border": "{{colors.outline_variant.light.hex}}20",
+ "editor.foreground": "{{colors.on_surface.light.hex}}",
+ "editor.background": "{{colors.surface_container_low.light.hex}}",
+ "editor.gutter.background": "{{colors.surface_container_low.light.hex}}",
+ "editor.subheader.background": "{{colors.surface_container.light.hex}}",
+ "editor.indent_guide": "{{colors.outline_variant.light.hex}}60",
+ "editor.indent_guide_active": "{{colors.outline.light.hex}}",
+ "editor.active_line.background": "{{colors.surface_container_high.light.hex}}80",
+ "editor.highlighted_line.background": "{{colors.surface_container_high.light.hex}}60",
+ "editor.line_number": "{{colors.on_surface_variant.light.hex}}",
+ "editor.active_line_number": "{{colors.primary.light.hex}}",
+ "editor.invisible": "{{colors.outline_variant.light.hex}}80",
+ "editor.wrap_guide": "{{colors.outline_variant.light.hex}}40",
+ "editor.active_wrap_guide": "{{colors.outline.light.hex}}80",
+ "editor.document_highlight.read_background": "{{colors.primary_container.light.hex}}60",
+ "editor.document_highlight.write_background": "{{colors.secondary_container.light.hex}}80",
+ "terminal.background": "{{colors.surface_container_low.light.hex}}",
+ "terminal.foreground": "{{colors.on_surface.light.hex}}",
+ "terminal.bright_foreground": "{{colors.on_surface.light.hex}}",
+ "terminal.dim_foreground": "{{colors.on_surface_variant.light.hex}}",
+ "terminal.ansi.black": "{{colors.surface_dim.light.hex}}",
+ "terminal.ansi.bright_black": "{{colors.surface_container_high.light.hex}}",
+ "terminal.ansi.dim_black": "{{colors.surface.light.hex}}",
+ "terminal.ansi.red": "{{colors.error.light.hex}}",
+ "terminal.ansi.bright_red": "{{colors.error.light.hex}}",
+ "terminal.ansi.dim_red": "{{colors.on_error_container.light.hex}}",
+ "terminal.ansi.green": "{{colors.tertiary.light.hex}}",
+ "terminal.ansi.bright_green": "{{colors.tertiary.light.hex}}",
+ "terminal.ansi.dim_green": "{{colors.on_tertiary_container.light.hex}}",
+ "terminal.ansi.yellow": "{{colors.tertiary_fixed_dim.light.hex}}",
+ "terminal.ansi.bright_yellow": "{{colors.tertiary_fixed.light.hex}}",
+ "terminal.ansi.dim_yellow": "{{colors.on_tertiary_fixed.light.hex}}",
+ "terminal.ansi.blue": "{{colors.primary.light.hex}}",
+ "terminal.ansi.bright_blue": "{{colors.primary.light.hex}}",
+ "terminal.ansi.dim_blue": "{{colors.on_primary_container.light.hex}}",
+ "terminal.ansi.magenta": "{{colors.secondary.light.hex}}",
+ "terminal.ansi.bright_magenta": "{{colors.secondary.light.hex}}",
+ "terminal.ansi.dim_magenta": "{{colors.on_secondary_container.light.hex}}",
+ "terminal.ansi.cyan": "{{colors.primary_fixed_dim.light.hex}}",
+ "terminal.ansi.bright_cyan": "{{colors.primary_fixed.light.hex}}",
+ "terminal.ansi.dim_cyan": "{{colors.on_primary_fixed_variant.light.hex}}",
+ "terminal.ansi.white": "{{colors.on_surface.light.hex}}",
+ "terminal.ansi.bright_white": "{{colors.on_surface.light.hex}}",
+ "terminal.ansi.dim_white": "{{colors.on_surface_variant.light.hex}}",
+ "link_text.hover": "{{colors.primary.light.hex}}",
+ "conflict": "{{colors.error.light.hex}}",
+ "conflict.background": "{{colors.error_container.light.hex}}80",
+ "conflict.border": "{{colors.on_error_container.light.hex}}",
+ "created": "{{colors.tertiary.light.hex}}",
+ "created.background": "{{colors.tertiary_container.light.hex}}80",
+ "created.border": "{{colors.on_tertiary_container.light.hex}}",
+ "deleted": "{{colors.error.light.hex}}",
+ "deleted.background": "{{colors.error_container.light.hex}}80",
+ "deleted.border": "{{colors.on_error_container.light.hex}}",
+ "error": "{{colors.error.light.hex}}",
+ "error.background": "{{colors.error_container.light.hex}}",
+ "error.border": "{{colors.on_error_container.light.hex}}",
+ "hidden": "{{colors.outline_variant.light.hex}}",
+ "hidden.border": "{{colors.outline_variant.light.hex}}60",
+ "hint": "{{colors.primary.light.hex}}",
+ "hint.background": "{{colors.primary_container.light.hex}}80",
+ "hint.border": "{{colors.on_primary_container.light.hex}}",
+ "ignored": "{{colors.on_surface_variant.light.hex}}60",
+ "ignored.background": "{{colors.surface_variant.light.hex}}40",
+ "ignored.border": "{{colors.outline_variant.light.hex}}40",
+ "info": "{{colors.primary.light.hex}}",
+ "info.background": "{{colors.primary_container.light.hex}}80",
+ "info.border": "{{colors.on_primary_container.light.hex}}",
+ "modified": "{{colors.secondary.light.hex}}",
+ "modified.background": "{{colors.secondary_container.light.hex}}80",
+ "modified.border": "{{colors.on_secondary_container.light.hex}}",
+ "predictive": "{{colors.on_surface_variant.light.hex}}80",
+ "predictive.border": "{{colors.outline.light.hex}}",
+ "predictive.background": "{{colors.surface_container_highest.light.hex}}80",
+ "renamed": "{{colors.secondary.light.hex}}",
+ "renamed.border": "{{colors.on_secondary_container.light.hex}}",
+ "renamed.background": "{{colors.secondary_container.light.hex}}80",
+ "success": "{{colors.tertiary.light.hex}}",
+ "success.background": "{{colors.tertiary_container.light.hex}}80",
+ "success.border": "{{colors.on_tertiary_container.light.hex}}",
+ "unreachable": "{{colors.on_surface_variant.light.hex}}60",
+ "unreachable.background": "{{colors.surface_variant.light.hex}}40",
+ "unreachable.border": "{{colors.outline_variant.light.hex}}60",
+ "warning": "{{colors.tertiary_fixed_dim.light.hex}}",
+ "warning.background": "{{colors.tertiary_container.light.hex}}80",
+ "warning.border": "{{colors.on_tertiary_container.light.hex}}",
+ "players": [
+ {
+ "cursor": "{{colors.primary.light.hex}}",
+ "background": "{{colors.primary_container.light.hex}}80",
+ "selection": "{{colors.primary_container.light.hex}}60"
+ },
+ {
+ "cursor": "{{colors.secondary.light.hex}}",
+ "background": "{{colors.secondary_container.light.hex}}80",
+ "selection": "{{colors.secondary_container.light.hex}}60"
+ }
+ ],
+ "syntax": {
+ "boolean": {
+ "color": "{{colors.tertiary.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "comment": {
+ "color": "{{colors.on_surface_variant.light.hex}}",
+ "font_style": "italic",
+ "font_weight": null
+ },
+ "comment.doc": {
+ "color": "{{colors.on_surface_variant.light.hex}}",
+ "font_style": "italic",
+ "font_weight": null
+ },
+ "constant": {
+ "color": "{{colors.tertiary.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "constructor": {
+ "color": "{{colors.secondary.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "emphasis": {
+ "color": "{{colors.primary.light.hex}}",
+ "font_style": "italic",
+ "font_weight": null
+ },
+ "emphasis.strong": {
+ "color": "{{colors.primary.light.hex}}",
+ "font_style": null,
+ "font_weight": 700
+ },
+ "function": {
+ "color": "{{colors.primary.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "keyword": {
+ "color": "{{colors.secondary.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "number": {
+ "color": "{{colors.tertiary_fixed.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "operator": {
+ "color": "{{colors.on_surface_variant.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "property": {
+ "color": "{{colors.on_surface.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "punctuation": {
+ "color": "{{colors.on_surface_variant.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "punctuation.bracket": {
+ "color": "{{colors.secondary_fixed.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "punctuation.delimiter": {
+ "color": "{{colors.on_surface_variant.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "punctuation.list_marker": {
+ "color": "{{colors.on_surface_variant.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "punctuation.special": {
+ "color": "{{colors.secondary.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "string": {
+ "color": "{{colors.tertiary.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "string.escape": {
+ "color": "{{colors.tertiary_fixed_dim.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "string.regex": {
+ "color": "{{colors.tertiary_fixed.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "string.special": {
+ "color": "{{colors.on_tertiary_container.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "string.special.symbol": {
+ "color": "{{colors.tertiary.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "tag": {
+ "color": "{{colors.secondary.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "text.literal": {
+ "color": "{{colors.tertiary.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "type": {
+ "color": "{{colors.primary_fixed.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "variable": {
+ "color": "{{colors.on_surface.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ },
+ "variable.special": {
+ "color": "{{colors.primary.light.hex}}",
+ "font_style": null,
+ "font_weight": null
+ }
+ }
+ }
+ }
+ ]
+ }
+ '';
+ };
+ };
+}
diff --git a/common/modules/matugen/templates/matugen-zen.nix b/common/modules/matugen/templates/matugen-zen.nix
new file mode 100644
index 0000000..142e5ff
--- /dev/null
+++ b/common/modules/matugen/templates/matugen-zen.nix
@@ -0,0 +1,105 @@
+{
+ xdg.configFile = {
+ "matugen/templates/zen.css" = {
+ enable = true;
+ text =
+ # css
+ ''
+ :root {
+ /* --- Matugen Colors (UI) --- */
+ --zen-primary-color: {{colors.primary_container.default.hex}} !important;
+ --toolbarbutton-icon-fill: {{colors.primary.default.hex}} !important;
+ --toolbar-field-color: {{colors.on_background.default.hex}} !important;
+ --tab-selected-textcolor: {{colors.primary.default.hex}} !important;
+ --toolbar-color: {{colors.on_background.default.hex}} !important;
+ --arrowpanel-color: {{colors.on_surface.default.hex}} !important;
+ --arrowpanel-background: {{colors.surface_container.default.hex}} !important;
+ --sidebar-text-color: {{colors.on_background.default.hex}} !important;
+ /* --zen-main-browser-background: {{colors.background.default.hex}} !important; */
+ }
+
+ .sidebar-placesTree {
+ background-color: {{colors.surface_container.default.hex}} !important;
+ }
+
+ #zen-workspaces-button {
+ background-color: {{colors.surface_container.default.hex}} !important;
+ }
+
+ #TabsToolbar {
+ background-color: {{colors.background.default.hex}} !important;
+ }
+
+ .urlbar-background {
+ background-color: {{colors.surface_container.default.hex}} !important;
+ }
+
+ .urlbar-input::selection {
+ color: {{colors.on_primary.default.hex}} !important;
+ background-color: {{colors.primary.default.hex}} !important;
+ }
+
+ .urlbarView-url {
+ color: {{colors.on_surface_variant.default.hex}} !important;
+ }
+
+ toolbar .toolbarbutton-1 {
+ &:not([disabled]) {
+ &:is([open], [checked])
+ > :is(
+ .toolbarbutton-icon,
+ .toolbarbutton-text,
+ .toolbarbutton-badge-stack
+ ) {
+ fill: {{colors.primary.default.hex}}
+ }
+ }
+ }
+
+ .identity-color-blue {
+ --identity-tab-color: \{{color12}} !important;
+ --identity-icon-color: \{{color12}} !important;
+ }
+
+ .identity-color-turquoise {
+ --identity-tab-color: \{{color6}} !important;
+ --identity-icon-color: \{{color6}} !important;
+ }
+
+ .identity-color-green {
+ --identity-tab-color: \{{color10}} !important;
+ --identity-icon-color: \{{color10}} !important;
+ }
+
+ .identity-color-yellow {
+ --identity-tab-color: \{{color11}} !important;
+ --identity-icon-color: \{{color11}} !important;
+ }
+
+ .identity-color-orange {
+ --identity-tab-color: \{{color3}} !important;
+ --identity-icon-color: \{{color3}} !important;
+ }
+
+ .identity-color-red {
+ --identity-tab-color: \{{color9}} !important;
+ --identity-icon-color: \{{color9}} !important;
+ }
+
+ .identity-color-pink {
+ --identity-tab-color: \{{color13}} !important;
+ --identity-icon-color: \{{color13}} !important;
+ }
+
+ .identity-color-purple {
+ --identity-tab-color: \{{color5}} !important;
+ --identity-icon-color: \{{color5}} !important;
+ }
+
+ #zen-appcontent-navbar-container {
+ background-color: {{colors.background.default.hex}} !important;
+ }
+ '';
+ };
+ };
+}
diff --git a/common/modules/terminal/alacritty.nix b/common/modules/terminal/alacritty.nix
new file mode 100644
index 0000000..09cb54f
--- /dev/null
+++ b/common/modules/terminal/alacritty.nix
@@ -0,0 +1,46 @@
+{
+ lib,
+ config,
+}:
+let
+ cfg = config.beeMods.terminal;
+in
+{
+ config = lib.mkIf cfg.alacritty {
+ programs.alacritty = {
+ enable = true;
+ settings = {
+ cursor = {
+ thickness = 0.0;
+ };
+ debug = {
+ prefer_egl = true;
+ };
+ colors = {
+ draw_bold_text_with_bright_colors = cfg.font.bright_color_is_bold;
+ };
+ mouse = {
+ hide_when_typing = true;
+ };
+ general = {
+ import = lib.optionals config.beeMods.matugen.enable [ "~/.config/alacritty/colors.toml" ];
+ };
+ window = {
+ dynamic_padding = true;
+ padding = {
+ y = cfg.window.padding-y;
+ x = cfg.window.padding-x;
+ };
+ dimensions = {
+ lines = 75;
+ columns = 100;
+ };
+ };
+ font = {
+ normal.family = cfg.font.family;
+ size = cfg.font.size;
+ };
+ };
+ };
+ };
+}
diff --git a/common/modules/terminal/default.nix b/common/modules/terminal/default.nix
new file mode 100644
index 0000000..b8f97c2
--- /dev/null
+++ b/common/modules/terminal/default.nix
@@ -0,0 +1,72 @@
+{
+ homeManager,
+ inputs,
+ moduleNameSpace,
+ ...
+}:
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+with lib;
+let
+ cfg = config.${moduleNameSpace}.terminal;
+in
+{
+ imports = [
+ (import ./foot.nix { inherit lib config; })
+ (import ./ghostty.nix { inherit lib config; })
+ (import ./alacritty.nix { inherit lib config; })
+ ];
+
+ options.${moduleNameSpace}.terminal = {
+ default = mkOption {
+ type = types.enum [
+ "foot"
+ "ghostty"
+ "alacritty"
+ ];
+ default = "foot";
+ description = "The terminal emulator to enable.";
+ };
+ foot = mkEnableOption "enable foot";
+ alacritty = mkEnableOption "enable alacritty";
+ ghostty = mkEnableOption "enable ghostty";
+
+ font = {
+ family = mkOption {
+ type = types.str;
+ default = "monospace";
+ };
+
+ size = mkOption {
+ type = types.float;
+ default = 13.0;
+ };
+
+ bright_color_is_bold = mkOption {
+ type = types.bool;
+ default = false;
+ description = "Force bold text";
+ };
+
+ ligatures = mkEnableOption "Only supported by ghostty";
+ };
+
+ window = {
+ padding-x = mkOption {
+ type = types.int;
+ default = 10;
+ description = "Window padding x axis (pixels).";
+ };
+
+ padding-y = mkOption {
+ type = types.int;
+ default = 10;
+ description = "Window padding y axis (pixels).";
+ };
+ };
+ };
+}
diff --git a/common/modules/terminal/foot.nix b/common/modules/terminal/foot.nix
new file mode 100644
index 0000000..a804815
--- /dev/null
+++ b/common/modules/terminal/foot.nix
@@ -0,0 +1,33 @@
+{
+ lib,
+ config,
+}:
+let
+ cfg = config.beeMods.terminal;
+in
+{
+ config = lib.mkIf cfg.foot {
+ programs.foot = {
+ enable = true;
+ settings = {
+ main = {
+ include = lib.optionals config.beeMods.matugen.enable [ "~/.config/foot/colors.ini" ];
+
+ pad = "${toString cfg.window.padding-x}x${toString cfg.window.padding-y} center";
+ font = "${cfg.font.family}:size=${toString cfg.font.size}";
+
+ dpi-aware = "no";
+ gamma-correct-blending = "yes";
+ bold-text-in-bright = if cfg.font.bright_color_is_bold then "yes" else "no";
+ };
+ cursor = {
+ beam-thickness = 1;
+ };
+ mouse = {
+ hide-when-typing = "yes";
+ };
+ key-bindings = { };
+ };
+ };
+ };
+}
diff --git a/common/modules/terminal/ghostty.nix b/common/modules/terminal/ghostty.nix
new file mode 100644
index 0000000..4a6277e
--- /dev/null
+++ b/common/modules/terminal/ghostty.nix
@@ -0,0 +1,54 @@
+{
+ lib,
+ config,
+}:
+let
+ cfg = config.beeMods.terminal;
+in
+{
+ config = lib.mkIf cfg.ghostty {
+ programs.ghostty = {
+ enable = true;
+ enableFishIntegration = true;
+ settings = {
+ config-file = lib.optionals config.beeMods.matugen.enable [ "~/.config/ghostty/colors.conf" ];
+
+ font-family = cfg.font.family;
+ font-size = cfg.font.size;
+ alpha-blending = "liner";
+ window-padding-x = cfg.window.padding-x;
+ window-padding-y = cfg.window.padding-y;
+ font-feature = [
+ "cv10"
+ "cv06"
+ "ss02"
+ "ss03"
+ ]
+ ++ (
+ if cfg.font.ligatures then
+ [
+ "calt"
+ "liga"
+ "dlig"
+ ]
+ else
+ [
+ "-calt"
+ "-liga"
+ "-dlig"
+ ]
+ );
+ bold-is-bright = cfg.font.bright_color_is_bold;
+ gtk-titlebar = false;
+ gtk-single-instance = true;
+ gtk-tabs-location = "bottom";
+ gtk-wide-tabs = false;
+ resize-overlay = "never";
+ copy-on-select = false;
+ confirm-close-surface = false;
+ mouse-hide-while-typing = true;
+ window-inherit-working-directory = false;
+ };
+ };
+ };
+}