summary refs log tree commit diff
path: root/modules/services/x11/desktop-managers/kde4.nix
blob: a4c63616347e005a382c764f132f28b5346a5d9d (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
{ config, pkgs, ... }:

with pkgs.lib;

let

  xcfg = config.services.xserver;
  cfg = xcfg.desktopManager.kde4;
  xorg = pkgs.xorg;

in

{

  imports = [ ./kde-environment.nix ];

    
  options = {

    services.xserver.desktopManager.kde4.enable = mkOption {
      default = false;
      example = true;
      description = "Enable the KDE 4 desktop environment.";
    };

  };

  
  config = mkIf (xcfg.enable && cfg.enable) {

    # If KDE 4 is enabled, make it the default desktop manager (unless
    # overriden by the user's configuration).
    # !!! doesn't work yet ("Multiple definitions. Only one is allowed
    # for this option.")
    # services.xserver.desktopManager.default = mkOverride 900 "kde4";

    services.xserver.desktopManager.session = singleton
      { name = "kde4";
        bgSupport = true;
        start =
          ''
            # Start KDE.
            exec ${pkgs.kde4.kdebase_workspace}/bin/startkde
          '';
      };

    security.setuidPrograms = [ "kcheckpass" ];

    environment.kdePackages =
      [ pkgs.kde4.kdelibs
        pkgs.kde4.kdebase
        pkgs.kde4.kdebase_runtime
        pkgs.kde4.kdebase_workspace
        pkgs.shared_mime_info
      ] ++ optional (pkgs.kde4 ? oxygen_icons) pkgs.kde4.oxygen_icons;

    environment.x11Packages =
      [ xorg.xmessage # so that startkde can show error messages
        pkgs.kde4.qt4 # needed for qdbus
        xorg.xset # used by startkde, non-essential
      ];

    environment.etc = singleton
      { source = "${pkgs.xkeyboard_config}/etc/X11/xkb";
        target = "X11/xkb";
      };

  };

}