mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-11 21:06:19 +03:00
Merge pull request #325811 from Naxdy/work/blackmagic
This commit is contained in:
commit
99fe5240da
7 changed files with 181 additions and 2 deletions
18
nixos/modules/hardware/decklink.nix
Normal file
18
nixos/modules/hardware/decklink.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.hardware.decklink;
|
||||||
|
kernelPackages = config.boot.kernelPackages;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.hardware.decklink.enable = lib.mkEnableOption "hardware support for the Blackmagic Design Decklink audio/video interfaces";
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# snd_blackmagic-io can cause issues with pipewire,
|
||||||
|
# so we do not enable it by default
|
||||||
|
boot.kernelModules = [ "blackmagic" "blackmagic-io" ];
|
||||||
|
boot.extraModulePackages = [ kernelPackages.decklink ];
|
||||||
|
systemd.packages = [ pkgs.blackmagic-desktop-video ];
|
||||||
|
systemd.services.DesktopVideoHelper.wantedBy = [ "multi-user.target" ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -59,6 +59,7 @@
|
||||||
./hardware/cpu/intel-microcode.nix
|
./hardware/cpu/intel-microcode.nix
|
||||||
./hardware/cpu/intel-sgx.nix
|
./hardware/cpu/intel-sgx.nix
|
||||||
./hardware/cpu/x86-msr.nix
|
./hardware/cpu/x86-msr.nix
|
||||||
|
./hardware/decklink.nix
|
||||||
./hardware/device-tree.nix
|
./hardware/device-tree.nix
|
||||||
./hardware/digitalbitbox.nix
|
./hardware/digitalbitbox.nix
|
||||||
./hardware/flipperzero.nix
|
./hardware/flipperzero.nix
|
||||||
|
|
|
@ -48,6 +48,8 @@
|
||||||
, nlohmann_json
|
, nlohmann_json
|
||||||
, websocketpp
|
, websocketpp
|
||||||
, asio
|
, asio
|
||||||
|
, decklinkSupport ? false
|
||||||
|
, blackmagic-desktop-video
|
||||||
, libdatachannel
|
, libdatachannel
|
||||||
, libvpl
|
, libvpl
|
||||||
, qrcodegencpp
|
, qrcodegencpp
|
||||||
|
@ -165,6 +167,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
xorg.libX11
|
xorg.libX11
|
||||||
libvlc
|
libvlc
|
||||||
libGL
|
libGL
|
||||||
|
] ++ optionals decklinkSupport [
|
||||||
|
blackmagic-desktop-video
|
||||||
];
|
];
|
||||||
in ''
|
in ''
|
||||||
# Remove libcef before patchelf, otherwise it will fail
|
# Remove libcef before patchelf, otherwise it will fail
|
||||||
|
|
108
pkgs/by-name/bl/blackmagic-desktop-video/package.nix
Normal file
108
pkgs/by-name/bl/blackmagic-desktop-video/package.nix
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
{ stdenv
|
||||||
|
, cacert
|
||||||
|
, curl
|
||||||
|
, runCommandLocal
|
||||||
|
, lib
|
||||||
|
, autoPatchelfHook
|
||||||
|
, libcxx
|
||||||
|
, libGL
|
||||||
|
, gcc7
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "blackmagic-desktop-video";
|
||||||
|
version = "14.0.1a2";
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
autoPatchelfHook
|
||||||
|
libcxx
|
||||||
|
libGL
|
||||||
|
gcc7.cc.lib
|
||||||
|
];
|
||||||
|
|
||||||
|
# yes, the below download function is an absolute mess.
|
||||||
|
# blame blackmagicdesign.
|
||||||
|
src =
|
||||||
|
let
|
||||||
|
# from the URL that the POST happens to, see browser console
|
||||||
|
DOWNLOADID = "d73a63095b6a4a189916fb2baa5a0ef3";
|
||||||
|
in
|
||||||
|
runCommandLocal "${finalAttrs.pname}-${lib.versions.majorMinor finalAttrs.version}-src.tar.gz"
|
||||||
|
{
|
||||||
|
outputHashMode = "recursive";
|
||||||
|
outputHashAlgo = "sha256";
|
||||||
|
outputHash = "sha256-jkKzUqfirvsVIefjWLx4NlqznXanWDtvhTsIThWFTo4=";
|
||||||
|
|
||||||
|
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ curl ];
|
||||||
|
|
||||||
|
# ENV VARS
|
||||||
|
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
|
||||||
|
|
||||||
|
inherit DOWNLOADID;
|
||||||
|
# from the URL the download page where you click the "only download" button is at
|
||||||
|
REFERID = "76801bc1d84147da9cb1a16e663ac33e";
|
||||||
|
SITEURL = "https://www.blackmagicdesign.com/api/register/us/download/${DOWNLOADID}";
|
||||||
|
|
||||||
|
USERAGENT = builtins.concatStringsSep " " [
|
||||||
|
"User-Agent: Mozilla/5.0 (X11; Linux ${stdenv.hostPlatform.linuxArch})"
|
||||||
|
"AppleWebKit/537.36 (KHTML, like Gecko)"
|
||||||
|
"Chrome/77.0.3865.75"
|
||||||
|
"Safari/537.36"
|
||||||
|
];
|
||||||
|
|
||||||
|
REQJSON = builtins.toJSON {
|
||||||
|
"country" = "nl";
|
||||||
|
"downloadOnly" = true;
|
||||||
|
"platform" = "Linux";
|
||||||
|
"policy" = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
} ''
|
||||||
|
RESOLVEURL=$(curl \
|
||||||
|
-s \
|
||||||
|
-H "$USERAGENT" \
|
||||||
|
-H 'Content-Type: application/json;charset=UTF-8' \
|
||||||
|
-H "Referer: https://www.blackmagicdesign.com/support/download/$REFERID/Linux" \
|
||||||
|
--data-ascii "$REQJSON" \
|
||||||
|
--compressed \
|
||||||
|
"$SITEURL")
|
||||||
|
curl \
|
||||||
|
--retry 3 --retry-delay 3 \
|
||||||
|
--compressed \
|
||||||
|
"$RESOLVEURL" \
|
||||||
|
> $out
|
||||||
|
'';
|
||||||
|
|
||||||
|
postUnpack =
|
||||||
|
let
|
||||||
|
arch = stdenv.hostPlatform.uname.processor;
|
||||||
|
in
|
||||||
|
''
|
||||||
|
tar xf Blackmagic_Desktop_Video_Linux_${lib.head (lib.splitString "a" finalAttrs.version)}/other/${arch}/desktopvideo-${finalAttrs.version}-${arch}.tar.gz
|
||||||
|
unpacked=$NIX_BUILD_TOP/desktopvideo-${finalAttrs.version}-${stdenv.hostPlatform.uname.processor}
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
mkdir -p $out/{bin,share/doc,lib/systemd/system}
|
||||||
|
cp -r $unpacked/usr/share/doc/desktopvideo $out/share/doc
|
||||||
|
cp $unpacked/usr/lib/*.so $out/lib
|
||||||
|
cp $unpacked/usr/lib/systemd/system/DesktopVideoHelper.service $out/lib/systemd/system
|
||||||
|
cp $unpacked/usr/lib/blackmagic/DesktopVideo/DesktopVideoHelper $out/bin/
|
||||||
|
substituteInPlace $out/lib/systemd/system/DesktopVideoHelper.service \
|
||||||
|
--replace-fail "/usr/lib/blackmagic/DesktopVideo/DesktopVideoHelper" "$out/bin/DesktopVideoHelper"
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
# need to tell the DesktopVideoHelper where to find its own library
|
||||||
|
appendRunpaths = [ "${placeholder "out"}/lib" ];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
homepage = "https://www.blackmagicdesign.com/support/family/capture-and-playback";
|
||||||
|
maintainers = [ maintainers.naxdy ];
|
||||||
|
license = licenses.unfree;
|
||||||
|
description = "Supporting applications for Blackmagic Decklink. Doesn't include the desktop applications, only the helper required to make the driver work";
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
})
|
49
pkgs/os-specific/linux/decklink/default.nix
Normal file
49
pkgs/os-specific/linux/decklink/default.nix
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
{ stdenv
|
||||||
|
, lib
|
||||||
|
, blackmagic-desktop-video
|
||||||
|
, kernel
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "decklink";
|
||||||
|
|
||||||
|
# the download is a horrible curl mess. we reuse it between the kernel module
|
||||||
|
# and desktop service, since the version of the two have to match anyways.
|
||||||
|
# See pkgs/by-name/bl/blackmagic-desktop-video/package.nix for more.
|
||||||
|
inherit (blackmagic-desktop-video) src version;
|
||||||
|
|
||||||
|
KERNELDIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
|
||||||
|
INSTALL_MOD_PATH = placeholder "out";
|
||||||
|
|
||||||
|
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||||
|
|
||||||
|
postUnpack = let
|
||||||
|
arch = stdenv.hostPlatform.uname.processor;
|
||||||
|
in ''
|
||||||
|
tar xf Blackmagic_Desktop_Video_Linux_${lib.head (lib.splitString "a" finalAttrs.version)}/other/${arch}/desktopvideo-${finalAttrs.version}-${arch}.tar.gz
|
||||||
|
moduleRoot=$NIX_BUILD_TOP/desktopvideo-${finalAttrs.version}-${stdenv.hostPlatform.uname.processor}/usr/src
|
||||||
|
sourceRoot=$moduleRoot
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
make -C $moduleRoot/blackmagic-${finalAttrs.version} -j$NIX_BUILD_CORES
|
||||||
|
make -C $moduleRoot/blackmagic-io-${finalAttrs.version} -j$NIX_BUILD_CORES
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
make -C $KERNELDIR M=$moduleRoot/blackmagic-${finalAttrs.version} modules_install
|
||||||
|
make -C $KERNELDIR M=$moduleRoot/blackmagic-io-${finalAttrs.version} modules_install
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
homepage = "https://www.blackmagicdesign.com/support/family/capture-and-playback";
|
||||||
|
maintainers = [ maintainers.naxdy ];
|
||||||
|
license = licenses.unfree;
|
||||||
|
description = "Kernel module for the Blackmagic Design Decklink cards";
|
||||||
|
sourceProvenance = with lib.sourceTypes; [ binaryFirmware ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
})
|
|
@ -140,7 +140,6 @@ mapAliases ({
|
||||||
bitwarden = bitwarden-desktop; # Added 2024-02-25
|
bitwarden = bitwarden-desktop; # Added 2024-02-25
|
||||||
bitwig-studio1 = throw "bitwig-studio1 has been removed, you can upgrade to 'bitwig-studio'"; # Added 2023-01-03
|
bitwig-studio1 = throw "bitwig-studio1 has been removed, you can upgrade to 'bitwig-studio'"; # Added 2023-01-03
|
||||||
bitwig-studio2 = throw "bitwig-studio2 has been removed, you can upgrade to 'bitwig-studio'"; # Added 2023-01-03
|
bitwig-studio2 = throw "bitwig-studio2 has been removed, you can upgrade to 'bitwig-studio'"; # Added 2023-01-03
|
||||||
blackmagic-desktop-video = throw "blackmagic-desktop-video has been due to being unmaintained"; # Added 2024-07-02
|
|
||||||
blender-with-packages = args:
|
blender-with-packages = args:
|
||||||
lib.warn "blender-with-packages is deprecated in favor of blender.withPackages, e.g. `blender.withPackages(ps: [ ps.foobar ])`"
|
lib.warn "blender-with-packages is deprecated in favor of blender.withPackages, e.g. `blender.withPackages(ps: [ ps.foobar ])`"
|
||||||
(blender.withPackages (_: args.packages)).overrideAttrs
|
(blender.withPackages (_: args.packages)).overrideAttrs
|
||||||
|
|
|
@ -351,7 +351,7 @@ in {
|
||||||
|
|
||||||
dddvb = callPackage ../os-specific/linux/dddvb { };
|
dddvb = callPackage ../os-specific/linux/dddvb { };
|
||||||
|
|
||||||
decklink = throw "The decklink kernel module has been removed due to being unmaintained"; # Module removed on 2024-07-02
|
decklink = callPackage ../os-specific/linux/decklink { };
|
||||||
|
|
||||||
digimend = callPackage ../os-specific/linux/digimend { };
|
digimend = callPackage ../os-specific/linux/digimend { };
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue