1{ config, pkgs, lib, ... }:
2
3with lib;
4
5let
6
7 e = pkgs.enlightenment;
8 xcfg = config.services.xserver;
9 cfg = xcfg.desktopManager.enlightenment;
10 GST_PLUGIN_PATH = lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" [
11 pkgs.gst_all_1.gst-plugins-base
12 pkgs.gst_all_1.gst-plugins-good
13 pkgs.gst_all_1.gst-plugins-bad
14 pkgs.gst_all_1.gst-libav ];
15
16in
17
18{
19 meta = {
20 maintainers = teams.enlightenment.members;
21 };
22
23 imports = [
24 (mkRenamedOptionModule [ "services" "xserver" "desktopManager" "e19" "enable" ] [ "services" "xserver" "desktopManager" "enlightenment" "enable" ])
25 ];
26
27 options = {
28
29 services.xserver.desktopManager.enlightenment.enable = mkOption {
30 type = types.bool;
31 default = false;
32 description = lib.mdDoc "Enable the Enlightenment desktop environment.";
33 };
34
35 };
36
37 config = mkIf cfg.enable {
38
39 environment.systemPackages = with pkgs; [
40 enlightenment.econnman
41 enlightenment.efl
42 enlightenment.enlightenment
43 enlightenment.ecrire
44 enlightenment.ephoto
45 enlightenment.rage
46 enlightenment.terminology
47 xorg.xcursorthemes
48 ];
49
50 environment.pathsToLink = [
51 "/etc/enlightenment"
52 "/share/enlightenment"
53 "/share/elementary"
54 "/share/locale"
55 ];
56
57 services.xserver.displayManager.sessionPackages = [ pkgs.enlightenment.enlightenment ];
58
59 services.xserver.displayManager.sessionCommands = ''
60 if test "$XDG_CURRENT_DESKTOP" = "Enlightenment"; then
61 export GST_PLUGIN_PATH="${GST_PLUGIN_PATH}"
62
63 # make available for D-BUS user services
64 #export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}:${config.system.path}/share:${e.efl}/share
65
66 # Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/
67 ${pkgs.xdg-user-dirs}/bin/xdg-user-dirs-update
68 fi
69 '';
70
71 # Wrappers for programs installed by enlightenment that should be setuid
72 security.wrappers = {
73 enlightenment_ckpasswd =
74 { setuid = true;
75 owner = "root";
76 group = "root";
77 source = "${pkgs.enlightenment.enlightenment}/lib/enlightenment/utils/enlightenment_ckpasswd";
78 };
79 enlightenment_sys =
80 { setuid = true;
81 owner = "root";
82 group = "root";
83 source = "${pkgs.enlightenment.enlightenment}/lib/enlightenment/utils/enlightenment_sys";
84 };
85 enlightenment_system =
86 { setuid = true;
87 owner = "root";
88 group = "root";
89 source = "${pkgs.enlightenment.enlightenment}/lib/enlightenment/utils/enlightenment_system";
90 };
91 };
92
93 environment.etc."X11/xkb".source = xcfg.xkbDir;
94
95 fonts.fonts = [ pkgs.dejavu_fonts pkgs.ubuntu_font_family ];
96
97 services.udisks2.enable = true;
98 services.upower.enable = config.powerManagement.enable;
99 services.xserver.libinput.enable = mkDefault true;
100
101 services.dbus.packages = [ e.efl ];
102
103 systemd.user.services.efreet =
104 { enable = true;
105 description = "org.enlightenment.Efreet";
106 serviceConfig =
107 { ExecStart = "${e.efl}/bin/efreetd";
108 StandardOutput = "null";
109 };
110 };
111
112 systemd.user.services.ethumb =
113 { enable = true;
114 description = "org.enlightenment.Ethumb";
115 serviceConfig =
116 { ExecStart = "${e.efl}/bin/ethumbd";
117 StandardOutput = "null";
118 };
119 };
120
121
122 };
123
124}