{ config, lib, pkgs, ... }: with lib; mkIf (elem "desktop::sway" config.machine.services) { programs.sway = { enable = true; package = pkgs.sway.override { enableXWayland = true; }; extraPackages = with pkgs; [ file i3status dmenu qt5.qtwayland grim slurp swaylock swayidle light mako wl-clipboard wf-recorder ]; wrapperFeatures = { base = true; gtk = true; }; extraSessionCommands = '' export GDK_BACKEND=wayland export CLUTTER_BACKEND=wayland export SDL_VIDEODRIVER=wayland # needs qt5.qtwayland in systemPackages export QT_QPA_PLATFORM=wayland-egl export QT_WAYLAND_FORCE_DPI=physical export QT_WAYLAND_DISABLE_WINDOWDECORATION="1" # Fix for some Java AWT applications (e.g. Android Studio), # use this if they aren't displayed properly: export _JAVA_AWT_WM_NONREPARENTING=1 # Chromium (based) applications export NIXOS_OZONE_WL=1 ''; }; }