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