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