{ config, lib, pkgs, ... }: let cfg = config.programs.niri; in { options.programs.niri = { enable = lib.mkEnableOption "Niri, a scrollable-tiling Wayland compositor"; package = lib.mkPackageOption pkgs "niri" { }; }; config = lib.mkIf cfg.enable ( lib.mkMerge [ { environment.systemPackages = [ cfg.package ]; services = { displayManager.sessionPackages = [ cfg.package ]; # Recommended by upstream # https://github.com/YaLTeR/niri/wiki/Important-Software#portals gnome.gnome-keyring.enable = lib.mkDefault true; }; systemd.packages = [ cfg.package ]; xdg.portal = { enable = lib.mkDefault true; configPackages = [ cfg.package ]; # Recommended by upstream, required for screencast support # https://github.com/YaLTeR/niri/wiki/Important-Software#portals extraPortals = [ pkgs.xdg-desktop-portal-gnome ]; }; } (import ./wayland-session.nix { inherit lib pkgs; enableWlrPortal = false; enableXWayland = false; }) ] ); meta.maintainers = with lib.maintainers; [ getchoo sodiboo ]; }