{ config, inputs, pkgs, lib, ... }: let inherit (lib) mkIf mkEnableOption; cfg = config.desktop.cosmic; in { imports = with inputs; [ nixos-cosmic.nixosModules.default ]; options = { desktop.cosmic.enable = mkEnableOption "enable cosmic desktop"; }; config = mkIf cfg.enable { environment.sessionVariables.COSMIC_DATA_CONTROL_ENABLED = 1; sound.pipewire.enable = true; services = { desktopManager.cosmic.enable = true; displayManager.cosmic-greeter.enable = true; gnome.gnome-keyring.enable = true; dbus = { apparmor = "enabled"; implementation = "broker"; }; }; systemd = { packages = [pkgs.observatory]; services.monitord.wantedBy = ["multi-user.target"]; }; xdg.portal = { enable = true; extraPortals = with pkgs; [ xdg-desktop-portal-cosmic xdg-desktop-portal-gtk ]; config.cosmic = { default = ["cosmic" "gtk"]; "org.freedesktop.impl.portal.Secret" = ["gnome-keyring"]; }; }; }; }