summary refs log tree commit diff
path: root/nixos/modules/services/x11/desktop-managers/cde.nix
blob: 2d9504fb5f1ef19912e580ee9e3fc6ce06f7c391 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
{ config, lib, pkgs, ... }:

with lib;

let
  xcfg = config.services.xserver;
  cfg = xcfg.desktopManager.cde;
in {
  options.services.xserver.desktopManager.cde = {
    enable = mkEnableOption "Common Desktop Environment";

    extraPackages = mkOption {
      type = with types; listOf package;
      default = with pkgs.xorg; [
        xclock bitmap xlsfonts xfd xrefresh xload xwininfo xdpyinfo xwd xwud
      ];
      example = literalExample ''
        with pkgs.xorg; [
          xclock bitmap xlsfonts xfd xrefresh xload xwininfo xdpyinfo xwd xwud
        ]
      '';
      description = ''
        Extra packages to be installed system wide.
      '';
    };
  };

  config = mkIf (xcfg.enable && cfg.enable) {
    environment.systemPackages = cfg.extraPackages;

    services.rpcbind.enable = true;

    services.xinetd.enable = true;
    services.xinetd.services = [
      {
        name = "cmsd";
        protocol = "udp";
        user = "root";
        server = "${pkgs.cdesktopenv}/opt/dt/bin/rpc.cmsd";
        extraConfig = ''
          type  = RPC UNLISTED
          rpc_number  = 100068
          rpc_version = 2-5
          only_from   = 127.0.0.1/0
        '';
      }
    ];

    users.groups.mail = {};
    security.wrappers = {
      dtmail = {
        source = "${pkgs.cdesktopenv}/bin/dtmail";
        group = "mail";
        setgid = true;
      };
    };

    system.activationScripts.setup-cde = ''
      mkdir -p /var/dt/{tmp,appconfig/appmanager}
      chmod a+w+t /var/dt/{tmp,appconfig/appmanager}
    '';

    services.xserver.desktopManager.session = [
    { name = "CDE";
      start = ''
        exec ${pkgs.cdesktopenv}/opt/dt/bin/Xsession
      '';
    }];
  };

  meta.maintainers = [ maintainers.gnidorah ];
}