{ lib, config, pkgs, system, inputs, ... }: with lib; with lib.custom; let cfg = config.services.quickshell; mkService = recursiveUpdate { Unit.PartOf = ["graphical-session.target"]; Unit.After = ["graphical-session.target"]; Install.WantedBy = ["graphical-session.target"]; }; in { options.services.quickshell = with types; { enable = mkBoolOpt false "Enable or Disable QuickShell"; }; config = mkIf cfg.enable { systemd.user.services = { quickshell = mkService { Unit.Description = "QuickShell Service"; Service = { Environment = [ "QSG_RENDER_LOOP=threaded" # "QT_QUICK_BACKEND=software" "QT_QPA_PLATFORM=wayland" "QSG_RENDERER_TIMING=true" "QML_DISABLE_DISTANCEFIELD=1" "QT_WAYLAND_DISABLE_WINDOWDECORATION=1" "QT_QPA_PLATFORMTHEME=qt5ct" "QT_QPA_REFRESH_RATE=240" "__GL_SYNC_TO_VBLANK=0" "LIBGL_ALWAYS_SOFTWARE=0" "__GL_SYNC_DISPLAY_DEVICE=DP-1" # Adjust this to match your display connection "QML_ANIMATION_DRIVER=cadence" "QML_CADENCE_DURATION=4" "QML_CADENCE_MAX_RENDER_TIME=3.5" "QSG_RENDERER_USE_THREADED_GL=1" "QSG_RHI_PREFER_SOFTWARE_RENDERER=0" "QSG_RHI_FORCE_SYNC=0" "QSG_INFO=1" ]; ExecStart = '' ${inputs.quickshell.packages.${system}.default}/bin/qs --log-rules 'quickshell.dbus.properties.warning = false;quickshell.dbus.dbusmenu.warning = false;quickshell.service.notifications.warning = false;quickshell.service.sni.host.warning = false' ''; Restart = "always"; }; }; }; }; }