From f509e8abbc4b2894f9641d026aa66e09e8f43d6d Mon Sep 17 00:00:00 2001 From: reidlab Date: Fri, 13 Dec 2024 19:36:41 -0800 Subject: [PATCH 1/3] apps and waybar --- hosts/goopnet-interface/default.nix | 4 +- modules/desktop/themes/catppuccin/waybar.css | 100 ++++++++++++++++--- modules/desktop/waybar.nix | 19 ++-- 3 files changed, 100 insertions(+), 23 deletions(-) diff --git a/hosts/goopnet-interface/default.nix b/hosts/goopnet-interface/default.nix index 78c1cf9..027737a 100755 --- a/hosts/goopnet-interface/default.nix +++ b/hosts/goopnet-interface/default.nix @@ -17,11 +17,11 @@ # debug strace ltrace lsof # apps - firefox qalculate-gtk krita inkscape onlyoffice-desktopeditors vlc nicotine-plus transmission_4-gtk font-manager + firefox qalculate-gtk krita inkscape onlyoffice-desktopeditors vlc nicotine-plus transmission_4-gtk font-manager obs-studio kdePackages.kdenlive # compatibility wineWowPackages.waylandFull winetricks # misc - bat file which packwiz yt-dlp wl-screenrec wl-clipboard grim hyfetch + bat file which packwiz yt-dlp hyfetch # games prismlauncher ] ++ (with pkgs.my; [ diff --git a/modules/desktop/themes/catppuccin/waybar.css b/modules/desktop/themes/catppuccin/waybar.css index 47888ec..b45b69d 100644 --- a/modules/desktop/themes/catppuccin/waybar.css +++ b/modules/desktop/themes/catppuccin/waybar.css @@ -104,24 +104,52 @@ window#waybar.floating #window { color: @teal; } -#battery { - color: @green; +#cpu { + color: @sapphire; } +@keyframes blink { + to { + color: @text; + } +} + +#memory { + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; + color: @lavender; +} +#memory.warning { + color: @peach; + animation-name: blink; + animation-duration: 3s; +} +#memory.critical { + color: @maroon; + animation-name: blink; + animation-duration: 2s; +} + +#battery { + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; + color: @green; +} +/* this here is ditto */ #battery.charging { color: @green; } - -#battery.warning:not(.charging) { +#battery.warning.discharging { color: @peach; + animation-name: blink; + animation-duration: 3s; } - -#battery.critical:not(.charging) { +#battery.critical.discharging { color: @maroon; -} - -#network { - color: @sapphire; + animation-name: blink; + animation-duration: 2s; } #backlight { @@ -131,6 +159,9 @@ window#waybar.floating #window { #pulseaudio { color: @pink; } +#pulseaudio.muted { + color: @overlay1; +} #custom-power { color: @red; @@ -149,13 +180,58 @@ window#waybar.floating #window { color: @text; } -tooltip { +box#playback { + background-color: transparent; + margin: 0 0; + padding: 0 0; +} + +#mpris { + background-color: @surface0; + margin: 0 0.25em; + padding: 0.15em 0.5em; + border-radius: 1em; +} +#mpris.playing { + color: @accent; + background: @surface0; +} +#mpris.paused, #mpris.stopped { + color: @overlay1; +} + +window decoration { + box-shadow: none; +} + +tooltip, window.popup menu { background: @base; border: 1px solid @surface2; + font-size: 12px; + color: @text; +} +tooltip *, window.popup { + font-family: CozetteVector, monospace; } tooltip * { padding: 0px; margin: 0px; color: @text; - font-family: CozetteVector, monospace; +} + +window.popup separator { + background-color: @surface0; +} + +window.popup menuitem:disabled { + color: @overlay1; +} + +window.popup menuitem:hover { + background-color: @accent; + color: @surface0; +} + +window.popup menuitem:hover > box { + background-color: transparent; } diff --git a/modules/desktop/waybar.nix b/modules/desktop/waybar.nix index 254bb00..b540157 100644 --- a/modules/desktop/waybar.nix +++ b/modules/desktop/waybar.nix @@ -14,12 +14,6 @@ in { }; config = mkIf cfg.enable { - # runtime requirements for modules - user.packages = with pkgs; [ - # mpris - playerctl - ]; - modules.desktop.execOnStart = [ "${lib.getExe cfg.package}" ]; hm.programs.waybar = { enable = true; @@ -172,11 +166,17 @@ in { cpu = { interval = 4; format = " {usage}% {avg_frequency}GHz"; + on-click = "${lib.getExe pkgs.gnome-system-monitor}"; }; memory = { interval = 4; format = " {percentage}%"; tooltip-format = "{used:0.1f}GiB/{avail:0.1f}GiB used\n{swapUsed:0.1f}GiB/{swapAvail:0.1f}GiB swap"; + on-click = "${lib.getExe pkgs.gnome-system-monitor}"; + states = { + warning = 80; + critical = 90; + }; }; power-profiles-daemon = { format = "{icon}"; @@ -212,10 +212,11 @@ in { ]; }; mpris = { - format = "{status_icon} {dynamic}"; + format = "♫ {dynamic}"; format-paused = "{status_icon} {dynamic}"; - dynamic-order = [ "title" ]; - tooltip-format = "{player}: {dynamic}"; + dynamic-order = [ "artist" "title" ]; + tooltip-format = "{player} | {status_icon} {artist} - {title} from {album} ({position}/{length})"; + title-length = 48; interval = 1; status-icons = { playing = "⏸"; From 6d61976106b9ffc1e202c63dc7c346891716477f Mon Sep 17 00:00:00 2001 From: reidlab Date: Fri, 13 Dec 2024 22:07:02 -0800 Subject: [PATCH 2/3] window rules --- modules/desktop/hyprland.nix | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/modules/desktop/hyprland.nix b/modules/desktop/hyprland.nix index a6d202c..76243e5 100644 --- a/modules/desktop/hyprland.nix +++ b/modules/desktop/hyprland.nix @@ -224,8 +224,8 @@ in { }; windowrulev2 = [ - # common popups - # we should totally dedupe these + # TODO: dedupe + # commons "float, class:org.gnome.FileRoller" "size 1100 650, class:org.gnome.FileRoller" "center, class:org.gnome.FileRoller" @@ -253,10 +253,7 @@ in { "float, initialTitle:^File Upload$" "size 1100 650, initialTitle:^File Upload$" "center, initialTitle:^File Upload$" - - "float, class:\.exe$" - - # fix focus + # privacy popups "stayfocused, class:^gcr-prompter" "dimaround, class:^gcr-prompter" "stayfocused, class:^pinentry-" @@ -264,6 +261,16 @@ in { "stayfocused, class:^polkit-" "dimaround, class:^polkit-" + "float, class:\.exe$" + "rounding 0, class:\.exe$" + + # steam notifs + "rounding 0, title:^notificationtoasts_" + "pin, title:^notificationtoasts_" + "noborder, title:^notificationtoasts_" + "nofocus, title:^notificationtoasts_" + "noshadow, title:^notificationtoasts_" + # firefox pip "float, title:^Picture-in-Picture$" "pin, title:^Picture-in-Picture$" @@ -272,6 +279,7 @@ in { # discord pip "pin, initialTitle:^Discord Popout$" "float, initialTitle:^Discord Popout$" + "noborder, initialTitle:^Discord Popout$" # workspace moving "workspace 1 silent, class:^firefox" From ff647de9ce8154ff8217043cd024db5675ac1e8c Mon Sep 17 00:00:00 2001 From: reidlab Date: Sat, 14 Dec 2024 16:40:14 -0800 Subject: [PATCH 3/3] update cross-module package references, nuke execOnStart --- README.md | 3 +- modules/desktop/batsignal.nix | 20 ++++++------ modules/desktop/clipse.nix | 32 +++++++++---------- modules/desktop/default.nix | 14 ++++++--- modules/desktop/dunst.nix | 1 + modules/desktop/gammastep.nix | 3 +- modules/desktop/hyprland.nix | 48 +++++++++++++++-------------- modules/desktop/nwg-drawer.nix | 24 ++++++++++++++- modules/desktop/rofi.nix | 8 ++++- modules/desktop/swww.nix | 29 +++++++++++++---- modules/desktop/waybar.nix | 9 ++++-- modules/desktop/wob.nix | 9 ++---- modules/software/system/wezterm.nix | 8 ++++- 13 files changed, 135 insertions(+), 73 deletions(-) diff --git a/README.md b/README.md index d6d907c..046cc30 100755 --- a/README.md +++ b/README.md @@ -23,5 +23,6 @@ each host should have these files: - better theming for hyprlock, rofi, dunst (accent for hyprlock & dunst, variants for rofi) - some way for border radius, border, tranparency theme options - tags for pip and popups in hyprland config - - remove exec-once stuff and use systemd services instead + - make wl-clip-persist, polkit agent, and networkmanager applet systemd services? + - uh oh! it seems clipse is broken. the listen-shell service stops after you open the gui - gtk cursors are MESSED UP. top priority rn diff --git a/modules/desktop/batsignal.nix b/modules/desktop/batsignal.nix index 9b2c3c1..2ed6d78 100644 --- a/modules/desktop/batsignal.nix +++ b/modules/desktop/batsignal.nix @@ -6,18 +6,18 @@ let in { options.modules.desktop.batsignal = { enable = mkEnableOption "Enable batsignal, a battery notification service"; - package = mkOption { - type = types.package; - default = pkgs.batsignal; - }; }; config = mkIf cfg.enable { - modules.desktop.execOnStart = [ - # -w 20 -c 10 -d 5 -- set battery levels - # -p -- notify on plug/unplug - # -m 2 -- set interval to 2 seconds - "${lib.getExe cfg.package} -w 20 -c 10 -d 5 -p -m 2" - ]; + hm.services.batsignal = { + enable = true; + + extraArgs = [ + # -w 20 -c 10 -d 5 -- set battery levels + # -p -- notify on plug/unplug + # -m 2 -- set interval to 2 seconds + "-w 20" "-c 10" "-d 5" "-p" "-m 2" + ]; + }; }; } diff --git a/modules/desktop/clipse.nix b/modules/desktop/clipse.nix index f512a53..e29b7b2 100644 --- a/modules/desktop/clipse.nix +++ b/modules/desktop/clipse.nix @@ -9,28 +9,28 @@ in { package = mkOption { type = types.package; default = pkgs.clipse; + example = "pkgs.clipse"; }; }; config = mkIf cfg.enable { - # runtime dependencies - user.packages = with pkgs; [ wl-clipboard ]; + hm.systemd.user.services.clipse = { + Unit = { + Description = "clipse, a generic clipboard manager"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; - modules.desktop.execOnStart = [ "${lib.getExe cfg.package} -listen-shell" ]; - hm.wayland.windowManager.hyprland.settings = let - class = "clipse"; - in { - windowrulev2 = [ - "float, class:^${class}$" - "size 622 652, class:^${class}$" - "center, class:^${class}$" - "stayfocused, class:^${class}$" - "dimaround, class:^${class}$" - ]; + Install = { + WantedBy = [ "graphical-session.target" ]; + }; - bind = [ - "$mod, V, exec, ${lib.getExe pkgs.wezterm} start --class ${class} -e '${lib.getExe cfg.package}'" - ]; + Service = { + Type = "simple"; + ExecStart = "${lib.getExe cfg.package} -listen-shell"; + Restart = "on-failure"; + RestartSec = 5; + }; }; }; } diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix index a2e4d0b..420d503 100644 --- a/modules/desktop/default.nix +++ b/modules/desktop/default.nix @@ -9,11 +9,6 @@ in { type = types.nullOr (types.enum ["x11" "wayland"]); description = "What display protocol to use"; }; - execOnStart = mkOption { - type = types.listOf types.str; - description = "List of commands to run on startup"; - default = null; - }; }; config = mkMerge [ @@ -57,9 +52,18 @@ in { SDL_VIDEODRIVER = "wayland"; CLUTTER_BACKEND = "wayland"; }; + + hm.home.packages = with pkgs; [ + wl-clipboard + wl-clipboard-x11 # compat with xclip + ]; }) (mkIf (cfg.envProto == "x11") { services.xserver.excludePackages = [ pkgs.xterm ]; + + hm.home.packages = with pkgs; [ + xclip + ]; }) ]; } diff --git a/modules/desktop/dunst.nix b/modules/desktop/dunst.nix index e5c70e0..1bef859 100644 --- a/modules/desktop/dunst.nix +++ b/modules/desktop/dunst.nix @@ -11,6 +11,7 @@ in { config = mkIf cfg.enable { hm.services.dunst = { enable = true; + settings = with config.colorScheme.palette; { global = { follow = "mouse"; diff --git a/modules/desktop/gammastep.nix b/modules/desktop/gammastep.nix index ee78e84..01b800e 100644 --- a/modules/desktop/gammastep.nix +++ b/modules/desktop/gammastep.nix @@ -9,9 +9,10 @@ in { }; config = mkIf cfg.enable { - modules.desktop.execOnStart = [ "${pkgs.gammastep}/bin/gammastep-indicator" ]; hm.services.gammastep = { enable = true; + tray = true; + # portland, oregon latitude = 45.3112; longitude = -122.4055; diff --git a/modules/desktop/hyprland.nix b/modules/desktop/hyprland.nix index 76243e5..0ae38ad 100644 --- a/modules/desktop/hyprland.nix +++ b/modules/desktop/hyprland.nix @@ -88,10 +88,10 @@ in { ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ])); bindr = [ # "bind released" - "SUPER, Super_L, exec, ${lib.getExe pkgs.nwg-drawer}" + "SUPER, Super_L, exec, ${lib.getExe config.modules.desktop.nwg-drawer.package}" ]; bind = let - screenshotScript = pkgs.writeScript "screenshot" '' + screenshotScript = pkgs.writeShellScript "screenshot" '' temp_file=$(mktemp) trap 'rm -f "$temp_file"' EXIT @@ -149,9 +149,10 @@ in { "$mod, bracketleft, workspace, e-1" "$mod, bracketright, workspace, e+1" - "$mod, R, exec, ${lib.getExe pkgs.rofi-wayland} -show run" - "$mod, T, exec, ${lib.getExe pkgs.wezterm}" + "$mod, R, exec, ${lib.getExe config.modules.desktop.rofi.package} -show run" + "$mod, T, exec, ${lib.getExe config.modules.software.system.wezterm.package}" "$mod, L, exec, ${lib.getExe config.modules.desktop.hyprlock.package}" + "$mod, V, exec, ${lib.getExe config.modules.software.system.wezterm.package} start --class 'clipse' -e '${lib.getExe config.modules.desktop.clipse.package}'" # screenshot # area @@ -164,10 +165,6 @@ in { ", XF86LaunchA, exec, ${screenshotScript} area" ", XF86LaunchB, exec, ${lib.getExe pkgs.rofi-rbw-wayland} -a copy -t password --clear-after 20" ", XF86ScreenSaver, exec, ${lib.getExe config.modules.desktop.hyprlock.package}" - - # alt-tab emulation - # doesnt activate when we let go of alt sadly - "ALT, Tab, exec, ${lib.getExe pkgs.rofi-wayland} -show window" ] ++ ( # workspaces # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} @@ -205,7 +202,7 @@ in { "${lib.getExe pkgs.networkmanagerapplet}" # network applet "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" # polkit agent "${lib.getExe pkgs.wl-clip-persist} --clipboard regular" # to fix wl clipboards disappearing - ] ++ config.modules.desktop.execOnStart; + ]; env = [ "XCURSOR_THEME,${config.modules.desktop.themes.cursorTheme.name}" @@ -226,15 +223,15 @@ in { windowrulev2 = [ # TODO: dedupe # commons - "float, class:org.gnome.FileRoller" - "size 1100 650, class:org.gnome.FileRoller" - "center, class:org.gnome.FileRoller" - "float, class:org.gnome.Loupe" - "size 1100 650, class:org.gnome.Loupe" - "center class:org.gnome.Loupe" - "float, class:com.gabm.satty" - "size 1100 650, class:com.gabm.satty" - "center 1100 650, class:com.gabm.satty" + "float, class:^org.gnome.FileRoller$" + "size 1100 650, class:^org.gnome.FileRoller$" + "center, class:^org.gnome.FileRoller$" + "float, class:^org.gnome.Loupe$" + "size 1100 650, class:^org.gnome.Loupe$" + "center class:^org.gnome.Loupe$" + "float, class:^com.gabm.satty$" + "size 1100 650, class:^com.gabm.satty$" + "center 1100 650, class:^com.gabm.satty$" "float, initialTitle:^Open Folder$" "size 1100 650, initialTitle:^Open Folder$" "center, initialTitle:^Open Folder$" @@ -253,9 +250,14 @@ in { "float, initialTitle:^File Upload$" "size 1100 650, initialTitle:^File Upload$" "center, initialTitle:^File Upload$" + "float, class:^clipse$" + "size 1100 650, class:^clipse$" + "center, class:^clipse$" # privacy popups - "stayfocused, class:^gcr-prompter" - "dimaround, class:^gcr-prompter" + "stayfocused, class:^clipse$" + "dimaround, class:^clipse$" + "stayfocused, class:^gcr-prompter$" + "dimaround, class:^gcr-prompter$" "stayfocused, class:^pinentry-" "dimaround, class:^pinentry-" "stayfocused, class:^polkit-" @@ -282,9 +284,9 @@ in { "noborder, initialTitle:^Discord Popout$" # workspace moving - "workspace 1 silent, class:^firefox" - "workspace 2 silent, class:code" - "workspace 4 silent, class:vesktop" + "workspace 1 silent, class:^firefox$" + "workspace 2 silent, class:^code$" + "workspace 4 silent, class:^vesktop$" ]; layerrule = [ diff --git a/modules/desktop/nwg-drawer.nix b/modules/desktop/nwg-drawer.nix index e159d6a..6f6564f 100644 --- a/modules/desktop/nwg-drawer.nix +++ b/modules/desktop/nwg-drawer.nix @@ -6,9 +6,31 @@ let in { options.modules.desktop.nwg-drawer = { enable = mkEnableOption "Enable nwg-drawer, a GTK based application launcher for wayland"; + package = mkOption { + type = types.package; + default = pkgs.nwg-drawer; + example = "pkgs.nwg-drawer"; + }; }; config = mkIf cfg.enable { - modules.desktop.execOnStart = [ "${lib.getExe pkgs.nwg-drawer} -r -nofs -nocats -ovl -term wezterm -spacing 15 -fm nautilus" ]; + hm.systemd.user.services.nwg-drawer = { + Unit = { + Description = "nwg-drawer, a GTK based application launcher for wayland"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; + + Install = { + WantedBy = [ "graphical-session.target" ]; + }; + + Service = { + Type = "simple"; + ExecStart = "${lib.getExe cfg.package} -r -nofs -nocats -ovl -term wezterm -spacing 15 -fm nautilus"; + Restart = "on-failure"; + RestartSec = 5; + }; + }; }; } diff --git a/modules/desktop/rofi.nix b/modules/desktop/rofi.nix index d27c114..5d4a5eb 100644 --- a/modules/desktop/rofi.nix +++ b/modules/desktop/rofi.nix @@ -6,12 +6,18 @@ let in { options.modules.desktop.rofi = { enable = mkEnableOption "Enable rofi, a window switcher, run dialog and dmenu replacement"; + package = mkOption { + type = types.package; + default = pkgs.rofi-wayland-unwrapped; + example = "pkgs.rofi"; + }; }; config = mkIf cfg.enable { hm.programs.rofi = { enable = true; - package = pkgs.rofi-wayland; + package = cfg.package; + font = with config.modules.desktop.fonts.fonts.monospace; "${family} ${toString size}px"; extraConfig = { show-icons = true; diff --git a/modules/desktop/swww.nix b/modules/desktop/swww.nix index 3c4fdb9..b2426ba 100644 --- a/modules/desktop/swww.nix +++ b/modules/desktop/swww.nix @@ -14,21 +14,20 @@ in { default = pkgs.swww; example = "pkgs.swww"; }; - startScript = mkOption { + setScript = mkOption { type = types.package; - default = pkgs.writeScript "swww-start" '' + default = pkgs.writeShellScript "swww-set" '' if [ ! -f "${lastWallpaper}" ]; then echo "$(ls ${wallpapersFolder} | shuf -n 1)" > "${lastWallpaper}" fi - ${cfg.package}/bin/swww-daemon & ${lib.getExe cfg.package} img "${wallpapersFolder}/$(cat ${lastWallpaper})" --transition-type none ''; }; swapScript = mkOption { type = types.package; - default = pkgs.writeScript "swww-swap" '' - file=$(ls ${wallpapersFolder} | ${lib.getExe pkgs.rofi-wayland} -dmenu -sep '\n' -i -p "select a wallpaper") + default = pkgs.writeShellScript "swww-swap" '' + file=$(ls ${wallpapersFolder} | ${lib.getExe config.modules.desktop.rofi.package} -dmenu -sep '\n' -i -p "select a wallpaper") wallpaper="${wallpapersFolder}/$file" [ ! -f "$wallpaper" ] && exit 1 @@ -42,6 +41,24 @@ in { config = mkIf cfg.enable { hm.home.packages = [ cfg.package ]; - modules.desktop.execOnStart = [ "${cfg.startScript}" ]; + hm.systemd.user.services.swww = { + Unit = { + Description = "swww, a Solution to your Wayland Wallpaper Woes"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; + + Install = { + WantedBy = [ "graphical-session.target" ]; + }; + + Service = { + Type = "simple"; + ExecStart = "${cfg.package}/bin/swww-daemon"; + ExecStartPost = "${cfg.setScript}"; + Restart = "on-failure"; + RestartSec = 5; + }; + }; }; } diff --git a/modules/desktop/waybar.nix b/modules/desktop/waybar.nix index b540157..78f29eb 100644 --- a/modules/desktop/waybar.nix +++ b/modules/desktop/waybar.nix @@ -14,10 +14,15 @@ in { }; config = mkIf cfg.enable { - modules.desktop.execOnStart = [ "${lib.getExe cfg.package}" ]; + # enables playerctld bus, required for waybar to read mpris + hm.services.playerctld.enable = true; hm.programs.waybar = { enable = true; + # essentially just the service + # peculiar how this is a program + systemd.enable = true; package = cfg.package; + settings = { mainBar = { layer = "top"; @@ -70,7 +75,7 @@ in { ]; }; "custom/power" = let - powerSelect = pkgs.writeScript "power-menu" '' + powerSelect = pkgs.writeShellScript "power-menu" '' cmd=$(echo '⏻ shutdown|↻ reboot| lock|⎋ exit desktop environment' | ${lib.getExe pkgs.rofi-wayland} -dmenu -sep '|' -i -p 'what to do ?' -theme-str 'window { height: 132px; }') case "$cmd" in "⏻ shutdown") diff --git a/modules/desktop/wob.nix b/modules/desktop/wob.nix index 30247f9..e8ee49d 100644 --- a/modules/desktop/wob.nix +++ b/modules/desktop/wob.nix @@ -14,14 +14,11 @@ in { }; config = mkIf cfg.enable { - modules.desktop.execOnStart = let - path = cfg.sockPath; - script = pkgs.writeScript "launch-wob" '' - rm -f ${path} && mkfifo ${path} && tail -f ${path} | ${lib.getExe pkgs.wob} - ''; - in [ (toString script) ]; + # uhm uh um + # i don't know how the code in home-manager is making the wob socket, but it is hm.services.wob = { enable = true; + settings = { "" = { timeout = 1000; diff --git a/modules/software/system/wezterm.nix b/modules/software/system/wezterm.nix index ba094b6..6242f3f 100644 --- a/modules/software/system/wezterm.nix +++ b/modules/software/system/wezterm.nix @@ -1,4 +1,4 @@ -{ lib, config, ... }: +{ lib, config, pkgs, ... }: with lib; let @@ -6,6 +6,10 @@ let in { options.modules.software.system.wezterm = { enable = mkEnableOption "Enable wezterm, a blazingly fast terminal emulator"; + package = mkOption { + type = types.package; + default = pkgs.wezterm; + }; }; config = mkIf cfg.enable { @@ -13,6 +17,8 @@ in { hm.programs.wezterm = { enable = true; + package = cfg.package; + extraConfig = let fonts = config.modules.desktop.fonts.fonts; in ''