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 options = {
20
21 services.xserver.desktopManager.enlightenment.enable = mkOption {
22 default = false;
23 example = true;
24 description = "Enable the Enlightenment desktop environment.";
25 };
26
27 };
28
29 config = mkIf (xcfg.enable && cfg.enable) {
30
31 environment.systemPackages = [
32 e.efl e.enlightenment
33 e.terminology e.econnman
34 pkgs.xorg.xauth # used by kdesu
35 pkgs.gtk # To get GTK+'s themes.
36 pkgs.tango-icon-theme
37 pkgs.shared_mime_info
38 pkgs.gnome.gnomeicontheme
39 pkgs.xorg.xcursorthemes
40 ];
41
42 environment.pathsToLink = [ "/etc/enlightenment" "/etc/xdg" "/share/enlightenment" "/share/elementary" "/share/applications" "/share/locale" "/share/icons" "/share/themes" "/share/mime" "/share/desktop-directories" ];
43
44 services.xserver.desktopManager.session = [
45 { name = "Enlightenment";
46 start = ''
47 # Set GTK_DATA_PREFIX so that GTK+ can find the themes
48 export GTK_DATA_PREFIX=${config.system.path}
49 # find theme engines
50 export GTK_PATH=${config.system.path}/lib/gtk-3.0:${config.system.path}/lib/gtk-2.0
51 export XDG_MENU_PREFIX=enlightenment
52
53 export GST_PLUGIN_PATH="${GST_PLUGIN_PATH}"
54
55 # make available for D-BUS user services
56 #export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}:${config.system.path}/share:${e.efl}/share
57
58 # Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/
59 ${pkgs.xdg-user-dirs}/bin/xdg-user-dirs-update
60
61 exec ${e.enlightenment}/bin/enlightenment_start
62 '';
63 }];
64
65 security.setuidPrograms = [ "e_freqset" ];
66
67 environment.etc = singleton
68 { source = "${pkgs.xkeyboard_config}/etc/X11/xkb";
69 target = "X11/xkb";
70 };
71
72 fonts.fonts = [ pkgs.dejavu_fonts pkgs.ubuntu_font_family ];
73
74 services.udisks2.enable = true;
75 services.upower.enable = config.powerManagement.enable;
76
77 services.dbus.packages = [ e.efl ];
78
79 systemd.user.services.efreet =
80 { enable = true;
81 description = "org.enlightenment.Efreet";
82 serviceConfig =
83 { ExecStart = "${e.efl}/bin/efreetd";
84 StandardOutput = "null";
85 };
86 };
87
88 systemd.user.services.ethumb =
89 { enable = true;
90 description = "org.enlightenment.Ethumb";
91 serviceConfig =
92 { ExecStart = "${e.efl}/bin/ethumbd";
93 StandardOutput = "null";
94 };
95 };
96
97
98 };
99
100}