diff options
| author | Hilton Chain <hako@ultrarare.space> | 2026-04-13 16:54:27 +0800 |
|---|---|---|
| committer | Hilton Chain <hako@ultrarare.space> | 2026-04-16 23:01:33 +0800 |
| commit | 3af03293acbab1f7b5b7e1c3285bf9e4c3e97236 (patch) | |
| tree | da879e925557f986d8452b751887a3ab3add3d92 | |
| parent | 4f0a0c8956cba9f103071d3552f25f2e15e06612 (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.org | 32 | ||||
| -rw-r--r-- | nongnu/packages/nvidia.scm | 145 |
2 files changed, 90 insertions, 87 deletions
| @@ -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 | ||
| 474 | Container packages must be built for the specific driver version, so they have | 474 | | Variable | Specification | |
| 475 | more 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 | ||
| 495 | Since ffmpeg has multiple versions itself already, its variants are only | ||
| 496 | available 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 | ||
| 513 | A Nonguix substitute server is available at [[https://substitutes.nonguix.org]]. | 509 | A 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))) |
