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 (lib.mdDoc "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 defaultText = literalExpression ''
18 with pkgs.xorg; [
19 xclock bitmap xlsfonts xfd xrefresh xload xwininfo xdpyinfo xwd xwud
20 ]
21 '';
22 description = lib.mdDoc ''
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 setgid = true;
53 owner = "root";
54 group = "mail";
55 source = "${pkgs.cdesktopenv}/bin/dtmail";
56 };
57 };
58
59 system.activationScripts.setup-cde = ''
60 mkdir -p /var/dt/{tmp,appconfig/appmanager}
61 chmod a+w+t /var/dt/{tmp,appconfig/appmanager}
62 '';
63
64 services.xserver.desktopManager.session = [
65 { name = "CDE";
66 start = ''
67 exec ${pkgs.cdesktopenv}/opt/dt/bin/Xsession
68 '';
69 }];
70 };
71
72 meta.maintainers = [ ];
73}