{ config, pkgs, lib, ... }: let inherit (lib) mkIf mkEnableOption; cfg = config.desktop.niri; in { options = { desktop.niri.enable = mkEnableOption "enable niri desktop"; }; config = mkIf cfg.enable { module.desktop.displayManager = "greetd"; module.desktop.gnome-keyring.enable = true; sound.pipewire.enable = true; security = { soteria.enable = true; # polkit agent in rust pam.services.gtklock = {}; }; programs.niri.enable = true; # wayland compositor in rust xdg.portal = { enable = true; extraPortals = with pkgs; [ xdg-desktop-portal-gnome xdg-desktop-portal-gtk ]; config.niri.default = ["gnome" "gtk"]; }; }; }