at 24.11-pre 7.2 kB view raw
1{ config, lib, pkgs, utils, ... }: 2 3with lib; 4 5let 6 xcfg = config.services.xserver; 7 cfg = xcfg.desktopManager.deepin; 8 9 nixos-gsettings-overrides = pkgs.deepin.dde-gsettings-schemas.override { 10 extraGSettingsOverridePackages = cfg.extraGSettingsOverridePackages; 11 extraGSettingsOverrides = cfg.extraGSettingsOverrides; 12 }; 13in 14{ 15 options = { 16 17 services.xserver.desktopManager.deepin = { 18 enable = mkEnableOption "Deepin desktop manager"; 19 extraGSettingsOverrides = mkOption { 20 default = ""; 21 type = types.lines; 22 description = "Additional gsettings overrides."; 23 }; 24 extraGSettingsOverridePackages = mkOption { 25 default = [ ]; 26 type = types.listOf types.path; 27 description = "List of packages for which gsettings are overridden."; 28 }; 29 }; 30 31 environment.deepin.excludePackages = mkOption { 32 default = [ ]; 33 type = types.listOf types.package; 34 description = "List of default packages to exclude from the configuration"; 35 }; 36 37 }; 38 39 config = mkIf cfg.enable 40 { 41 services.displayManager.sessionPackages = [ pkgs.deepin.dde-session ]; 42 services.displayManager.defaultSession = mkDefault "dde-x11"; 43 44 # Update the DBus activation environment after launching the desktop manager. 45 services.xserver.displayManager.sessionCommands = '' 46 ${lib.getBin pkgs.dbus}/bin/dbus-update-activation-environment --systemd --all 47 ''; 48 49 hardware.bluetooth.enable = mkDefault true; 50 hardware.pulseaudio.enable = mkDefault true; 51 security.polkit.enable = true; 52 53 services.deepin.dde-daemon.enable = mkForce true; 54 services.deepin.dde-api.enable = mkForce true; 55 services.deepin.app-services.enable = mkForce true; 56 57 services.colord.enable = mkDefault true; 58 services.accounts-daemon.enable = mkDefault true; 59 services.gvfs.enable = mkDefault true; 60 services.gnome.glib-networking.enable = mkDefault true; 61 services.gnome.gnome-keyring.enable = mkDefault true; 62 services.bamf.enable = mkDefault true; 63 64 services.libinput.enable = mkDefault true; 65 services.udisks2.enable = true; 66 services.upower.enable = mkDefault config.powerManagement.enable; 67 networking.networkmanager.enable = mkDefault true; 68 programs.dconf.enable = mkDefault true; 69 programs.gnupg.agent.pinentryPackage = mkDefault pkgs.pinentry-qt; 70 71 fonts.packages = with pkgs; [ noto-fonts ]; 72 xdg.mime.enable = true; 73 xdg.menus.enable = true; 74 xdg.icons.enable = true; 75 xdg.portal.enable = mkDefault true; 76 xdg.portal.extraPortals = mkDefault [ 77 (pkgs.xdg-desktop-portal-gtk.override { 78 buildPortalsInGnome = false; 79 }) 80 ]; 81 82 # https://github.com/NixOS/nixpkgs/pull/247766#issuecomment-1722839259 83 xdg.portal.config.deepin.default = mkDefault [ "gtk" ]; 84 85 environment.sessionVariables = { 86 NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas"; 87 DDE_POLKIT_AGENT_PLUGINS_DIRS = [ "${pkgs.deepin.dpa-ext-gnomekeyring}/lib/polkit-1-dde/plugins" ]; 88 }; 89 90 environment.pathsToLink = [ 91 "/lib/dde-dock/plugins" 92 "/lib/dde-control-center" 93 "/lib/dde-session-shell" 94 "/lib/dde-file-manager" 95 "/share/backgrounds" 96 "/share/wallpapers" 97 "/share/dde-daemon" 98 "/share/dsg" 99 "/share/deepin-themes" 100 "/share/deepin" 101 ]; 102 103 environment.etc = { 104 "deepin-installer.conf".text = '' 105 system_info_vendor_name="Copyright (c) 2003-2023 NixOS contributors" 106 ''; 107 }; 108 109 systemd.tmpfiles.rules = [ 110 "d /var/lib/AccountsService 0775 root root - -" 111 "C /var/lib/AccountsService/icons 0775 root root - ${pkgs.deepin.dde-account-faces}/var/lib/AccountsService/icons" 112 ]; 113 114 security.pam.services.dde-lock.text = '' 115 # original at {dde-session-shell}/etc/pam.d/dde-lock 116 auth substack login 117 account include login 118 password substack login 119 session include login 120 ''; 121 122 environment.systemPackages = with pkgs; with deepin; 123 let 124 requiredPackages = [ 125 pciutils # for dtkcore/startdde 126 xdotool # for dde-daemon 127 glib # for gsettings program / gdbus 128 gtk3 # for gtk-launch program 129 xdg-user-dirs # Update user dirs 130 util-linux # runuser 131 polkit_gnome 132 librsvg # dde-api use rsvg-convert 133 lshw # for dtkcore 134 libsForQt5.kde-gtk-config # deepin-api/gtk-thumbnailer need 135 libsForQt5.kglobalaccel 136 xsettingsd # lightdm-deepin-greeter 137 dtkcommon 138 dtkcore 139 dtkgui 140 dtkwidget 141 dtkdeclarative 142 qt5platform-plugins 143 deepin-pw-check 144 deepin-turbo 145 146 dde-account-faces 147 deepin-icon-theme 148 deepin-desktop-theme 149 deepin-sound-theme 150 deepin-gtk-theme 151 deepin-wallpapers 152 deepin-desktop-base 153 154 startdde 155 dde-dock 156 dde-launchpad 157 dde-session-ui 158 dde-session-shell 159 dde-file-manager 160 dde-control-center 161 dde-network-core 162 dde-clipboard 163 dde-calendar 164 dde-polkit-agent 165 dpa-ext-gnomekeyring 166 deepin-desktop-schemas 167 deepin-terminal 168 deepin-kwin 169 dde-session 170 dde-widgets 171 dde-appearance 172 dde-application-manager 173 deepin-service-manager 174 ]; 175 optionalPackages = [ 176 onboard # dde-dock plugin 177 deepin-calculator 178 deepin-compressor 179 deepin-editor 180 deepin-picker 181 deepin-draw 182 deepin-music 183 deepin-movie-reborn 184 deepin-system-monitor 185 deepin-shortcut-viewer 186 # freeimage has knownVulnerabilties, don't install packages using freeiamge by default 187 # deepin-album 188 # deepin-camera 189 # deepin-image-viewer 190 # deepin-screen-recorder 191 ]; 192 in 193 requiredPackages 194 ++ utils.removePackagesByName optionalPackages config.environment.deepin.excludePackages; 195 196 services.dbus.packages = with pkgs.deepin; [ 197 dde-dock 198 dde-launchpad 199 dde-session-ui 200 dde-session-shell 201 dde-file-manager 202 dde-control-center 203 dde-calendar 204 dde-clipboard 205 deepin-kwin 206 deepin-pw-check 207 dde-widgets 208 dde-session 209 dde-appearance 210 dde-application-manager 211 deepin-service-manager 212 ]; 213 214 systemd.packages = with pkgs.deepin; [ 215 dde-launchpad 216 dde-file-manager 217 dde-calendar 218 dde-clipboard 219 deepin-kwin 220 dde-appearance 221 dde-widgets 222 dde-session 223 dde-application-manager 224 deepin-service-manager 225 ]; 226 }; 227} 228