{ config, inputs, lib, perSystem, pkgs, ... }: with lib; let cfg = config.desktop.dms; in { imports = with inputs; [ dms.nixosModules.dank-material-shell dms.nixosModules.greeter niri-flake.nixosModules.niri ]; options = { desktop.dms.enable = mkEnableOption "enable DankMaterialShell"; }; config = mkIf cfg.enable { xdg.portal = { enable = true; extraPortals = with pkgs; [xdg-desktop-portal-gnome xdg-desktop-portal-gtk]; config.niri.default = ["gnome" "gtk"]; config.common."org.freedesktop.impl.portal.Secret" = ["gnome-keyring"]; }; environment.systemPackages = with pkgs; [ libnotify ]; module.gnome-keyring.enable = true; module.pipewire.enable = true; services.gvfs.enable = true; systemd.user.services.niri-flake-polkit.enable = false; programs = { niri.enable = true; niri.package = perSystem.niri-flake.niri-unstable; dank-material-shell = { enable = true; greeter = { enable = true; configHome = "/home/user"; compositor.name = "niri"; }; }; }; }; }