summaryrefslogtreecommitdiff
path: root/nongnu/packages/video.scm
diff options
context:
space:
mode:
Diffstat (limited to 'nongnu/packages/video.scm')
-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 f1badf6..12403f3 100644
--- a/nongnu/packages/video.scm
+++ b/nongnu/packages/video.scm
@@ -2,11 +2,33 @@
2;;; Copyright © 2022 Jelle Licht <jlicht@fsfe.org> 2;;; Copyright © 2022 Jelle Licht <jlicht@fsfe.org>
3;;; Copyright © 2024 Oleg Pykhalov <go.wigust@gmail.com> 3;;; Copyright © 2024 Oleg Pykhalov <go.wigust@gmail.com>
4;;; Copyright © 2024 Murilo <murilo@disroot.org> 4;;; Copyright © 2024 Murilo <murilo@disroot.org>
5;;; Copyright © 2025 John Kehayias <john@guixotic.coop>
6;;; Copyright © 2025 Robin Templeton <robin@guixotic.coop>
5 7
6(define-module (nongnu packages video) 8(define-module (nongnu packages video)
9 #:use-module (gnu packages base)
10 #:use-module (gnu packages bash)
11 #:use-module (gnu packages compression)
12 #:use-module (gnu packages cups)
13 #:use-module (gnu packages databases)
14 #:use-module (gnu packages fontutils)
15 #:use-module (gnu packages freedesktop)
16 #:use-module (gnu packages icu4c)
17 #:use-module (gnu packages gcc)
7 #:use-module (gnu packages gl) 18 #:use-module (gnu packages gl)
19 #:use-module (gnu packages glib)
20 #:use-module (gnu packages gnome)
21 #:use-module (gnu packages gtk)
22 #:use-module (gnu packages kerberos)
23 #:use-module (gnu packages linux)
24 #:use-module (gnu packages nss)
8 #:use-module (gnu packages pkg-config) 25 #:use-module (gnu packages pkg-config)
26 #:use-module (gnu packages pulseaudio)
27 #:use-module (gnu packages tls)
9 #:use-module (gnu packages video) 28 #:use-module (gnu packages video)
29 #:use-module (gnu packages xdisorg)
30 #:use-module (gnu packages xml)
31 #:use-module (gnu packages xorg)
10 #:use-module (guix build-system cmake) 32 #:use-module (guix build-system cmake)
11 #:use-module (guix build-system gnu) 33 #:use-module (guix build-system gnu)
12 #:use-module (guix build-system meson) 34 #:use-module (guix build-system meson)
@@ -17,7 +39,9 @@
17 #:use-module (guix utils) 39 #:use-module (guix utils)
18 #:use-module ((guix licenses) #:prefix license:) 40 #:use-module ((guix licenses) #:prefix license:)
19 #:use-module (nongnu packages chromium) 41 #:use-module (nongnu packages chromium)
20 #:use-module (nongnu packages nvidia)) 42 #:use-module (nongnu packages nvidia)
43 #:use-module (nonguix build-system binary)
44 #:use-module ((nonguix licenses) #:prefix nonguix-license:))
21 45
22(define-public ffmpeg-nvenc 46(define-public ffmpeg-nvenc
23 (package 47 (package
@@ -279,3 +303,193 @@ content.")
279 (package-description obs) 303 (package-description obs)
280 " This build of OBS includes embeded Chromium-based browser to enable 304 " This build of OBS includes embeded Chromium-based browser to enable
281Browser source.")))) 305Browser source."))))
306
307(define-public grayjay
308 (package
309 (name "grayjay")
310 (version "8")
311 (source
312 (origin
313 (method url-fetch)
314 (uri (string-append "https://updater.grayjay.app/Apps/Grayjay.Desktop/"
315 version "/Grayjay.Desktop-linux-x64-v"
316 version ".zip"))
317 (file-name (string-append name "-" version "-x86_64.zip"))
318 (sha256
319 (base32 "168p343wn33c8fjm75fz1smr3z1gw09jp7r1b7givyqkiv02pq25"))))
320 (supported-systems '("x86_64-linux"))
321 (build-system binary-build-system)
322 (arguments
323 (list #:strip-binaries? #f ; prevent corruption of .NET programs
324 #:patchelf-plan
325 #~(let ((libs '("alsa-lib"
326 "at-spi2-atk"
327 "at-spi2-core"
328 "atk"
329 "cairo"
330 "cups"
331 "dbus"
332 "eudev"
333 "expat"
334 "fontconfig-minimal"
335 "gcc"
336 "glib"
337 "glibc"
338 "gtk+"
339 "icu4c"
340 "libdrm"
341 "libnotify"
342 "librsvg"
343 "libsecret"
344 "libx11"
345 "libxcb"
346 "libxcomposite"
347 "libxcursor"
348 "libxdamage"
349 "libxext"
350 "libxfixes"
351 "libxi"
352 "libxkbcommon"
353 "libxkbfile"
354 "libxrandr"
355 "libxrender"
356 "libxshmfence"
357 "libxtst"
358 "mesa"
359 "mit-krb5"
360 "nspr"
361 ("nss" "/lib/nss")
362 ("out" "/lib/grayjay/cef")
363 "openssl"
364 "pango"
365 "pulseaudio"
366 "sqlcipher"
367 "xcb-util"
368 "xcb-util-image"
369 "xcb-util-keysyms"
370 "xcb-util-renderutil"
371 "xcb-util-wm"
372 "xdg-utils"
373 "zlib")))
374 `(("ClearScriptV8.linux-x64.so" ,libs)
375 ("Grayjay" ,libs)
376 ("cef/chrome-sandbox" ,libs)
377 ("cef/dotcefnative" ,libs)
378 ;; Some of these likely are not directly used after
379 ;; patchelf-ing the main binaries, other than libcef.so.
380 ;; This allows validate-runpath to pass though.
381 ("cef/libEGL.so" ,libs)
382 ("cef/libGLESv2.so" ,libs)
383 ;; XXX: Can replace with chromium-embedded-framework?
384 ("cef/libcef.so" ,libs)
385 ("cef/libvk_swiftshader.so" ,libs)
386 ("cef/libvulkan.so.1" ,libs)
387 ("libe_sqlite3.so" ,libs)
388 ("libsodium.so" ,libs)))
389 #:install-plan ''(("." "lib/grayjay"))
390 #:phases
391 #~(modify-phases %standard-phases
392 (add-before 'install 'remove-files
393 (lambda _
394 ;; Disable automatic updates, unbundle ffmpeg, and remove
395 ;; "Portable" which makes Grayjay try to (unsuccessfully)
396 ;; run from its installed path. (Grayjay doesn't find the
397 ;; updater or ffmpeg when run outside of lib/grayjay.)
398 (delete-file "FUTO.Updater.Client")
399 (delete-file "ffmpeg")
400 (delete-file "Portable")))
401 (add-before 'install 'install-entrypoint
402 (lambda _
403 (let* ((bin (string-append #$output "/bin")))
404 (mkdir-p bin)
405 (symlink (string-append #$output "/lib/grayjay/Grayjay")
406 (string-append bin "/Grayjay")))))
407 (add-before 'install 'install-icon
408 (lambda _
409 (let ((dir (string-append
410 #$output
411 "/share/icons/hicolor/scalable/apps")))
412 (mkdir-p dir)
413 (copy-file "grayjay.png"
414 (string-append dir
415 "/app.grayjay.Grayjay.png")))))
416 (add-after 'install 'wrap-program
417 (lambda* (#:key inputs #:allow-other-keys)
418 (wrap-program (string-append #$output "/lib/grayjay/Grayjay")
419 `("PATH" prefix
420 (,(string-append #$(this-package-input "ffmpeg")
421 "/bin"))))))
422 (add-after 'install 'create-desktop-file
423 (lambda _
424 (make-desktop-entry-file
425 (string-append #$output "/share/applications/Grayjay.desktop")
426 #:name "Grayjay"
427 #:type "Application"
428 #:exec (string-append #$output "/bin/Grayjay")
429 #:icon "app.grayjay.Grayjay"
430 #:categories '("AudioVideo" "Player")
431 #:startup-w-m-class "Grayjay"
432 #:comment "Universal media aggregator"))))))
433 (native-inputs (list unzip))
434 (inputs (list alsa-lib
435 at-spi2-atk
436 at-spi2-core
437 atk
438 bash-minimal
439 cairo
440 cups
441 dbus
442 eudev
443 expat
444 ffmpeg
445 fontconfig
446 freetype
447 `(,gcc "lib")
448 glib
449 glibc
450 gtk+
451 icu4c-76
452 libdrm
453 libnotify
454 librsvg
455 libsecret
456 libx11
457 libxcb
458 libxcomposite
459 libxcursor
460 libxdamage
461 libxext
462 libxfixes
463 libxi
464 libxkbcommon
465 libxkbfile
466 libxrandr
467 libxrender
468 libxshmfence
469 libxtst
470 mesa
471 mit-krb5
472 nspr
473 nss
474 openssl
475 pango
476 pulseaudio
477 sqlcipher
478 xcb-util
479 xcb-util-image
480 xcb-util-keysyms
481 xcb-util-renderutil
482 xcb-util-wm
483 xdg-utils
484 zlib))
485 (home-page "https://grayjay.app/")
486 (synopsis "Universal media aggregator")
487 (description "Grayjay is a media aggregator application that enables users
488to stream and download multimedia content from various online sources, most
489prominently YouTube. It also offers an extensible plugin API to create and
490import new integrations.")
491 (license
492 ;; "Source First License 1.1" which allows distribution, modification,
493 ;; etc. but with a non-commercial prohibition.
494 (nonguix-license:nonfree
495 "https://gitlab.futo.org/videostreaming/grayjay/-/blob/master/LICENSE.md"))))