diff options
Diffstat (limited to 'common/modules')
24 files changed, 2501 insertions, 0 deletions
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; + }; + }; + }; +} |
