summaryrefslogtreecommitdiff
path: root/nongnu/packages/electron.scm
diff options
context:
space:
mode:
Diffstat (limited to 'nongnu/packages/electron.scm')
-rw-r--r--nongnu/packages/electron.scm104
1 files changed, 104 insertions, 0 deletions
diff --git a/nongnu/packages/electron.scm b/nongnu/packages/electron.scm
new file mode 100644
index 0000000..a4a7b67
--- /dev/null
+++ b/nongnu/packages/electron.scm
@@ -0,0 +1,104 @@
+;;; SPDX-License-Identifier: GPL-3.0-or-later
+;;; Copyright © 2023 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
+;;; Copyright © 2024 Andre A. Gomes <andremegafone@gmail.com>
+;;; Copyright © 2024 Jonathan Brielmaier <jonathan.brielmaier@web.de>
+
+(define-module (nongnu packages electron)
+ #:use-module (nonguix build-system chromium-binary)
+ #:use-module ((nonguix licenses) :prefix license:)
+ #:use-module (guix download)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
+ #:use-module (ice-9 match)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages video))
+
+(define (electron-source version hash)
+ (origin
+ (method url-fetch/zipbomb)
+ (uri
+ (string-append
+ "https://github.com/electron/electron/releases/download/v"
+ version "/electron-v" version "-"
+ (match (or (%current-system) (%current-target-system))
+ ("x86_64-linux" "linux-x64")
+ ("i686-linux" "linux-ia32")
+ ("aarch64-linux" "linux-arm64")
+ ("armhf-linux" "linux-armv7l"))
+ ".zip"))
+ (sha256 (base32 hash))))
+
+(define-public electron-27
+ (package
+ (name "electron")
+ (version "27.3.6")
+ (source (electron-source version
+ "12hjn1bfk8c25f54kk561mkjl7hsk8b16rj7a7gczswjdpx6fpi0"))
+ (build-system chromium-binary-build-system)
+ (arguments
+ `(#:wrapper-plan
+ `("electron"
+ "libffmpeg.so"
+ "libGLESv2.so"
+ "libEGL.so")
+ #:install-plan
+ `(("." "share/electron/" #:include
+ ("electron"
+ "chrome-sandbox"
+ "chrome_100_percent.pak"
+ "chrome_200_percent.pak"
+ "chrome_crashpad_handler"
+ "icudtl.dat"
+ "resources.pak"
+ "v8_context_snapshot.bin"
+ "version"
+ "libffmpeg.so"
+ ;; electron seems to force-load these from its directory.
+ "libEGL.so"
+ "libGLESv2.so"))
+ ("resources" "share/electron/")
+ ("locales" "share/electron/"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'install-wrapper 'wrap-where-patchelf-does-not-work
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/share/electron/electron"))
+ (wrapper (string-append out "/bin/electron")))
+ (mkdir-p (dirname wrapper))
+ (make-wrapper wrapper bin
+ `("LD_LIBRARY_PATH" ":"
+ prefix
+ (,(string-join
+ (list
+ (string-append out "/share/electron"))
+ ":")))))
+ #t)))))
+ (native-inputs `(("unzip" ,unzip)))
+ (inputs `(("gdk-pixbuf" ,gdk-pixbuf)
+ ("ffmpeg" ,ffmpeg)))
+ (home-page "https://www.electronjs.org/")
+ (synopsis "Cross platform desktop application shell")
+ (description "The Electron framework lets you write cross-platform desktop
+applications using JavaScript, HTML and CSS. It is based on Node.js and
+Chromium and is used by the Atom editor and many other apps.")
+ (license (license:nonfree
+ (string-append "https://github.com/electron/electron/blob/v"
+ version "/LICENSE")))))
+
+(define-public electron electron-27)
+
+(define-public electron-28
+ (package
+ (inherit electron-27)
+ (version "28.2.7")
+ (source (electron-source version
+ "0sw8nn1jr9x0p4s2g5yp5lrpy8mzq0sjd099x7axbg6cm1c80iff"))))
+(define-public electron-29
+ (package
+ (inherit electron-27)
+ (version "29.1.4")
+ (source (electron-source version
+ "1d96nhx9j9mzc3q3ald1imqdxdgq9by1qm4q703sjy3knq1p38w3"))))