{ config, lib, pkgs, ... }: { options.settings.programs.niri = { enable = lib.mkEnableOption "enables the niri window-manager"; }; config = lib.mkIf config.settings.programs.niri.enable { programs.niri.enable = true; programs.niri.package = pkgs.niri-unstable; gtk.iconCache.enable = true; xdg.portal = { enable = true; xdgOpenUsePortal = true; wlr.enable = true; config = { common = { default = [ "gtk" "wlr" ]; }; niri = { default = [ "gtk" "wlr" ]; }; }; }; xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-wlr pkgs.xdg-desktop-portal-gtk ]; systemd.user.services.xdg-desktop-portal = { after = [ "xdg-desktop-autostart.target" ]; }; systemd.user.services.xdg-desktop-portal-gtk = { after = [ "xdg-desktop-autostart.target" ]; }; systemd.user.services.xdg-desktop-portal-gnome = { after = [ "xdg-desktop-autostart.target" ]; }; systemd.user.services.niri-flake-polkit = { after = [ "xdg-desktop-autostart.target" ]; }; environment.systemPackages = with pkgs; [ swayosd wl-clipboard wayland-utils libsecret xwayland-satellite-unstable ]; }; }