about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/enlightenment
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/desktops/enlightenment')
-rw-r--r--nixpkgs/pkgs/desktops/enlightenment/default.nix19
-rw-r--r--nixpkgs/pkgs/desktops/enlightenment/econnman/default.nix51
-rw-r--r--nixpkgs/pkgs/desktops/enlightenment/ecrire/default.nix39
-rw-r--r--nixpkgs/pkgs/desktops/enlightenment/efl/default.nix217
-rw-r--r--nixpkgs/pkgs/desktops/enlightenment/efl/efl-elua.patch14
-rw-r--r--nixpkgs/pkgs/desktops/enlightenment/enlightenment/0001-wrapped-setuid-executables.patch115
-rw-r--r--nixpkgs/pkgs/desktops/enlightenment/enlightenment/0003-setuid-missing-path.patch25
-rw-r--r--nixpkgs/pkgs/desktops/enlightenment/enlightenment/default.nix83
-rw-r--r--nixpkgs/pkgs/desktops/enlightenment/ephoto/default.nix39
-rw-r--r--nixpkgs/pkgs/desktops/enlightenment/evisum/default.nix39
-rw-r--r--nixpkgs/pkgs/desktops/enlightenment/rage/default.nix47
-rw-r--r--nixpkgs/pkgs/desktops/enlightenment/terminology/default.nix48
12 files changed, 736 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/enlightenment/default.nix b/nixpkgs/pkgs/desktops/enlightenment/default.nix
new file mode 100644
index 000000000000..76c6cc58953a
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/enlightenment/default.nix
@@ -0,0 +1,19 @@
+{ lib, pkgs }:
+
+lib.makeScope pkgs.newScope (self: with self; {
+
+  #### CORE EFL
+  efl = callPackage ./efl { };
+
+  #### WINDOW MANAGER
+  enlightenment = callPackage ./enlightenment { };
+
+  #### APPLICATIONS
+  econnman = callPackage ./econnman { };
+  ecrire = callPackage ./ecrire { };
+  ephoto = callPackage ./ephoto { };
+  evisum = callPackage ./evisum { };
+  rage = callPackage ./rage { };
+  terminology = callPackage ./terminology { };
+
+})
diff --git a/nixpkgs/pkgs/desktops/enlightenment/econnman/default.nix b/nixpkgs/pkgs/desktops/enlightenment/econnman/default.nix
new file mode 100644
index 000000000000..228957de4ad1
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/enlightenment/econnman/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, stdenv
+, fetchurl
+, makeWrapper
+, pkg-config
+, dbus
+, efl
+, python3Packages
+, directoryListingUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "econnman";
+  version = "1.1";
+
+  src = fetchurl {
+    url = "http://download.enlightenment.org/rel/apps/econnman/${pname}-${version}.tar.xz";
+    sha256 = "sha256-DM6HaB+ufKcPHmPP4K5l/fF7wzRycFQxfiXjiXYZ7YU=";
+  };
+
+  nativeBuildInputs = [
+    makeWrapper
+    pkg-config
+    python3Packages.wrapPython
+  ];
+
+  buildInputs = [
+    dbus
+    efl
+    python3Packages.python
+  ];
+
+  pythonPath = [
+    python3Packages.dbus-python
+    python3Packages.pythonefl
+  ];
+
+  postInstall = ''
+    wrapPythonPrograms
+  '';
+
+  passthru.updateScript = directoryListingUpdater { };
+
+  meta = with lib; {
+    description = "A user interface for the connman network connection manager";
+    homepage = "https://enlightenment.org/";
+    license = licenses.lgpl3;
+    platforms = platforms.linux;
+    maintainers = with lib.maintainers; [ matejc ftrvxmtrx ] ++ teams.enlightenment.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/enlightenment/ecrire/default.nix b/nixpkgs/pkgs/desktops/enlightenment/ecrire/default.nix
new file mode 100644
index 000000000000..25238ca59ab7
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/enlightenment/ecrire/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, stdenv
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, efl
+, directoryListingUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ecrire";
+  version = "0.2.0";
+
+  src = fetchurl {
+    url = "http://download.enlightenment.org/rel/apps/${pname}/${pname}-${version}.tar.xz";
+    sha256 = "1pszk583rzclfqy3dyjh1m9pz1hnr84vqz8vw9kngcnmj23mjr6r";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+  ];
+
+  buildInputs = [
+    efl
+  ];
+
+  passthru.updateScript = directoryListingUpdater { };
+
+  meta = with lib; {
+    description = "EFL simple text editor";
+    homepage = "https://www.enlightenment.org/";
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = teams.enlightenment.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/enlightenment/efl/default.nix b/nixpkgs/pkgs/desktops/enlightenment/efl/default.nix
new file mode 100644
index 000000000000..34485cf87363
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/enlightenment/efl/default.nix
@@ -0,0 +1,217 @@
+{ lib
+, stdenv
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, SDL2
+, alsa-lib
+, bullet
+, check
+, curl
+, dbus
+, doxygen
+, expat
+, fontconfig
+, freetype
+, fribidi
+, ghostscript
+, giflib
+, glib
+, gst_all_1
+, gtk3
+, harfbuzz
+, hicolor-icon-theme
+, ibus
+, jbig2dec
+, libGL
+, libdrm
+, libinput
+, libjpeg
+, libpng
+, libpulseaudio
+, libraw
+, librsvg
+, libsndfile
+, libspectre
+, libtiff
+, libwebp
+, libxkbcommon
+, luajit
+, lz4
+, mesa
+, mint-x-icons
+, openjpeg
+, openssl
+, poppler
+, python3Packages
+, systemd
+, udev
+, util-linux
+, wayland
+, wayland-protocols
+, writeText
+, xorg
+, zlib
+, directoryListingUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "efl";
+  version = "1.27.0";
+
+  src = fetchurl {
+    url = "http://download.enlightenment.org/rel/libs/${pname}/${pname}-${version}.tar.xz";
+    sha256 = "sha256-PfuZ+8wmjAvHl+L4PoxQPvneZihPQLOBu1l6CBhcAPQ=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    gtk3
+    pkg-config
+    check
+  ];
+
+  buildInputs = [
+    fontconfig
+    freetype
+    giflib
+    glib
+    gst_all_1.gst-libav
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    gst_all_1.gstreamer
+    ibus
+    libGL
+    libpng
+    libpulseaudio
+    libsndfile
+    libtiff
+    lz4
+    mesa
+    openssl
+    systemd
+    udev
+    wayland-protocols
+    xorg.libX11
+    xorg.libXcursor
+    xorg.xorgproto
+    zlib
+    # still missing parent icon themes: RAVE-X, Faenza
+  ];
+
+  propagatedBuildInputs = [
+    SDL2
+    alsa-lib
+    bullet
+    curl
+    dbus
+    dbus
+    doxygen
+    expat
+    fribidi
+    ghostscript
+    harfbuzz
+    hicolor-icon-theme # for the icon theme
+    jbig2dec
+    libdrm
+    libinput
+    libjpeg
+    libraw
+    librsvg
+    libspectre
+    libwebp
+    libxkbcommon
+    luajit
+    mint-x-icons # Mint-X is a parent icon theme of Enlightenment-X
+    openjpeg
+    poppler
+    util-linux
+    wayland
+    xorg.libXScrnSaver
+    xorg.libXcomposite
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXinerama
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXtst
+    xorg.libxcb
+  ];
+
+  dontDropIconThemeCache = true;
+
+  mesonFlags = [
+    "--buildtype=release"
+    "-D build-tests=false" # disable build tests, which are not working
+    "-D ecore-imf-loaders-disabler=ibus,scim" # ibus is disabled by default, scim is not available in nixpkgs
+    "-D embedded-lz4=false"
+    "-D fb=true"
+    "-D network-backend=connman"
+    "-D sdl=true"
+    "-D elua=true"
+    "-D bindings=lua,cxx"
+    # for wayland client support
+    "-D wl=true"
+    "-D drm=true"
+  ];
+
+  patches = [
+    ./efl-elua.patch
+  ];
+
+  postPatch = ''
+    patchShebangs src/lib/elementary/config_embed
+
+    # fix destination of systemd unit and dbus service
+    substituteInPlace systemd-services/meson.build --replace "sys_dep.get_pkgconfig_variable('systemduserunitdir')" "'$out/systemd/user'"
+    substituteInPlace dbus-services/meson.build --replace "dep.get_pkgconfig_variable('session_bus_services_dir')" "'$out/share/dbus-1/services'"
+  '';
+
+  # bin/edje_cc creates $HOME/.run, which would break build of reverse dependencies.
+  setupHook = writeText "setupHook.sh" ''
+    export HOME="$TEMPDIR"
+  '';
+
+  preConfigure = ''
+    # allow ecore_con to find libcurl.so, which is a runtime dependency (it is dlopened)
+    export LD_LIBRARY_PATH="${curl.out}/lib''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH"
+
+    source "$setupHook"
+  '';
+
+  postInstall = ''
+    # fix use of $out variable
+    substituteInPlace "$out/share/elua/core/util.lua" --replace '$out' "$out"
+    rm "$out/share/elua/core/util.lua.orig"
+
+    # add all module include dirs to the Cflags field in efl.pc
+    modules=$(for i in "$out/include/"*/; do printf ' -I''${includedir}/'`basename $i`; done)
+    substituteInPlace "$out/lib/pkgconfig/efl.pc" \
+      --replace 'Cflags: -I''${includedir}/efl-1' \
+                'Cflags: -I''${includedir}/eina-1/eina'"$modules"
+
+    # build icon cache
+    gtk-update-icon-cache "$out"/share/icons/Enlightenment-X
+  '';
+
+  postFixup = ''
+    # Some libraries are linked at runtime by hand in code (they are dlopened)
+    patchelf --add-needed ${curl.out}/lib/libcurl.so $out/lib/libecore_con.so
+    patchelf --add-needed ${libpulseaudio}/lib/libpulse.so $out/lib/libecore_audio.so
+    patchelf --add-needed ${libsndfile.out}/lib/libsndfile.so $out/lib/libecore_audio.so
+  '';
+
+  passthru.updateScript = directoryListingUpdater { };
+
+  meta = with lib; {
+    description = "Enlightenment foundation libraries";
+    homepage = "https://enlightenment.org/";
+    license = with licenses; [ bsd2 lgpl2Only licenses.zlib ];
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ matejc ftrvxmtrx ] ++ teams.enlightenment.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/enlightenment/efl/efl-elua.patch b/nixpkgs/pkgs/desktops/enlightenment/efl/efl-elua.patch
new file mode 100644
index 000000000000..96c42b3ff3ca
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/enlightenment/efl/efl-elua.patch
@@ -0,0 +1,14 @@
+--- ./src/scripts/elua/core/util.lua.old	2015-05-17 11:59:57.307743243 +0200
++++ ./src/scripts/elua/core/util.lua	2015-05-17 12:39:11.906797377 +0200
+@@ -159,7 +159,10 @@
+         local ev = os.getenv("ELUA_" .. libname:upper() .. "_LIBRARY_PATH")
+         local succ, v = load_lib(libname, ev)
+         if not succ then
+-            error(v, 2)
++            succ, v = load_lib(libname, "$out/lib")
++            if not succ then
++                error(v, 2)
++            end
+         end
+         lib = v
+         loaded_libs[libname] = lib
diff --git a/nixpkgs/pkgs/desktops/enlightenment/enlightenment/0001-wrapped-setuid-executables.patch b/nixpkgs/pkgs/desktops/enlightenment/enlightenment/0001-wrapped-setuid-executables.patch
new file mode 100644
index 000000000000..16e02311ed66
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/enlightenment/enlightenment/0001-wrapped-setuid-executables.patch
@@ -0,0 +1,115 @@
+From 2c563889fcad37df4ee4251bf0a63316d8b7b612 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= <malaquias@gmail.com>
+Date: Thu, 14 May 2020 16:36:34 -0300
+Subject: [PATCH] wrapped setuid executables
+
+Installing programs with root ownership and setuid/setgid permissions
+in /nix/store is not allowed. They should be wrapped in the
+enlightenment service module, and the wrapped ones should be used
+instead.
+---
+ meson/meson_inst.sh           | 4 ++--
+ src/bin/e_auth.c              | 6 ++----
+ src/bin/e_fm/e_fm_main_eeze.c | 6 +++---
+ src/bin/e_start_main.c        | 3 +--
+ src/bin/e_system.c            | 2 +-
+ 5 files changed, 9 insertions(+), 12 deletions(-)
+
+diff --git a/meson/meson_inst.sh b/meson/meson_inst.sh
+index 321143e40..cd2399306 100755
+--- a/meson/meson_inst.sh
++++ b/meson/meson_inst.sh
+@@ -1,6 +1,6 @@
+ #!/bin/sh
+ 
+ for x in "$@" ; do
+-	chown root "$DESTDIR/$x"
+-	chmod a=rx,u+xs "$DESTDIR/$x"
++	echo TODO: chown root "$DESTDIR/$x"
++	echo TODO: chmod a=rx,u+xs "$DESTDIR/$x"
+ done
+diff --git a/src/bin/e_auth.c b/src/bin/e_auth.c
+index 6d07a0ac3..d519f0649 100644
+--- a/src/bin/e_auth.c
++++ b/src/bin/e_auth.c
+@@ -38,8 +38,7 @@ e_auth_begin(char *passwd)
+    pwlen = strlen(passwd);
+ 
+    snprintf(buf, sizeof(buf),
+-            "%s/enlightenment/utils/enlightenment_ckpasswd pw",
+-            e_prefix_lib_get());
++            "/run/wrappers/bin/enlightenment_ckpasswd pw");
+    exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL);
+    if (!exe) goto out;
+    snprintf(buf, sizeof(buf), "pw %s", passwd);
+@@ -75,8 +74,7 @@ e_auth_polkit_begin(char *passwd, const char *cookie, unsigned int uid)
+    pwlen = strlen(passwd);
+ 
+    snprintf(buf, sizeof(buf),
+-            "%s/enlightenment/utils/enlightenment_ckpasswd pk",
+-            e_prefix_lib_get());
++            "/run/wrappers/bin/enlightenment_ckpasswd pk");
+    exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL);
+    if (!exe) goto out;
+    snprintf(buf, sizeof(buf), "%s %u %s", cookie, uid, passwd);
+diff --git a/src/bin/e_fm/e_fm_main_eeze.c b/src/bin/e_fm/e_fm_main_eeze.c
+index 9b10b3117..0f0aa5b53 100644
+--- a/src/bin/e_fm/e_fm_main_eeze.c
++++ b/src/bin/e_fm/e_fm_main_eeze.c
+@@ -318,7 +318,7 @@ _e_fm_main_eeze_volume_eject(E_Volume *v)
+      {
+         char buf[PATH_MAX];
+ 
+-        snprintf(buf, sizeof(buf), "%s/enlightenment/utils/enlightenment_sys", eina_prefix_lib_get(pfx));
++        snprintf(buf, sizeof(buf), "/run/wrappers/bin/enlightenment_sys");
+         eeze_disk_mount_wrapper_set(v->disk, buf);
+      }
+    v->guard = ecore_timer_loop_add(E_FM_EJECT_TIMEOUT, (Ecore_Task_Cb)_e_fm_main_eeze_vol_eject_timeout, v);
+@@ -512,7 +512,7 @@ _e_fm_main_eeze_volume_unmount(E_Volume *v)
+      {
+         char buf[PATH_MAX];
+ 
+-        snprintf(buf, sizeof(buf), "%s/enlightenment/utils/enlightenment_sys", eina_prefix_lib_get(pfx));
++        snprintf(buf, sizeof(buf), "/run/wrappers/bin/enlightenment_sys");
+         eeze_disk_mount_wrapper_set(v->disk, buf);
+      }
+    v->guard = ecore_timer_loop_add(E_FM_UNMOUNT_TIMEOUT, (Ecore_Task_Cb)_e_fm_main_eeze_vol_unmount_timeout, v);
+@@ -548,7 +548,7 @@ _e_fm_main_eeze_volume_mount(E_Volume *v)
+      {
+         char buf2[PATH_MAX];
+ 
+-        snprintf(buf2, sizeof(buf2), "%s/enlightenment/utils/enlightenment_sys", eina_prefix_lib_get(pfx));
++        snprintf(buf2, sizeof(buf2), "/run/wrappers/bin/enlightenment_sys");
+         eeze_disk_mount_wrapper_set(v->disk, buf2);
+      }
+    v->guard = ecore_timer_loop_add(E_FM_MOUNT_TIMEOUT, (Ecore_Task_Cb)_e_fm_main_eeze_vol_mount_timeout, v);
+diff --git a/src/bin/e_start_main.c b/src/bin/e_start_main.c
+index 722063339..ee85aa9f1 100644
+--- a/src/bin/e_start_main.c
++++ b/src/bin/e_start_main.c
+@@ -596,8 +596,7 @@ main(int argc, char **argv)
+               eina_prefix_data_get(pfx));
+    putenv(buf2);
+    myasprintf(&buf3,
+-              "E_ALERT_SYSTEM_BIN=%s/enlightenment/utils/enlightenment_system",
+-              eina_prefix_lib_get(pfx));
++              "E_ALERT_SYSTEM_BIN=/run/wrappers/bin/enlightenment_system");
+    putenv(buf3);
+ 
+    home = getenv("HOME");
+diff --git a/src/bin/e_system.c b/src/bin/e_system.c
+index bfd43e7e2..6bf48e31f 100644
+--- a/src/bin/e_system.c
++++ b/src/bin/e_system.c
+@@ -133,7 +133,7 @@ _system_spawn(void)
+    else _respawn_count = 0;
+    if (_respawn_count > 5) return;
+    snprintf(buf, sizeof(buf),
+-            "%s/enlightenment/utils/enlightenment_system", e_prefix_lib_get());
++            "/run/wrappers/bin/enlightenment_system");
+    _system_exe = ecore_exe_pipe_run
+      (buf, ECORE_EXE_NOT_LEADER | ECORE_EXE_TERM_WITH_PARENT |
+       ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_WRITE, NULL);
+-- 
+2.34.0
+
diff --git a/nixpkgs/pkgs/desktops/enlightenment/enlightenment/0003-setuid-missing-path.patch b/nixpkgs/pkgs/desktops/enlightenment/enlightenment/0003-setuid-missing-path.patch
new file mode 100644
index 000000000000..5c32ed9b0d63
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/enlightenment/enlightenment/0003-setuid-missing-path.patch
@@ -0,0 +1,25 @@
+From b7ef2a0d3f31db55a12b2b8c2e1c60ba62b971c8 Mon Sep 17 00:00:00 2001
+From: Matt Bagnara <mbagnara@fastmail.com>
+Date: Wed, 1 Jul 2020 15:30:40 -0500
+Subject: [PATCH] add nixos path
+
+---
+ src/bin/e_util_suid.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/bin/e_util_suid.h b/src/bin/e_util_suid.h
+index b01ff792b..88c2a0f17 100644
+--- a/src/bin/e_util_suid.h
++++ b/src/bin/e_util_suid.h
+@@ -246,7 +246,7 @@ e_setuid_setup(uid_t *caller_uid, gid_t *caller_gid, char **caller_user, char **
+ # endif
+ #endif
+    // pass 3 - set path and ifs to minimal defaults
+-   putenv("PATH=/bin:/usr/bin:/sbin:/usr/sbin");
++   putenv("PATH=/bin:/usr/bin:/sbin:/usr/sbin:/run/current-system/sw/bin");
+    putenv("IFS= \t\n");
+    return 0;
+ }
+-- 
+2.27.0
+
diff --git a/nixpkgs/pkgs/desktops/enlightenment/enlightenment/default.nix b/nixpkgs/pkgs/desktops/enlightenment/enlightenment/default.nix
new file mode 100644
index 000000000000..9b5abbd8a564
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/enlightenment/enlightenment/default.nix
@@ -0,0 +1,83 @@
+{ lib
+, stdenv
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, gettext
+, alsa-lib
+, acpid
+, bc
+, ddcutil
+, efl
+, libexif
+, pam
+, xkeyboard_config
+, udisks2
+, waylandSupport ? false, wayland-protocols, xwayland
+, bluetoothSupport ? true, bluez5
+, pulseSupport ? !stdenv.isDarwin, libpulseaudio
+, directoryListingUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "enlightenment";
+  version = "0.26.0";
+
+  src = fetchurl {
+    url = "https://download.enlightenment.org/rel/apps/${pname}/${pname}-${version}.tar.xz";
+    sha256 = "sha256-EbbvBnG+X+rWiL9VTDCiocaDSTrRDF/jEV/7RlVCToQ=";
+  };
+
+  nativeBuildInputs = [
+    gettext
+    meson
+    ninja
+    pkg-config
+  ];
+
+  buildInputs = [
+    alsa-lib
+    acpid # for systems with ACPI for lid events, AC/Battery plug in/out etc
+    bc # for the Everything module calculator mode
+    ddcutil # specifically libddcutil.so.2 for backlight control
+    efl
+    libexif
+    pam
+    xkeyboard_config
+    udisks2 # for removable storage mounting/unmounting
+  ]
+  ++ lib.optional bluetoothSupport bluez5 # for bluetooth configuration and control
+  ++ lib.optional pulseSupport libpulseaudio # for proper audio device control and redirection
+  ++ lib.optionals waylandSupport [ wayland-protocols xwayland ]
+  ;
+
+  patches = [
+    # Executables cannot be made setuid in nix store. They should be
+    # wrapped in the enlightenment service module, and the wrapped
+    # executables should be used instead.
+    ./0001-wrapped-setuid-executables.patch
+    ./0003-setuid-missing-path.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace src/modules/everything/evry_plug_calc.c \
+      --replace "ecore_exe_pipe_run(\"bc -l\"" "ecore_exe_pipe_run(\"${bc}/bin/bc -l\""
+  '';
+
+  mesonFlags = [
+    "-D systemdunitdir=lib/systemd/user"
+  ] ++ lib.optional waylandSupport "-Dwl=true";
+
+  passthru.providedSessions = [ "enlightenment" ];
+
+  passthru.updateScript = directoryListingUpdater { };
+
+  meta = with lib; {
+    description = "The Compositing Window Manager and Desktop Shell";
+    homepage = "https://www.enlightenment.org";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ matejc ftrvxmtrx ] ++ teams.enlightenment.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/enlightenment/ephoto/default.nix b/nixpkgs/pkgs/desktops/enlightenment/ephoto/default.nix
new file mode 100644
index 000000000000..c7681bfe0e47
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/enlightenment/ephoto/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, stdenv
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, efl
+, directoryListingUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "ephoto";
+  version = "1.6.0";
+
+  src = fetchurl {
+    url = "http://download.enlightenment.org/rel/apps/${pname}/${pname}-${version}.tar.xz";
+    sha256 = "1lvhcs4ba8h3z78nyycbww8mj4cscb8k200dcc3cdy8vrvrp7g1n";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+  ];
+
+  buildInputs = [
+    efl
+  ];
+
+  passthru.updateScript = directoryListingUpdater { };
+
+  meta = with lib; {
+    description = "Image viewer and editor written using the Enlightenment Foundation Libraries";
+    homepage = "https://www.smhouston.us/ephoto/";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = teams.enlightenment.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/enlightenment/evisum/default.nix b/nixpkgs/pkgs/desktops/enlightenment/evisum/default.nix
new file mode 100644
index 000000000000..438b68902813
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/enlightenment/evisum/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, stdenv
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, efl
+, directoryListingUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "evisum";
+  version = "0.6.0";
+
+  src = fetchurl {
+    url = "https://download.enlightenment.org/rel/apps/${pname}/${pname}-${version}.tar.xz";
+    sha256 = "1ip3rmp0hcn0pk6lv089cayx18p1b2wycgvwpnf7ghbdxg7n4q15";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+  ];
+
+  buildInputs = [
+    efl
+  ];
+
+  passthru.updateScript = directoryListingUpdater { };
+
+  meta = with lib; {
+    description = "System and process monitor written with EFL";
+    homepage = "https://www.enlightenment.org";
+    license = with licenses; [ isc ];
+    platforms = platforms.linux;
+    maintainers = teams.enlightenment.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/enlightenment/rage/default.nix b/nixpkgs/pkgs/desktops/enlightenment/rage/default.nix
new file mode 100644
index 000000000000..814887491438
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/enlightenment/rage/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, stdenv
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, efl
+, gst_all_1
+, wrapGAppsHook
+, directoryListingUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "rage";
+  version = "0.4.0";
+
+  src = fetchurl {
+    url = "http://download.enlightenment.org/rel/apps/${pname}/${pname}-${version}.tar.xz";
+    sha256 = "03yal7ajh57x2jhmygc6msf3gzvqkpmzkqzj6dnam5sim8cq9rbw";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    efl
+    gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-bad
+    gst_all_1.gst-libav
+  ];
+
+  passthru.updateScript = directoryListingUpdater { };
+
+  meta = with lib; {
+    description = "Video and audio player along the lines of mplayer";
+    homepage = "https://enlightenment.org/";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ matejc ftrvxmtrx ] ++ teams.enlightenment.members;
+  };
+}
diff --git a/nixpkgs/pkgs/desktops/enlightenment/terminology/default.nix b/nixpkgs/pkgs/desktops/enlightenment/terminology/default.nix
new file mode 100644
index 000000000000..9c2cabe7e8f0
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/enlightenment/terminology/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, stdenv
+, fetchurl
+, meson
+, ninja
+, pkg-config
+, python3
+, efl
+, nixosTests
+, directoryListingUpdater
+}:
+
+stdenv.mkDerivation rec {
+  pname = "terminology";
+  version = "1.13.0";
+
+  src = fetchurl {
+    url = "https://download.enlightenment.org/rel/apps/${pname}/${pname}-${version}.tar.xz";
+    sha256 = "FqN/7Ne71j7J3j7GwK8zHO531t/ag4obFXPW8phHTaU=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    python3
+  ];
+
+  buildInputs = [
+    efl
+  ];
+
+  postPatch = ''
+    patchShebangs data/colorschemes/*.py
+  '';
+
+  passthru.tests.test = nixosTests.terminal-emulators.terminology;
+
+  passthru.updateScript = directoryListingUpdater { };
+
+  meta = with lib; {
+    description = "Powerful terminal emulator based on EFL";
+    homepage = "https://www.enlightenment.org/about-terminology";
+    license = licenses.bsd2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ matejc ftrvxmtrx ] ++ teams.enlightenment.members;
+  };
+}