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