diff options
author | John Kehayias <john@guixotic.coop> | 2025-07-15 11:46:27 -0400 |
---|---|---|
committer | John Kehayias <john.kehayias@protonmail.com> | 2025-07-18 00:37:44 -0400 |
commit | 5a9164f7ed6b2f61c3a052634c71be1eaf808175 (patch) | |
tree | ba924ed40034b67a51b6e97466b7a94f03127975 | |
parent | b8c13cd2c8e3fec32facdf64c57e74e1461398a7 (diff) |
nongnu: Add grayjay.grayjay
* nongnu/packages/video.scm (grayjay): New variable.
Co-authored-by: Robin Templeton <robin@guixotic.coop>
-rw-r--r-- | nongnu/packages/video.scm | 216 |
1 files changed, 215 insertions, 1 deletions
diff --git a/nongnu/packages/video.scm b/nongnu/packages/video.scm index f1badf62..12403f34 100644 --- a/nongnu/packages/video.scm +++ b/nongnu/packages/video.scm @@ -2,11 +2,33 @@ ;;; Copyright © 2022 Jelle Licht <jlicht@fsfe.org> ;;; Copyright © 2024 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2024 Murilo <murilo@disroot.org> +;;; Copyright © 2025 John Kehayias <john@guixotic.coop> +;;; Copyright © 2025 Robin Templeton <robin@guixotic.coop> (define-module (nongnu packages video) + #:use-module (gnu packages base) + #:use-module (gnu packages bash) + #:use-module (gnu packages compression) + #:use-module (gnu packages cups) + #:use-module (gnu packages databases) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages freedesktop) + #:use-module (gnu packages icu4c) + #:use-module (gnu packages gcc) #:use-module (gnu packages gl) + #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) + #:use-module (gnu packages gtk) + #:use-module (gnu packages kerberos) + #:use-module (gnu packages linux) + #:use-module (gnu packages nss) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages tls) #:use-module (gnu packages video) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xml) + #:use-module (gnu packages xorg) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system meson) @@ -17,7 +39,9 @@ #:use-module (guix utils) #:use-module ((guix licenses) #:prefix license:) #:use-module (nongnu packages chromium) - #:use-module (nongnu packages nvidia)) + #:use-module (nongnu packages nvidia) + #:use-module (nonguix build-system binary) + #:use-module ((nonguix licenses) #:prefix nonguix-license:)) (define-public ffmpeg-nvenc (package @@ -279,3 +303,193 @@ content.") (package-description obs) " This build of OBS includes embeded Chromium-based browser to enable Browser source.")))) + +(define-public grayjay + (package + (name "grayjay") + (version "8") + (source + (origin + (method url-fetch) + (uri (string-append "https://updater.grayjay.app/Apps/Grayjay.Desktop/" + version "/Grayjay.Desktop-linux-x64-v" + version ".zip")) + (file-name (string-append name "-" version "-x86_64.zip")) + (sha256 + (base32 "168p343wn33c8fjm75fz1smr3z1gw09jp7r1b7givyqkiv02pq25")))) + (supported-systems '("x86_64-linux")) + (build-system binary-build-system) + (arguments + (list #:strip-binaries? #f ; prevent corruption of .NET programs + #:patchelf-plan + #~(let ((libs '("alsa-lib" + "at-spi2-atk" + "at-spi2-core" + "atk" + "cairo" + "cups" + "dbus" + "eudev" + "expat" + "fontconfig-minimal" + "gcc" + "glib" + "glibc" + "gtk+" + "icu4c" + "libdrm" + "libnotify" + "librsvg" + "libsecret" + "libx11" + "libxcb" + "libxcomposite" + "libxcursor" + "libxdamage" + "libxext" + "libxfixes" + "libxi" + "libxkbcommon" + "libxkbfile" + "libxrandr" + "libxrender" + "libxshmfence" + "libxtst" + "mesa" + "mit-krb5" + "nspr" + ("nss" "/lib/nss") + ("out" "/lib/grayjay/cef") + "openssl" + "pango" + "pulseaudio" + "sqlcipher" + "xcb-util" + "xcb-util-image" + "xcb-util-keysyms" + "xcb-util-renderutil" + "xcb-util-wm" + "xdg-utils" + "zlib"))) + `(("ClearScriptV8.linux-x64.so" ,libs) + ("Grayjay" ,libs) + ("cef/chrome-sandbox" ,libs) + ("cef/dotcefnative" ,libs) + ;; Some of these likely are not directly used after + ;; patchelf-ing the main binaries, other than libcef.so. + ;; This allows validate-runpath to pass though. + ("cef/libEGL.so" ,libs) + ("cef/libGLESv2.so" ,libs) + ;; XXX: Can replace with chromium-embedded-framework? + ("cef/libcef.so" ,libs) + ("cef/libvk_swiftshader.so" ,libs) + ("cef/libvulkan.so.1" ,libs) + ("libe_sqlite3.so" ,libs) + ("libsodium.so" ,libs))) + #:install-plan ''(("." "lib/grayjay")) + #:phases + #~(modify-phases %standard-phases + (add-before 'install 'remove-files + (lambda _ + ;; Disable automatic updates, unbundle ffmpeg, and remove + ;; "Portable" which makes Grayjay try to (unsuccessfully) + ;; run from its installed path. (Grayjay doesn't find the + ;; updater or ffmpeg when run outside of lib/grayjay.) + (delete-file "FUTO.Updater.Client") + (delete-file "ffmpeg") + (delete-file "Portable"))) + (add-before 'install 'install-entrypoint + (lambda _ + (let* ((bin (string-append #$output "/bin"))) + (mkdir-p bin) + (symlink (string-append #$output "/lib/grayjay/Grayjay") + (string-append bin "/Grayjay"))))) + (add-before 'install 'install-icon + (lambda _ + (let ((dir (string-append + #$output + "/share/icons/hicolor/scalable/apps"))) + (mkdir-p dir) + (copy-file "grayjay.png" + (string-append dir + "/app.grayjay.Grayjay.png"))))) + (add-after 'install 'wrap-program + (lambda* (#:key inputs #:allow-other-keys) + (wrap-program (string-append #$output "/lib/grayjay/Grayjay") + `("PATH" prefix + (,(string-append #$(this-package-input "ffmpeg") + "/bin")))))) + (add-after 'install 'create-desktop-file + (lambda _ + (make-desktop-entry-file + (string-append #$output "/share/applications/Grayjay.desktop") + #:name "Grayjay" + #:type "Application" + #:exec (string-append #$output "/bin/Grayjay") + #:icon "app.grayjay.Grayjay" + #:categories '("AudioVideo" "Player") + #:startup-w-m-class "Grayjay" + #:comment "Universal media aggregator")))))) + (native-inputs (list unzip)) + (inputs (list alsa-lib + at-spi2-atk + at-spi2-core + atk + bash-minimal + cairo + cups + dbus + eudev + expat + ffmpeg + fontconfig + freetype + `(,gcc "lib") + glib + glibc + gtk+ + icu4c-76 + libdrm + libnotify + librsvg + libsecret + libx11 + libxcb + libxcomposite + libxcursor + libxdamage + libxext + libxfixes + libxi + libxkbcommon + libxkbfile + libxrandr + libxrender + libxshmfence + libxtst + mesa + mit-krb5 + nspr + nss + openssl + pango + pulseaudio + sqlcipher + xcb-util + xcb-util-image + xcb-util-keysyms + xcb-util-renderutil + xcb-util-wm + xdg-utils + zlib)) + (home-page "https://grayjay.app/") + (synopsis "Universal media aggregator") + (description "Grayjay is a media aggregator application that enables users +to stream and download multimedia content from various online sources, most +prominently YouTube. It also offers an extensible plugin API to create and +import new integrations.") + (license + ;; "Source First License 1.1" which allows distribution, modification, + ;; etc. but with a non-commercial prohibition. + (nonguix-license:nonfree + "https://gitlab.futo.org/videostreaming/grayjay/-/blob/master/LICENSE.md")))) |