1{ config, lib, pkgs, ... }: 2 3with lib; 4 5let 6 xcfg = config.services.xserver; 7 cfg = xcfg.desktopManager.cde; 8in { 9 options.services.xserver.desktopManager.cde = { 10 enable = mkEnableOption "Common Desktop Environment"; 11 12 extraPackages = mkOption { 13 type = with types; listOf package; 14 default = with pkgs.xorg; [ 15 xclock bitmap xlsfonts xfd xrefresh xload xwininfo xdpyinfo xwd xwud 16 ]; 17 example = literalExample '' 18 with pkgs.xorg; [ 19 xclock bitmap xlsfonts xfd xrefresh xload xwininfo xdpyinfo xwd xwud 20 ] 21 ''; 22 description = '' 23 Extra packages to be installed system wide. 24 ''; 25 }; 26 }; 27 28 config = mkIf (xcfg.enable && cfg.enable) { 29 environment.systemPackages = cfg.extraPackages; 30 31 services.rpcbind.enable = true; 32 33 services.xinetd.enable = true; 34 services.xinetd.services = [ 35 { 36 name = "cmsd"; 37 protocol = "udp"; 38 user = "root"; 39 server = "${pkgs.cdesktopenv}/opt/dt/bin/rpc.cmsd"; 40 extraConfig = '' 41 type = RPC UNLISTED 42 rpc_number = 100068 43 rpc_version = 2-5 44 only_from = 127.0.0.1/0 45 ''; 46 } 47 ]; 48 49 users.groups.mail = {}; 50 security.wrappers = { 51 dtmail = { 52 source = "${pkgs.cdesktopenv}/bin/dtmail"; 53 group = "mail"; 54 setgid = true; 55 }; 56 }; 57 58 system.activationScripts.setup-cde = '' 59 mkdir -p /var/dt/{tmp,appconfig/appmanager} 60 chmod a+w+t /var/dt/{tmp,appconfig/appmanager} 61 ''; 62 63 services.xserver.desktopManager.session = [ 64 { name = "CDE"; 65 start = '' 66 exec ${pkgs.cdesktopenv}/opt/dt/bin/Xsession 67 ''; 68 }]; 69 }; 70 71 meta.maintainers = [ ]; 72}