2026-06-02 07:40:25 -07:00
|
|
|
{
|
|
|
|
|
config,
|
|
|
|
|
lib,
|
|
|
|
|
options,
|
|
|
|
|
pkgs,
|
|
|
|
|
...
|
|
|
|
|
}:
|
2025-05-21 19:53:56 +01:00
|
|
|
|
2026-06-02 07:40:25 -07:00
|
|
|
let
|
|
|
|
|
cfg = config.features.swayDesktop;
|
2025-05-21 19:53:56 +01:00
|
|
|
in
|
|
|
|
|
{
|
2026-06-02 07:40:25 -07:00
|
|
|
options = {
|
|
|
|
|
features.swayDesktop.enable = lib.mkEnableOption "Enable Sway Desktop";
|
|
|
|
|
};
|
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
|
|
|
programs.sway = {
|
|
|
|
|
enable = true;
|
|
|
|
|
wrapperFeatures.gtk = true;
|
|
|
|
|
extraSessionCommands = ''
|
|
|
|
|
# QT
|
|
|
|
|
export QT_QPA_PLATFORM="wayland;xcb"
|
|
|
|
|
export QT_QPA_PLATFORMTHEME=qt5ct
|
|
|
|
|
# SDL
|
|
|
|
|
export SDL_VIDEODRIVER=wayland
|
|
|
|
|
# Java
|
|
|
|
|
export _JAVA_AWT_WM_NONREPARENTING=1
|
|
|
|
|
# Misc
|
|
|
|
|
export CLUTTER_BACKEND=wayland
|
|
|
|
|
export WINIT_UNIX_BACKEND=x11
|
|
|
|
|
export MOZ_ENABLE_WAYLAND=1
|
|
|
|
|
'';
|
|
|
|
|
# Core Wayland utilities. The lock screen, idle daemon, status bar and
|
|
|
|
|
# notification daemon are configured per-user in home/sway.nix.
|
|
|
|
|
extraPackages = with pkgs; [
|
|
|
|
|
brightnessctl
|
|
|
|
|
foot
|
|
|
|
|
grim
|
|
|
|
|
sway-launcher-desktop
|
|
|
|
|
pavucontrol
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
fonts.packages = with pkgs; [
|
|
|
|
|
noto-fonts
|
|
|
|
|
noto-fonts-color-emoji
|
|
|
|
|
font-awesome
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
# Desktop portals: enables screen sharing (wlroots) and native file pickers
|
|
|
|
|
# for Wayland apps such as Element and Firefox.
|
|
|
|
|
xdg.portal = {
|
|
|
|
|
enable = true;
|
|
|
|
|
wlr.enable = true;
|
|
|
|
|
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
|
|
|
|
config.common.default = "*";
|
|
|
|
|
};
|
|
|
|
|
};
|
2025-05-21 19:53:56 +01:00
|
|
|
}
|