projects/guix·blob javascript-team · refs

466 lines · 17.8 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Tomáš Čech <[email protected]>
3;;; Copyright © 2015 Daniel Pimentel <[email protected]>
4;;; Copyright © 2015-2023 Efraim Flashner <[email protected]>
5;;; Copyright © 2017 Nikita <[email protected]>
6;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <[email protected]>
7;;; Copyright © 2018 Timo Eisenmann <[email protected]>
8;;; Copyright © 2023 Maxim Cournoyer <[email protected]>
9;;; Copyright © 2025 Nicolas Graves <[email protected]>
10;;;
11;;; This file is part of GNU Guix.
12;;;
13;;; GNU Guix is free software; you can redistribute it and/or modify it
14;;; under the terms of the GNU General Public License as published by
15;;; the Free Software Foundation; either version 3 of the License, or (at
16;;; your option) any later version.
17;;;
18;;; GNU Guix is distributed in the hope that it will be useful, but
19;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21;;; GNU General Public License for more details.
22;;;
23;;; You should have received a copy of the GNU General Public License
24;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26(define-module (gnu packages enlightenment)
27 #:use-module ((guix licenses) #:prefix license:)
28 #:use-module (guix packages)
29 #:use-module (guix download)
30 #:use-module (guix gexp)
31 #:use-module (guix utils)
32 #:use-module (guix build-system meson)
33 #:use-module (guix build-system pyproject)
34 #:use-module (gnu packages)
35 #:use-module (gnu packages algebra)
36 #:use-module (gnu packages bittorrent)
37 #:use-module (gnu packages check)
38 #:use-module (gnu packages code)
39 #:use-module (gnu packages compression)
40 #:use-module (gnu packages curl)
41 #:use-module (gnu packages fonts)
42 #:use-module (gnu packages fontutils)
43 #:use-module (gnu packages freedesktop)
44 #:use-module (gnu packages fribidi)
45 #:use-module (gnu packages game-development)
46 #:use-module (gnu packages gettext)
47 #:use-module (gnu packages ghostscript)
48 #:use-module (gnu packages gl)
49 #:use-module (gnu packages glib)
50 #:use-module (gnu packages gnome)
51 #:use-module (gnu packages gstreamer)
52 #:use-module (gnu packages gtk)
53 #:use-module (gnu packages hardware)
54 #:use-module (gnu packages ibus)
55 #:use-module (gnu packages image)
56 #:use-module (gnu packages libunwind)
57 #:use-module (gnu packages linux)
58 #:use-module (gnu packages llvm)
59 #:use-module (gnu packages lua)
60 #:use-module (gnu packages pdf)
61 #:use-module (gnu packages perl)
62 #:use-module (gnu packages photo)
63 #:use-module (gnu packages pkg-config)
64 #:use-module (gnu packages pulseaudio)
65 #:use-module (gnu packages python)
66 #:use-module (gnu packages python-build)
67 #:use-module (gnu packages python-xyz)
68 #:use-module (gnu packages tls)
69 #:use-module (gnu packages video)
70 #:use-module (gnu packages xdisorg)
71 #:use-module (gnu packages xorg)
72 #:use-module (ice-9 match))
73
74(define-public efl
75 (package
76 (name "efl")
77 (version "1.26.3")
78 (source (origin
79 (method url-fetch)
80 (uri (string-append
81 "https://download.enlightenment.org/rel/libs/efl/efl-"
82 version ".tar.xz"))
83 (sha256
84 (base32
85 "05bxc58hj0z6pkp6yy5cmy1lc575q0nrbr5lxr6z8d4kznh3my6r"))))
86 (build-system meson-build-system)
87 (native-inputs
88 (list check
89 gettext-minimal
90 pkg-config
91 python))
92 (inputs
93 (list curl
94 giflib
95 gstreamer
96 gst-plugins-base
97 ibus-minimal
98 mesa
99 libraw
100 (librsvg-for-system)
101 libspectre
102 libtiff
103 libxau
104 libxcomposite
105 libxcursor
106 libxdamage
107 libxdmcp
108 libxext
109 libxi
110 libxfixes
111 libxinerama
112 libxrandr
113 libxrender
114 libxscrnsaver
115 libxtst
116 libwebp
117 openjpeg
118 poppler
119 `(,util-linux "lib")
120 wayland-protocols))
121 (propagated-inputs
122 ;; All these inputs are in package config files in section
123 ;; Requires.private.
124 (append
125 (list dbus
126 elogind
127 eudev
128 fontconfig
129 freetype
130 fribidi
131 glib
132 harfbuzz
133 libinput-minimal
134 libjpeg-turbo
135 libsndfile
136 libpng
137 libunwind
138 libx11
139 libxkbcommon)
140 (if (member (%current-system)
141 (package-transitive-supported-systems luajit))
142 (list luajit)
143 (list lua-5.2))
144 (list lz4
145 openssl
146 pulseaudio
147 wayland
148 zlib)))
149 (arguments
150 `(#:configure-flags
151 `("-Dembedded-lz4=false"
152 "-Dbuild-examples=false"
153 "-Decore-imf-loaders-disabler=scim"
154 "-Dglib=true"
155 "-Dmount-path=/run/privileged/bin/mount"
156 "-Dunmount-path=/run/privileged/bin/umount"
157 "-Dnetwork-backend=connman"
158 ,,@(if (member (%current-system)
159 (package-transitive-supported-systems luajit))
160 `("-Dlua-interpreter=luajit")
161 `("-Dlua-interpreter=lua"))
162 ;; For Wayland.
163 "-Dwl=true"
164 "-Ddrm=true")
165 #:tests? #f ; Many tests fail due to timeouts and network requests.
166 #:phases
167 (modify-phases %standard-phases
168 ;; If we don't hardcode the location of libcurl.so and others then we
169 ;; have to wrap the outputs of efl's dependencies in those libraries.
170 (add-after 'unpack 'hardcode-dynamic-libraries
171 (lambda* (#:key inputs #:allow-other-keys)
172 (substitute* "src/lib/ecore_con/ecore_con_url_curl.c"
173 (("libcurl.so.4")
174 (search-input-file inputs "lib/libcurl.so.4")))
175 (substitute* "src/lib/ecore_audio/ecore_audio.c"
176 (("libpulse.so.0")
177 (search-input-file inputs "lib/libpulse.so.0"))
178 (("libsndfile.so.1")
179 (search-input-file inputs "lib/libsndfile.so.1")))
180 (substitute* "src/lib/elput/elput_logind.c"
181 (("libelogind.so.0")
182 (search-input-file inputs "lib/libelogind.so.0")))))
183 (add-after 'unpack 'fix-install-paths
184 (lambda _
185 (substitute* "dbus-services/meson.build"
186 (("install_dir.*")
187 "install_dir: join_paths(dir_data, 'dbus-1', 'services'))\n"))
188 (substitute* "src/tests/elementary/meson.build"
189 (("dir_data") "meson.source_root(), 'test-output'"))
190 (substitute* "data/eo/meson.build"
191 (("'usr', 'lib'") "'./' + dir_lib"))))
192 (add-after 'unpack 'set-home-directory
193 ;; FATAL: Cannot create run dir '/homeless-shelter/.run' - errno=2
194 (lambda _ (setenv "HOME" "/tmp"))))))
195 (home-page "https://www.enlightenment.org/about-efl")
196 (synopsis "Enlightenment Foundation Libraries")
197 (description
198 "Enlightenment Foundation Libraries is a set of libraries developed
199for Enlightenment. Libraries covers data serialization, wide support for
200graphics rendering, UI layout and themes, interaction with OS, access to
201removable devices or support for multimedia.")
202 ;; Different parts are under different licenses.
203 (license (list license:bsd-2 license:lgpl2.1 license:zlib))))
204
205(define-public terminology
206 (package
207 (name "terminology")
208 (version "1.13.0")
209 (source (origin
210 (method url-fetch)
211 (uri
212 (string-append "https://download.enlightenment.org/rel/apps/"
213 "terminology/terminology-" version ".tar.xz"))
214 (sha256
215 (base32
216 "19ad8ycg5mkk2ldqm0ysvzb7gvhw6fpw1iiyvv4kxmmvszn7z8qn"))
217 (modules '((guix build utils)))
218 ;; Remove the bundled fonts.
219 (snippet
220 '(begin
221 (delete-file-recursively "data/fonts")
222 (substitute* "data/meson.build"
223 (("subdir\\('fonts'\\)") ""))))))
224 (build-system meson-build-system)
225 (arguments
226 `(#:configure-flags
227 (let ((efl (assoc-ref %build-inputs "efl")))
228 (list "-Dtests=true"
229 (string-append "-Dedje-cc=" efl "/bin/edje_cc")
230 (string-append "-Deet=" efl "/bin/eet")))
231 #:phases
232 (modify-phases %standard-phases
233 (add-after 'unpack 'set-home-directory
234 ;; FATAL: Cannot create run dir '/homeless-shelter/.run' - errno=2
235 (lambda _ (setenv "HOME" "/tmp")))
236 (replace 'check
237 (lambda* (#:key tests? #:allow-other-keys)
238 (when tests?
239 (with-directory-excursion
240 (string-append "../" ,name "-" ,version "/tests")
241 (invoke "sh" "run_tests.sh" "--verbose"
242 "-t" "../../build/src/bin/tytest")))))
243 (add-after 'install 'remove-test-binary
244 (lambda* (#:key outputs #:allow-other-keys)
245 ;; This file is not meant to be installed.
246 (delete-file (string-append (assoc-ref outputs "out")
247 "/bin/tytest")))))))
248 (native-inputs
249 (list gettext-minimal
250 perl
251 pkg-config
252 python))
253 (inputs
254 (list efl))
255 (home-page "https://www.enlightenment.org/about-terminology")
256 (synopsis "Powerful terminal emulator based on EFL")
257 (description
258 "Terminology is fast and feature rich terminal emulator. It is solely
259based on Enlightenment Foundation Libraries. It supports multiple tabs, UTF-8,
260URL and local path detection, themes, popup based content viewer for non-text
261contents and more.")
262 (license license:bsd-2)))
263
264(define-public rage
265 (package
266 (name "rage")
267 (version "0.4.0")
268 (source (origin
269 (method url-fetch)
270 (uri
271 (string-append
272 "https://download.enlightenment.org/rel/apps/rage/rage-"
273 version ".tar.xz"))
274 (sha256
275 (base32
276 "03yal7ajh57x2jhmygc6msf3gzvqkpmzkqzj6dnam5sim8cq9rbw"))))
277 (build-system meson-build-system)
278 (arguments
279 '(#:phases
280 (modify-phases %standard-phases
281 (add-after 'unpack 'set-home-directory
282 ;; FATAL: Cannot create run dir '/homeless-shelter/.run' - errno=2
283 (lambda _ (setenv "HOME" "/tmp"))))))
284 (native-inputs
285 (list pkg-config))
286 (inputs
287 (list efl))
288 (home-page "https://www.enlightenment.org/about-rage")
289 (synopsis "Video and audio player based on EFL")
290 (description
291 "Rage is a video and audio player written with Enlightenment Foundation
292Libraries with some extra bells and whistles.")
293 (license license:bsd-2)))
294
295(define-public enlightenment
296 (package
297 (name "enlightenment")
298 (version "0.25.4")
299 (source (origin
300 (method url-fetch)
301 (uri
302 (string-append "https://download.enlightenment.org/rel/apps/"
303 "enlightenment/enlightenment-" version ".tar.xz"))
304 (sha256
305 (base32
306 "18mp4ggfy7n0yz6kzx56ali0piqa84z72vnj6649l6w2dch5vnsn"))
307 (patches (search-patches "enlightenment-fix-setuid-path.patch"))))
308 (build-system meson-build-system)
309 (arguments
310 `(#:configure-flags
311 (list "-Dsystemd=false"
312 "-Dpackagekit=false"
313 "-Dwl=true")
314 #:phases
315 (modify-phases %standard-phases
316 (add-before 'configure 'set-system-actions
317 (lambda* (#:key inputs #:allow-other-keys)
318 (setenv "HOME" "/tmp")
319 (let ((xkeyboard (assoc-ref inputs "xkeyboard-config"))
320 (setxkbmap (assoc-ref inputs "setxkbmap"))
321 (libc (assoc-ref inputs "libc"))
322 (bc (assoc-ref inputs "bc"))
323 (ddcutil (assoc-ref inputs "ddcutil"))
324 (efl (assoc-ref inputs "efl")))
325 ;; We need to patch the path to 'base.lst' to be able
326 ;; to switch the keyboard layout in E.
327 (substitute* (list "src/modules/xkbswitch/e_mod_parse.c"
328 "src/modules/wizard/page_011.c")
329 (("/usr/share/X11/xkb/rules/xorg.lst")
330 (string-append xkeyboard
331 "/share/X11/xkb/rules/base.lst")))
332 (substitute* "src/bin/e_xkb.c"
333 (("\"setxkbmap \"")
334 (string-append "\"" setxkbmap "/bin/setxkbmap \"")))
335 (substitute* (list "src/bin/e_intl.c"
336 "src/modules/conf_intl/e_int_config_intl.c"
337 "src/modules/wizard/page_010.c")
338 (("locale -a") (string-append libc "/bin/locale -a")))
339 (substitute* "src/modules/everything/evry_plug_apps.c"
340 (("/usr/bin/") ""))
341 (substitute* '("src/bin/e_sys_main.c"
342 "src/bin/e_util_suid.h")
343 (("PATH=/bin:/usr/bin:/sbin:/usr/sbin")
344 (string-append "PATH=/run/privileged/bin:"
345 "/run/current-system/profile/bin:"
346 "/run/current-system/profile/sbin")))
347 (substitute* "src/modules/everything/evry_plug_calc.c"
348 (("bc -l") (string-append bc "/bin/bc -l")))
349 (substitute* "src/bin/system/e_system_ddc.c"
350 (("libddcutil\\.so\\.?" libddcutil)
351 (string-append ddcutil "/lib/" libddcutil)))
352 (substitute* "data/etc/meson.build"
353 (("/bin/mount") "/run/privileged/bin/mount")
354 (("/bin/umount") "/run/privileged/bin/umount")
355 (("/usr/bin/eject") "/run/current-system/profile/bin/eject"))
356 (substitute* "src/bin/system/e_system_power.c"
357 (("systemctl") "loginctl"))))))))
358 (native-inputs
359 `(("gettext" ,gettext-minimal)
360 ("pkg-config" ,pkg-config)))
361 (inputs
362 `(("alsa-lib" ,alsa-lib)
363 ("bc" ,bc)
364 ("bluez" ,bluez)
365 ("dbus" ,dbus)
366 ("ddcutil" ,ddcutil)
367 ("freetype" ,freetype)
368 ("libdrm" ,libdrm)
369 ("libexif" ,libexif)
370 ("libxcb" ,libxcb)
371 ("libxext" ,libxext)
372 ("linux-pam" ,linux-pam)
373 ("pulseaudio" ,pulseaudio)
374 ("setxkbmap" ,setxkbmap)
375 ("xcb-util-keysyms" ,xcb-util-keysyms)
376 ("xkeyboard-config" ,xkeyboard-config)
377 ("xorg-server-xwayland" ,xorg-server-xwayland)))
378 (propagated-inputs
379 (list efl libxkbcommon wayland-protocols
380 ;; Default font that applications such as IceCat require.
381 font-dejavu))
382 (home-page "https://www.enlightenment.org/about-enlightenment")
383 (synopsis "Lightweight desktop environment")
384 (description
385 "Enlightenment is resource friendly desktop environment with integrated
386file manager, wide range of configuration options, plugin system allowing to
387unload unused functionality, with support for touchscreen and suitable for
388embedded systems.")
389 (license license:bsd-2)))
390
391(define-public ephoto
392 (package
393 (name "ephoto")
394 (version "1.6.0")
395 (source
396 (origin
397 (method url-fetch)
398 (uri (string-append "https://download.enlightenment.org/rel/"
399 "apps/ephoto/ephoto-" version ".tar.xz"))
400 (sha256
401 (base32 "1lvhcs4ba8h3z78nyycbww8mj4cscb8k200dcc3cdy8vrvrp7g1n"))))
402 (build-system meson-build-system)
403 (arguments
404 '(#:phases
405 (modify-phases %standard-phases
406 (add-after 'unpack 'set-home-directory
407 ;; FATAL: Cannot create run dir '/homeless-shelter/.run' - errno=2
408 (lambda _ (setenv "HOME" "/tmp"))))))
409 (native-inputs
410 (list pkg-config))
411 (inputs
412 (list efl))
413 (home-page "https://smhouston.us/projects/ephoto/")
414 (synopsis "EFL image viewer/editor/manipulator/slideshow creator")
415 (description "Ephoto is an image viewer and editor written using the
416@dfn{Enlightenment Foundation Libraries} (EFL). It focuses on simplicity and
417ease of use, while taking advantage of the speed and small footprint the EFL
418provide.
419
420Ephoto’s features include:
421@enumerate
422@item Browsing the file system and displaying images in an easy-to-use grid view.
423@item Browsing images in a single image view format.
424@item Viewing images in a slideshow.
425@item Editing your image with features such as cropping, auto enhance,
426blurring, sharpening, brightness/contrast/gamma adjustments, hue/saturation/value
427adjustments, and color level adjustment.
428@item Applying artistic filters to your image such as black and white and old
429photo.
430@item Drag And Drop along with file operations to easily maintain your photo
431directories.
432@end enumerate\n")
433 (license (list
434 license:bsd-2 ; Ephoto's thumbnailing code
435 license:bsd-3))))
436
437(define-public evisum
438 (package
439 (name "evisum")
440 (version "0.6.0")
441 (source
442 (origin
443 (method url-fetch)
444 (uri (string-append "https://download.enlightenment.org/rel/apps/"
445 "evisum/evisum-" version ".tar.xz"))
446 (sha256
447 (base32 "1ip3rmp0hcn0pk6lv089cayx18p1b2wycgvwpnf7ghbdxg7n4q15"))))
448 (build-system meson-build-system)
449 (arguments
450 '(#:tests? #f ; no tests
451 #:phases
452 (modify-phases %standard-phases
453 (add-after 'unpack 'set-homedir
454 (lambda _
455 (setenv "HOME" (getcwd)))))))
456 (native-inputs
457 (list gettext-minimal
458 pkg-config))
459 (inputs
460 (list efl))
461 (home-page "https://www.enlightenment.org")
462 (synopsis "EFL process viewer")
463 (description
464 "This is a process monitor and system monitor using the
465@dfn{Enlightenment Foundation Libraries} (EFL).")
466 (license license:bsd-2)))