summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nongnu/packages/video.scm216
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"))))