summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHilton Chain <hako@ultrarare.space>2026-04-13 16:54:27 +0800
committerHilton Chain <hako@ultrarare.space>2026-04-16 23:01:33 +0800
commit3af03293acbab1f7b5b7e1c3285bf9e4c3e97236 (patch)
treeda879e925557f986d8452b751887a3ab3add3d92
parent4f0a0c8956cba9f103071d3552f25f2e15e06612 (diff)
nongnu: ffmpeg/nvidia: Expose variants in command-line interface.
* nongnu/packages/nvidia.scm (define-ffmpeg-nvidia): New macro. (ffmpeg/nvidia-390, ffmpeg/nvidia-470, ffmpeg/nvidia-580, ffmpeg/nvidia-590) (ffmpeg/nvidia-595, ffmpeg/nvidia-beta, ffmpeg-6/nvidia-390) (ffmpeg-6/nvidia-470, ffmpeg-6/nvidia-580, ffmpeg-6/nvidia-590) (ffmpeg-6/nvidia-595, ffmpeg-6/nvidia-beta): Define using it. (ffmpeg/nvidia): Alias to ffmpeg/nvidia-580. (ffmpeg-6/nvidia): Alias to ffmpeg-6/nvidia-580. (ffmpeg-nvidia-user-alias-390, ffmpeg-nvidia-user-alias-470) (ffmpeg-nvidia-user-alias-580, ffmpeg-nvidia-user-alias-590) (ffmpeg-nvidia-user-alias-595, ffmpeg-nvidia-user-alias-beta) (ffmpeg-6-nvidia-user-alias-390, ffmpeg-6-nvidia-user-alias-470) (ffmpeg-6-nvidia-user-alias-580, ffmpeg-6-nvidia-user-alias-590) (ffmpeg-6-nvidia-user-alias-595, ffmpeg-6-nvidia-user-alias-beta): New variables. * README.org (Package variants for NVIDIA proprietary driver): Update.
-rw-r--r--README.org32
-rw-r--r--nongnu/packages/nvidia.scm145
2 files changed, 90 insertions, 87 deletions
diff --git a/README.org b/README.org
index bff334d..e6918cc 100644
--- a/README.org
+++ b/README.org
@@ -471,8 +471,20 @@ of the normal one. Aforementioned application setup is still necessary.
471- mpv-nvidia 471- mpv-nvidia
472- obs-nvidia 472- obs-nvidia
473 473
474Container packages must be built for the specific driver version, so they have 474| Variable | Specification |
475more variants: 475|----------------------+----------------------|
476| ffmpeg/nvidia-beta | ffmpeg-nvidia-beta |
477| ffmpeg/nvidia-595 | ffmpeg-nvidia@595 |
478| ffmpeg/nvidia-590 | ffmpeg-nvidia@590 |
479| ffmpeg/nvidia-580 | ffmpeg-nvidia@580 |
480| ffmpeg/nvidia-470 | ffmpeg-nvidia@470 |
481| ffmpeg/nvidia-390 | ffmpeg-nvidia@390 |
482| ffmpeg-6/nvidia-beta | ffmpeg-6-nvidia-beta |
483| ffmpeg-6/nvidia-595 | ffmpeg-6-nvidia@595 |
484| ffmpeg-6/nvidia-590 | ffmpeg-6-nvidia@590 |
485| ffmpeg-6/nvidia-580 | ffmpeg-6-nvidia@580 |
486| ffmpeg-6/nvidia-470 | ffmpeg-6-nvidia@470 |
487| ffmpeg-6/nvidia-390 | ffmpeg-6-nvidia@390 |
476 488
477| Variable | Specification | 489| Variable | Specification |
478|--------------------+--------------------| 490|--------------------+--------------------|
@@ -492,22 +504,6 @@ more variants:
492| steam-nvidia-470 | steam-nvidia@470 | 504| steam-nvidia-470 | steam-nvidia@470 |
493| steam-nvidia-390 | steam-nvidia@390 | 505| steam-nvidia-390 | steam-nvidia@390 |
494 506
495Since ffmpeg has multiple versions itself already, its variants are only
496available to the programming interface:
497
498- ffmpeg/nvidia-390
499- ffmpeg/nvidia-470
500- ffmpeg/nvidia-580
501- ffmpeg/nvidia-590
502- ffmpeg/nvidia-595
503- ffmpeg/nvidia-beta
504- ffmpeg-6/nvidia-390
505- ffmpeg-6/nvidia-470
506- ffmpeg-6/nvidia-580
507- ffmpeg-6/nvidia-590
508- ffmpeg-6/nvidia-595
509- ffmpeg-6/nvidia-beta
510
511** Substitutes for nonguix 507** Substitutes for nonguix
512 508
513A Nonguix substitute server is available at [[https://substitutes.nonguix.org]]. 509A Nonguix substitute server is available at [[https://substitutes.nonguix.org]].
diff --git a/nongnu/packages/nvidia.scm b/nongnu/packages/nvidia.scm
index be59ec4..72b32c7 100644
--- a/nongnu/packages/nvidia.scm
+++ b/nongnu/packages/nvidia.scm
@@ -1641,76 +1641,83 @@ support. For dependency of other packages, use @code{nvidia-driver} instead.")
1641 heroic-nvidia-beta 1641 heroic-nvidia-beta
1642 (package-version nvidia-driver-beta)) 1642 (package-version nvidia-driver-beta))
1643 1643
1644(define-public ffmpeg/nvidia 1644(define-syntax define-ffmpeg-nvidia
1645 (hidden-package 1645 (syntax-rules ()
1646 (package 1646 ((_ name ffmpeg driver)
1647 (inherit ffmpeg) 1647 (define-public name
1648 (name "ffmpeg-nvidia") 1648 (hidden-package
1649 (inputs 1649 ((replace-nvidia-driver driver)
1650 (modify-inputs inputs 1650 (package
1651 (prepend nv-codec-headers))) 1651 (inherit ffmpeg)
1652 (arguments 1652 (inputs
1653 (substitute-keyword-arguments arguments 1653 (modify-inputs inputs
1654 ((#:configure-flags flags) 1654 (prepend nv-codec-headers)))
1655 ;; Currently only interested in NVENC. 1655 (arguments
1656 ;; Might be better to make a ffmpeg-nonfree with all nonfree codecs 1656 (substitute-keyword-arguments arguments
1657 ;; in the future. 1657 ((#:configure-flags flags)
1658 #~(cons* "--enable-cuvid" 1658 #~(cons* "--enable-cuvid"
1659 "--enable-ffnvcodec" 1659 "--enable-ffnvcodec"
1660 "--enable-encoder=hevc_nvenc" 1660 "--enable-encoder=hevc_nvenc"
1661 "--enable-encoder=h264_nvenc" 1661 "--enable-encoder=h264_nvenc"
1662 #$flags)))) 1662 #$flags)))))))))
1663 (description 1663 ((_ name alias ffmpeg-nvidia alias-version)
1664 (string-append 1664 (define-public name
1665 (package-description ffmpeg) 1665 (package
1666 " This build of FFmpeg includes the nonfree NVIDIA encoder for 1666 (inherit (package-with-alias alias ffmpeg-nvidia))
1667@code{h264_nvenc} and @code{hevc_nvenc} hardware encoding on NVIDIA GPUs."))))) 1667 (version alias-version))))))
1668
1669(define-public ffmpeg-6/nvidia
1670 (hidden-package
1671 (package
1672 (inherit ffmpeg-6)
1673 (inputs
1674 (modify-inputs inputs
1675 (prepend nv-codec-headers)))
1676 (arguments
1677 (substitute-keyword-arguments arguments
1678 ((#:configure-flags flags)
1679 ;; Currently only interested in NVENC.
1680 ;; Might be better to make a ffmpeg-nonfree with all nonfree codecs
1681 ;; in the future.
1682 #~(cons* "--enable-cuvid"
1683 "--enable-ffnvcodec"
1684 "--enable-encoder=hevc_nvenc"
1685 "--enable-encoder=h264_nvenc"
1686 #$flags))))
1687 (description (package-description ffmpeg/nvidia)))))
1688
1689(define-public ffmpeg/nvidia-390
1690 ((replace-nvidia-driver nvda-390) ffmpeg/nvidia))
1691(define-public ffmpeg/nvidia-470
1692 ((replace-nvidia-driver nvda-470) ffmpeg/nvidia))
1693(define-public ffmpeg/nvidia-580
1694 ((replace-nvidia-driver nvda-580) ffmpeg/nvidia))
1695(define-public ffmpeg/nvidia-590
1696 ((replace-nvidia-driver nvda-590) ffmpeg/nvidia))
1697(define-public ffmpeg/nvidia-595
1698 ((replace-nvidia-driver nvda-595) ffmpeg/nvidia))
1699(define-public ffmpeg/nvidia-beta
1700 ((replace-nvidia-driver nvda-beta) ffmpeg/nvidia))
1701(define-public ffmpeg-6/nvidia-390
1702 ((replace-nvidia-driver nvda-390) ffmpeg/nvidia))
1703(define-public ffmpeg-6/nvidia-470
1704 ((replace-nvidia-driver nvda-470) ffmpeg/nvidia))
1705(define-public ffmpeg-6/nvidia-580
1706 ((replace-nvidia-driver nvda-580) ffmpeg/nvidia))
1707(define-public ffmpeg-6/nvidia-590
1708 ((replace-nvidia-driver nvda-590) ffmpeg/nvidia))
1709(define-public ffmpeg-6/nvidia-595
1710 ((replace-nvidia-driver nvda-595) ffmpeg/nvidia))
1711(define-public ffmpeg-6/nvidia-beta
1712 ((replace-nvidia-driver nvda-beta) ffmpeg/nvidia))
1713 1668
1669(define-ffmpeg-nvidia ffmpeg/nvidia-390 ffmpeg nvda-390)
1670(define-ffmpeg-nvidia ffmpeg/nvidia-470 ffmpeg nvda-470)
1671(define-ffmpeg-nvidia ffmpeg/nvidia-580 ffmpeg nvda-580)
1672(define-ffmpeg-nvidia ffmpeg/nvidia-590 ffmpeg nvda-590)
1673(define-ffmpeg-nvidia ffmpeg/nvidia-595 ffmpeg nvda-595)
1674(define-ffmpeg-nvidia ffmpeg/nvidia-beta ffmpeg nvda-beta)
1675(define-public ffmpeg/nvidia ffmpeg/nvidia-580)
1676
1677(define-ffmpeg-nvidia ffmpeg-6/nvidia-390 ffmpeg-6 nvda-390)
1678(define-ffmpeg-nvidia ffmpeg-6/nvidia-470 ffmpeg-6 nvda-470)
1679(define-ffmpeg-nvidia ffmpeg-6/nvidia-580 ffmpeg-6 nvda-580)
1680(define-ffmpeg-nvidia ffmpeg-6/nvidia-590 ffmpeg-6 nvda-590)
1681(define-ffmpeg-nvidia ffmpeg-6/nvidia-595 ffmpeg-6 nvda-595)
1682(define-ffmpeg-nvidia ffmpeg-6/nvidia-beta ffmpeg-6 nvda-beta)
1683(define-public ffmpeg-6/nvidia ffmpeg-6/nvidia-580)
1684
1685(define-ffmpeg-nvidia ffmpeg-nvidia-user-alias-390 "ffmpeg-nvidia"
1686 ffmpeg/nvidia-390
1687 (package-version nvidia-driver-390))
1688(define-ffmpeg-nvidia ffmpeg-nvidia-user-alias-470 "ffmpeg-nvidia"
1689 ffmpeg/nvidia-470
1690 (package-version nvidia-driver-470))
1691(define-ffmpeg-nvidia ffmpeg-nvidia-user-alias-580 "ffmpeg-nvidia"
1692 ffmpeg/nvidia-580
1693 (package-version nvidia-driver-580))
1694(define-ffmpeg-nvidia ffmpeg-nvidia-user-alias-590 "ffmpeg-nvidia"
1695 ffmpeg/nvidia-590
1696 (package-version nvidia-driver-590))
1697(define-ffmpeg-nvidia ffmpeg-nvidia-user-alias-595 "ffmpeg-nvidia"
1698 ffmpeg/nvidia-595
1699 (package-version nvidia-driver-595))
1700(define-ffmpeg-nvidia ffmpeg-nvidia-user-alias-beta "ffmpeg-nvidia-beta"
1701 ffmpeg/nvidia-beta
1702 (package-version nvidia-driver-beta))
1703(define-ffmpeg-nvidia ffmpeg-6-nvidia-user-alias-390 "ffmpeg-6-nvidia"
1704 ffmpeg-6/nvidia-390
1705 (package-version nvidia-driver-390))
1706(define-ffmpeg-nvidia ffmpeg-6-nvidia-user-alias-470 "ffmpeg-6-nvidia"
1707 ffmpeg-6/nvidia-470
1708 (package-version nvidia-driver-470))
1709(define-ffmpeg-nvidia ffmpeg-6-nvidia-user-alias-580 "ffmpeg-6-nvidia"
1710 ffmpeg-6/nvidia-580
1711 (package-version nvidia-driver-580))
1712(define-ffmpeg-nvidia ffmpeg-6-nvidia-user-alias-590 "ffmpeg-6-nvidia"
1713 ffmpeg-6/nvidia-590
1714 (package-version nvidia-driver-590))
1715(define-ffmpeg-nvidia ffmpeg-6-nvidia-user-alias-595 "ffmpeg-6-nvidia"
1716 ffmpeg-6/nvidia-595
1717 (package-version nvidia-driver-595))
1718(define-ffmpeg-nvidia ffmpeg-6-nvidia-user-alias-beta "ffmpeg-6-nvidia-beta"
1719 ffmpeg-6/nvidia-beta
1720 (package-version nvidia-driver-beta))
1714 1721
1715(define* (replace-mesa obj #:key (driver nvda)) 1722(define* (replace-mesa obj #:key (driver nvda))
1716 (let ((rebuild (replace-nvidia-driver driver))) 1723 (let ((rebuild (replace-nvidia-driver driver)))