1{ config, pkgs, lib, ... }:
2
3with lib;
4
5let
6
7 xcfg = config.services.xserver;
8 cfg = xcfg.desktopManager.e19;
9 e19_enlightenment = pkgs.e19.enlightenment.override { set_freqset_setuid = true; };
10 GST_PLUGIN_PATH = lib.makeSearchPath "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.e19.enable = mkOption {
22 default = false;
23 example = true;
24 description = "Enable the E19 desktop environment.";
25 };
26
27 };
28
29 config = mkIf (xcfg.enable && cfg.enable) {
30
31 environment.systemPackages = [
32 pkgs.e19.efl pkgs.e19.evas pkgs.e19.emotion pkgs.e19.elementary e19_enlightenment
33 pkgs.e19.terminology pkgs.e19.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 = "E19";
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:${pkgs.e19.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 ${e19_enlightenment}/bin/enlightenment_start
62 waitPID=$!
63 '';
64 }];
65
66 security.setuidPrograms = [ "e19_freqset" ];
67
68 environment.etc = singleton
69 { source = "${pkgs.xkeyboard_config}/etc/X11/xkb";
70 target = "X11/xkb";
71 };
72
73 fonts.fonts = [ pkgs.dejavu_fonts pkgs.ubuntu_font_family ];
74
75 services.udisks2.enable = true;
76 services.upower.enable = config.powerManagement.enable;
77
78 #services.dbus.packages = [ pkgs.efl ]; # dbus-1 folder is not in /etc but in /share, so needs fixing first
79
80 systemd.user.services.efreet =
81 { enable = true;
82 description = "org.enlightenment.Efreet";
83 serviceConfig =
84 { ExecStart = "${pkgs.e19.efl}/bin/efreetd";
85 StandardOutput = "null";
86 };
87 };
88
89 systemd.user.services.ethumb =
90 { enable = true;
91 description = "org.enlightenment.Ethumb";
92 serviceConfig =
93 { ExecStart = "${pkgs.e19.efl}/bin/ethumbd";
94 StandardOutput = "null";
95 };
96 };
97
98
99 };
100
101}