From b7bb2c58ed39319140aeb18f588084b1e85374f4 Mon Sep 17 00:00:00 2001 From: notgne2 Date: Wed, 15 Oct 2025 04:38:28 -0700 Subject: [PATCH] switch to hyprland --- home-manager/modules/ezpcusr.nix | 600 +++++++++---------------------- modules/ezpc.nix | 22 +- 2 files changed, 184 insertions(+), 438 deletions(-) diff --git a/home-manager/modules/ezpcusr.nix b/home-manager/modules/ezpcusr.nix index 6aad9d0..cc05e08 100644 --- a/home-manager/modules/ezpcusr.nix +++ b/home-manager/modules/ezpcusr.nix @@ -50,455 +50,217 @@ in { default = false; description = "If this PC has bluetooth support"; }; - - battery = mkOption { - type = types.bool; - default = false; - description = "If this PC has a battery"; - }; }; config = lib.mkIf cfg.enable { - services.swayidle = { + services.hypridle = { enable = lib.mkDefault true; - events = [ - { - event = "before-sleep"; - command = "${pkgs.systemd}/bin/loginctl lock-session"; - } - { - event = "lock"; - command = "${pkgs.playerctl}/bin/playerctl -a pause; ${lockCommand}"; - } - { - event = "unlock"; - command = "${pkgs.procps}/bin/pkill -USR1 swaylock"; - } - ]; + settings = { + general = { + lock_cmd = "pidof hyprlock || hyporlock"; + before_sleep_cmd = "loginctl lock-session"; + after_sleep_cmd = "hyperctl dispatch dpms on"; + }; - timeouts = [ - { - timeout = cfg.screensaver.lockTime; - command = "${pkgs.systemd}/bin/loginctl lock-session"; - } - { - timeout = cfg.screensaver.offTime; - command = "${pkgs.sway}/bin/swaymsg 'output * dpms off'"; - resumeCommand = "${pkgs.sway}/bin/swaymsg 'output * dpms on'"; - } - ]; + listener = [ + { + timeout = cfg.screensaver.lockTime; + on-timeout = "loginctl lock-session"; + } + { + timeout = cfg.screensaver.offTime; + on-timeout = "hyperctl dispatch dpms off"; + } + ]; + }; }; + services.avizo.enable = true; + programs.hyprlock.enable = true; + services.swaync.enable = true; + wayland.windowManager.hyprland = { - enable = false; - systemd.enable = true; - extraConfig = let - swayConfig = config.wayland.windowManager.sway.config; - swayBindings = swayConfig.keybindings; - swayToHyprlandBinding = key: binding: let - splitKey = lib.splitString "+" key; + enable = true; + # package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; + # portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; + plugins = with pkgs.hyprlandPlugins; [ + # inputs.hy3.packages.${pkgs.stdenv.hostPlatform.system}.hy3 + # inputs.hypr-dynamic-cursors.packages.${pkgs.stdenv.hostPlatform.system}.hypr-dynamic-cursors + hy3 + hypr-dynamic-cursors + ]; + settings = { + "plugin:dynamic-cursors" = { + mode = "stretch"; + }; + "plugin:hy3" = { + no_gaps_when_only = 1; + }; + misc = { + disable_hyprland_logo = true; + animate_manual_resizes = true; + animate_mouse_windowdragging = true; + new_window_takes_over_fullscreen = 2; + middle_click_paste = false; + }; + general = { + "$mod" = "SUPER"; + layout = "hy3"; - isMod = m: m == "Mod4" || m == "Shift"; - convertMod = m: - if m == "Mod4" - then "SUPER" - else lib.toUpper m; + gaps_in = 6; + gaps_out = 6; + resize_on_border = true; + }; + gestures = { - mods = filter isMod splitKey; - modsStr = "${(lib.concatStringsSep "_" (map convertMod mods))},"; + }; + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + ]; + windowrulev2 = [ + "move 0 0,class:(flameshot),title:(flameshot)" + "pin,class:(flameshot),title:(flameshot)" + "fullscreenstate,class:(flameshot),title:(flameshot)" + "float,class:(flameshot),title:(flameshot)" + ]; + bind = + [ + "$mod, Return, exec, ${pkgs.foot}/bin/foot" + "$mod, F, exec, firefox" + ", Print, exec, grimblast copy area" + "$mod, Q, killactive," + "$mod, F, fullscreen, 0" + "$mod SHIFT, F, fullscreen, 1" + "$mod, Space, exec, toggle-float" + "$mod, D, exec, ${config.programs.rofi.package}/bin/rofi -show drun -show-icons" - normalKeys = filter (m: isMod m == false) splitKey; - normalKey = lib.elemAt normalKeys 0; + ", Print, exec, ${config.services.flameshot.package}/bin/flameshot gui -p=\"${config.services.flameshot.settings.General.savePath}/$(date '+${config.services.flameshot.settings.General.filenamePattern}')\" --raw | wl-copy -t image/png" + # "SHIFT, Print, exec, ${pkgs.wl-clipboard}/bin/wl-paste > /tmp/clipup && ${ + # if cfg.uploadScript != null + # then cfg.uploadScript + # else ":" + # } /tmp/clipup | wl-copy && ${pkgs.libnotify}/bin/notify-send 'Clipboard uploaded!'" - convertedKey = "${modsStr}${normalKey}"; + "$mod, c, exec, ${config.services.cliphost.package}/bin/cliphist list | rofi -dmenu | cliphist decode | wl-copy" - convertDir = dir: lib.elemAt (lib.stringToCharacters dir) 0; + "$mod, minus, exec, volumectl -u down" + "$mod, equal, exec, volumectl -u up" - splitBinding = lib.splitString " " binding; - bindingAction = lib.elemAt splitBinding 0; - newBinding = - if bindingAction == "exec" - then "exec, ${lib.concatStringsSep " " (lib.tail splitBinding)}" - else if bindingAction == "workspace" - then let n = lib.last splitBinding; in "workspace, ${n}" - else if bindingAction == "kill" - then "killactive," - else if bindingAction == "focus" - then let - l = lib.last splitBinding; - in - if l == "mode_toggle" - then "togglefloating," - else "movefocus,${convertDir l}" - else if bindingAction == "fullscreen" - then "fullscreen,0" - else if bindingAction == "floating" - then "togglefloating," - else if bindingAction == "move" - then let - splitMove = lib.tail splitBinding; - moveThing = lib.elemAt splitMove 0; - toThing = - if lib.length splitMove >= 3 - then lib.elemAt splitMove 2 - else null; - in - if toThing == null - then "movewindow,${convertDir moveThing}" - else if moveThing == "container" && toThing == "workspace" - then "movetoworkspacesilent,${lib.last splitMove}" - else null - else null; - in - if newBinding == null - then "# ${key} - ${binding}" - else "bind=${convertedKey}, ${newBinding}"; - convertedBindings = lib.concatStringsSep "\n" (lib.mapAttrsToList swayToHyprlandBinding swayBindings); - bindingsStr = "${convertedBindings}\n"; - in '' - monitor=,preferred,auto,auto - gestures { - workspace_swipe = on - } - ${convertedBindings} - ''; + ", XF86AudioLowerVolume, exec, volumectl -u down" + ", XF86AudioRaiseVolume, exec, volumectl -u up" + + ", XF86AudioMute, exec, toggle-mute" + ", XF86AudioMicMute, exec, ${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle" + + ", XF86MonBrightnessDown, exec, lightctl down" + ", XF86MonBrightnessUp, exec, lightctl up" + "$mod, semicolon, exec, lightctl down" + "$mod, apostrophe, exec, lightctl up" + + # Previous/next but change the shuffle/random state before action (and change back afterwards) + "$mod&SHIFT, bracketright, exec, ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl next && ${pkgs.playerctl}/bin/playerctl shuffle Toggle" + "$mod&SHIFT, bracketleft, exec, ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl previous && ${pkgs.playerctl}/bin/playerctl shuffle Toggle" + "SHIFT, XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl next && ${pkgs.playerctl}/bin/playerctl shuffle Toggle" + + # Previous/next + "$mod, bracketright, exec, ${pkgs.playerctl}/bin/playerctl next" + "$mod, bracketleft, exec, ${pkgs.playerctl}/bin/playerctl previous" + ", XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl next" + ", XF86AudioPrev, exec, ${pkgs.playerctl}/bin/playerctl previous" + + # Seek forward/back + "$mod&Control_L, bracketright, exec, ${pkgs.playerctl}/bin/playerctl position 5+" + "$mod&Control_L, bracketleft, exec, ${pkgs.playerctl}/bin/playerctl position 5-" + "Control_L, XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl position 5+" + "Control_L, XF86AudioPrev, exec, ${pkgs.playerctl}/bin/playerctl position 5-" + + # Toggle play/pause + ", XF86AudioPlay, exec, ${pkgs.playerctl}/bin/playerctl play-pause" + ", XF86AudioPause, exec, ${pkgs.playerctl}/bin/playerctl play-pause" + "$mod, backslash, exec, ${pkgs.playerctl}/bin/playerctl play-pause" + + # "$mod, p, exec, bash ${inputs.bwmenu}/bwmenu" + # "$mod, e, exec, bash ${inputs.bemoji}/bemoji -t" + + "Control_L&Alt_L, l, exec, ${pkgs.systemd}/bin/loginctl lock-session" + + "$mod, left, hy3:movefocus, l" + "$mod, right, hy3:movefocus, r" + "$mod, up, hy3:movefocus, u" + "$mod, down, hy3:movefocus, d" + "$mod, h, hy3:movefocus, l" + "$mod, j, hy3:movefocus, d" + "$mod, k, hy3:movefocus, u" + "$mod, l, hy3:movefocus, r" + + "$mod SHIFT, left, hy3:movewindow, l" + "$mod SHIFT, right, hy3:movewindow, r" + "$mod SHIFT, up, hy3:movewindow, u" + "$mod SHIFT, down, hy3:movewindow, d" + "$mod SHIFT, h, hy3:movewindow, l" + "$mod SHIFT, j, hy3:movewindow, d" + "$mod SHIFT, k, hy3:movewindow, u" + "$mod SHIFT, l, hy3:movewindow, r" + + "$mod CTRL, left, resizeactive, -80 0" + "$mod CTRL, right, resizeactive, 80 0" + "$mod CTRL, up, resizeactive, 0 -80" + "$mod CTRL, down, resizeactive, 0 80" + "$mod CTRL, h, resizeactive, -80 0" + "$mod CTRL, j, resizeactive, 0 80" + "$mod CTRL, k, resizeactive, 0 -80" + "$mod CTRL, l, resizeactive, 80 0" + + "$mod, mouse_down, workspace, e-1" + "$mod, mouse_up, workspace, e+1" + ] + ++ ( + # workspaces + # binds $mod + [shift +] {1..9} to [move to] workspace {1..9} + builtins.concatLists (builtins.genList (i: + let ws = i + 1; + in [ + "$mod, code:1${toString i}, workspace, ${toString ws}" + "$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}" + ] + ) + 9) + ); + }; }; - wayland.windowManager.sway = { - enable = lib.mkDefault true; - - systemd.enable = lib.mkDefault true; - wrapperFeatures.gtk = lib.mkDefault true; - - extraConfig = '' - exec keyctl link @u @s - workspace 1 - ''; - - config = { - terminal = lib.mkDefault "${pkgs.foot}/bin/foot"; - - modifier = lib.mkDefault "Mod4"; - - keybindings = let - modifier = config.wayland.windowManager.sway.config.modifier; - - alphabet = ["Ctrl" "Alt" "Ctrl+Alt"]; - genKeyAttrs = move: - lib.listToAttrs ( - map - ( - n: { - name = "${modifier}${ - if move - then "+Shift" - else "" - }+${builtins.elemAt alphabet ((n - 11) / 10)}+${toString (lib.mod n 10)}"; - value = "${ - if move - then "move container to " - else "" - }workspace number ${toString n}"; - } - ) - (lib.lists.range 11 (10 * (builtins.length alphabet) + 10)) - ); - in - lib.mkOptionDefault ( - let - volumeUp = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%"; - volumeDown = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%"; - in - { - "${modifier}+q" = "kill"; - - "Print" = "exec ${config.services.flameshot.package}/bin/flameshot gui -p=\"${config.services.flameshot.settings.General.savePath}/$(date '+${config.services.flameshot.settings.General.filenamePattern}')\" --raw | ${pkgs.wl-clipboard}/bin/wl-copy -t image/png"; - "Shift+Print" = "exec ${pkgs.wl-clipboard}/bin/wl-paste > /tmp/clipup && ${ - if cfg.uploadScript != null - then cfg.uploadScript - else ":" - } /tmp/clipup | ${pkgs.wl-clipboard}/bin/wl-copy && ${pkgs.libnotify}/bin/notify-send 'Clipboard uploaded!'"; - - "${modifier}+c" = "exec ${config.services.clipman.package}/bin/clipman pick -t rofi"; - - "${modifier}+minus" = volumeDown; - "${modifier}+equal" = volumeUp; - - "XF86AudioRaiseVolume" = volumeUp; - "XF86AudioLowerVolume" = volumeDown; - "XF86AudioMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle"; - "XF86AudioMicMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle"; - - "XF86MonBrightnessDown" = "exec ${pkgs.light}/bin/light -U 10"; - "XF86MonBrightnessUp" = "exec ${pkgs.light}/bin/light -A 10"; - "${modifier}+semicolon" = "exec ${pkgs.light}/bin/light -U 10"; - "${modifier}+apostrophe" = "exec ${pkgs.light}/bin/light -A 10"; - - # Previous/next but change the shuffle/random state before action (and change back afterwards) - "${modifier}+Shift+bracketright" = "exec ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl next && ${pkgs.playerctl}/bin/playerctl shuffle Toggle"; - "${modifier}+Shift+bracketleft" = "exec ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl previous && ${pkgs.playerctl}/bin/playerctl shuffle Toggle"; - "Shift+XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl next && ${pkgs.playerctl}/bin/playerctl shuffle Toggle"; - - # Previous/next - "${modifier}+bracketright" = "exec ${pkgs.playerctl}/bin/playerctl next"; - "${modifier}+bracketleft" = "exec ${pkgs.playerctl}/bin/playerctl previous"; - "XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next"; - "XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous"; - - # Seek forward/back - "${modifier}+Ctrl+bracketright" = "exec ${pkgs.playerctl}/bin/playerctl position 5+"; - "${modifier}+Ctrl+bracketleft" = "exec ${pkgs.playerctl}/bin/playerctl position 5-"; - "Ctrl+XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl position 5+"; - "Ctrl+XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl position 5-"; - - # Toggle play/pause - "XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause"; - "XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl play-pause"; - "${modifier}+backslash" = "exec ${pkgs.playerctl}/bin/playerctl play-pause"; - - "${modifier}+p" = "exec bash ${inputs.bwmenu}/bwmenu"; - "${modifier}+e" = "exec bash ${inputs.bemoji}/bemoji -t"; - - "${modifier}+0" = "workspace 10"; - "${modifier}+Shift+0" = "move container to workspace 10"; - - "Ctrl+Alt+l" = "exec ${pkgs.systemd}/bin/loginctl lock-session"; - - "${modifier}+s" = "sticky toggle"; - } - // genKeyAttrs true - // genKeyAttrs false - ); - - menu = "${config.programs.rofi.package}/bin/rofi -show drun -show-icons -run-command '${pkgs.sway}/bin/swaymsg exec -- {cmd}'"; - - bars = []; - - gaps = { - smartGaps = lib.mkDefault true; - smartBorders = lib.mkDefault "on"; - inner = lib.mkDefault 10; - outer = lib.mkDefault 0; - }; - }; + programs.ashell = { + enable = true; + systemd.enable = true; }; programs.librewolf.enable = true; - programs.waybar = { + stylix = { enable = lib.mkDefault true; - systemd = { + autoEnable = lib.mkDefault true; + + icons = { enable = lib.mkDefault true; - target = lib.mkDefault "sway-session.target"; + dark = lib.mkDefault "Papirus-Dark"; + package = lib.mkDefault pkgs.papirus-icon-theme; }; - settings.mainbar = { - position = lib.mkDefault "left"; - height = lib.mkDefault null; - - modules-left = ["sway/workspaces"]; - modules-center = ["clock#1" "clock#2" "custom/spacer" "custom/media" "custom/spacer" "clock#3" "clock#4" "custom/spacer" "clock#5"]; - modules-right = ["pulseaudio" "custom/spacer" "memory" "custom/spacer" "cpu"] ++ lib.optionals cfg.battery ["custom/spacer" "battery"] ++ ["custom/spacer" "tray"]; - - "custom/spacer" = { - format = lib.mkDefault "〜"; - rotate = lib.mkDefault 90; - tooltip = lib.mkDefault false; - }; - - "custom/media" = { - rotate = lib.mkDefault 90; - max-length = lib.mkDefault 60; - on-click = lib.mkDefault "${pkgs.playerctl}/bin/playerctl play-pause"; - exec = lib.mkDefault "${pkgs.playerctl}/bin/playerctl metadata --format '{{ emoji(status) }} {{ artist }} - {{ title }}' --follow"; - }; - - "sway/workspaces" = { - disable-scroll = lib.mkDefault true; - }; - - "clock#1" = { - tooltip = lib.mkDefault false; - format = lib.mkDefault "{:%a}"; - }; - "clock#2" = { - tooltip = lib.mkDefault false; - format = lib.mkDefault "{:%m-%d}"; - }; - "clock#3" = { - tooltip = lib.mkDefault false; - format = lib.mkDefault "{:%I:%M}"; - }; - "clock#4" = { - tooltip = lib.mkDefault false; - format = lib.mkDefault "{:%p}"; - }; - "clock#5" = { - tooltip = lib.mkDefault false; - timezone = lib.mkDefault "Etc/UTC"; - format = lib.mkDefault "{:%H%M}"; - }; - - pulseaudio = { - format = lib.mkDefault "{icon} {volume}%"; - format-bluetooth = lib.mkDefault "{icon} {volume}%"; - format-muted = lib.mkDefault "ﱝ"; - format-icons = ["" "" ""]; - on-click = lib.mkDefault "${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle"; - on-click-right = lib.mkDefault "${pkgs.pavucontrol}/bin/pavucontrol"; - ignored-sinks = ["Easy Effects Sink"]; - }; - - memory = { - interval = lib.mkDefault 20; - format = lib.mkDefault " {}%"; - }; - - cpu = { - interval = lib.mkDefault 20; - format = lib.mkDefault " {usage}%"; - }; - - battery = { - states = { - good = lib.mkDefault 90; - warning = lib.mkDefault 25; - critical = lib.mkDefault 10; - }; - format = lib.mkDefault "{icon} {capacity}%"; - format-icons = { - default = ["" "" "" "" "" "" "" "" "" ""]; - charging = ["" "" "" "" "" "" ""]; - }; - }; - - tray = { - icon-size = lib.mkDefault 18; - spacing = lib.mkDefault 5; - }; - }; - - style = '' - window#waybar { - background: @base01; - color: @base06; - } - - #custom-spacer { - font-size: 15px; - color: @base00; - font-weight: bold; - } - - #workspaces, - #clock.1, - #clock.2, - #clock.3, - #clock.4, - #clock.5, - #pulseaudio, - #memory, - #cpu, - #battery, - #disk, - #tray, - #mode, - #custom-media { - color: @base06; - background: @base00; - padding: 5px 0; - } - - #workspaces { padding: 0 } - - #clock.1 { padding: 5px 0 0 0; } - #clock.2 { padding: 0 0 5px 0; } - - #clock.3 { padding: 5px 0 0 0; } - #clock.4 { padding: 0 0 5px 0; } - - #custom-media.playing { - color: @base0A; - } - - #workspaces button.focused { - color: @base0A; - } - #workspaces button:hover { - background: @base02; - } - - #pulseaudio { - color: @base0B; - } - #memory { - color: @base0C; - } - #cpu { - color: @base0D; - } - #battery { - color: @base0E; - } - - * { - border-radius: 0; - border-width: 0; - border-style: none; - margin: 0; - padding: 0; - } - ''; - }; - - services.mako = { - enable = lib.mkDefault true; - maxVisible = lib.mkDefault 6; - extraConfig = lib.generators.toKeyValue {} { - on-button-middle = "dismiss-all"; + cursor = { + package = lib.mkDefault pkgs.adwaita-icon-theme; + name = lib.mkDefault "Adwaita"; + size = lib.mkDefault 24; }; }; - systemd.user.services.mako = { - Service = { - ExecStart = "${pkgs.mako}/bin/mako"; - }; - Install = { - After = ["sway-session.target"]; - WantedBy = ["sway-session.target"]; - }; - }; - - stylix.enable = lib.mkDefault true; - services.blueman-applet.enable = lib.mkDefault cfg.bluetooth; services.mpris-proxy.enable = lib.mkDefault true; services.playerctld.enable = lib.mkDefault true; - gtk = { - enable = lib.mkDefault true; - iconTheme = { - package = lib.mkDefault pkgs.papirus-icon-theme; - name = lib.mkDefault "Papirus-Dark"; - }; - }; - - home.pointerCursor = { - package = lib.mkDefault pkgs.adwaita-icon-theme; - name = lib.mkDefault "Adwaita"; - size = lib.mkDefault 24; - x11.enable = lib.mkDefault true; - gtk.enable = lib.mkDefault true; - }; - - qt = { - enable = lib.mkDefault true; - platformTheme = lib.mkDefault "gtk"; - }; - # programs.kermit = { # enable = lib.mkDefault true; # settings = { @@ -542,13 +304,7 @@ in { ydotool keyutils - # programs - pavucontrol - kdePackages.ark - pcmanfm-qt - # CLI tools - yt-dlp maim slop xorg.xhost @@ -571,6 +327,6 @@ in { }; }; - services.clipman.enable = true; + services.cliphist.enable = true; }; } diff --git a/modules/ezpc.nix b/modules/ezpc.nix index 709a1fb..5638e59 100644 --- a/modules/ezpc.nix +++ b/modules/ezpc.nix @@ -12,38 +12,28 @@ in { config = mkIf cfg.enable { xdg.portal = { enable = lib.mkDefault true; - wlr = { - enable = lib.mkDefault true; - settings = { - screencast = { - max_fps = lib.mkDefault 55; - chooser_type = lib.mkDefault "simple"; - chooser_cmd = lib.mkDefault "${pkgs.slurp}/bin/slurp -f %o -or"; - }; - }; - }; - config = { - wlroots.default = ["wlr" "gtk"]; - common.default = ["gtk"]; - }; }; + programs.hyprland.enable = true; + environment.sessionVariables = { - QT_QPA_PLATFORM = "wayland;wayland-egl;xcb"; + QT_QPA_PLATFORM = "wayland;xcb"; MOZ_ENABLE_WAYLAND = "1"; + QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; ECORE_EVAS_ENGINE = "wayland_egl"; ELM_ENGINE = "wayland_egl"; _JAVA_AWT_WM_NONREPARENTING = "1"; NIXOS_OZONE_WL = "1"; SDL_VIDEODRIVER = "wayland"; + CLUTTER_BACKEND = "wayland"; }; services.greetd = { enable = lib.mkDefault true; settings = { default_session = { - command = lib.mkDefault "${pkgs.greetd.tuigreet}/bin/tuigreet --time --user-menu --user-menu-max-uid 30000 --cmd sway"; + command = lib.mkDefault "${pkgs.greetd.tuigreet}/bin/tuigreet --time --user-menu --user-menu-max-uid 30000 --cmd hyprland"; }; }; };