at 25.11-pre 3.4 kB view raw
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}