{ 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 { sound.pipewire.enable = true; nix.settings = { substituters = ["https://cosmic.cachix.org/"]; trusted-public-keys = ["cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE="]; }; environment.sessionVariables.COSMIC_DATA_CONTROL_ENABLED = 1; systemd.packages = [pkgs.observatory]; systemd.services.monitord.wantedBy = ["multi-user.target"]; services.desktopManager.cosmic.enable = true; services.displayManager.cosmic-greeter.enable = true; services = { gnome.gnome-keyring.enable = true; dbus = { apparmor = "enabled"; implementation = "broker"; }; }; 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"]; }; }; }; }