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}