sources: switch to upstream
this involves moving the blackmagic package and module from hexchen's nixpkgs fork into this repo directly.
This commit is contained in:
parent
dad94d6e0d
commit
4c9a200c83
6 changed files with 171 additions and 13 deletions
21
modules/decklink.nix
Normal file
21
modules/decklink.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.hardware.decklink;
|
||||||
|
kernelPackages = config.boot.kernelPackages;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.hardware.decklink.enable = mkEnableOption "Enable hardware support for the Blackmagic Design Decklink audio/video interfaces.";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
boot.kernelModules = [ "blackmagic" "blackmagic-io" "snd_blackmagic-io" ];
|
||||||
|
boot.extraModulePackages = [ kernelPackages.decklink ];
|
||||||
|
systemd.services."DecklinkVideoHelper" = {
|
||||||
|
after = [ "syslog.target" "local-fs.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig.ExecStart = "${pkgs.blackmagicDesktopVideo}/bin/DesktopVideoHelper -n";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -5,5 +5,6 @@ in {
|
||||||
imports = [
|
imports = [
|
||||||
"${sources.immae-nix}/modules/webapps/peertube.nix"
|
"${sources.immae-nix}/modules/webapps/peertube.nix"
|
||||||
./nftnat
|
./nftnat
|
||||||
|
./decklink.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,27 +45,27 @@
|
||||||
"url_template": "<repo>/-/archive/<rev>.tar.gz"
|
"url_template": "<repo>/-/archive/<rev>.tar.gz"
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"branch": "hexchen-20.09",
|
"branch": "nixos-20.09",
|
||||||
"description": "Nix Packages collection",
|
"description": "Nix Packages collection",
|
||||||
"homepage": "",
|
"homepage": "",
|
||||||
"owner": "hexchen",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "4b1f1b356d874eae749f7e0d2d9ce9afbe977a88",
|
"rev": "e4adbfbab8aadf9d80a93d40fb612cb910073af9",
|
||||||
"sha256": "0dbhzb1kccsp6qwds93d7kchypj0b0spzkf8jah1lg4vjvxxi2v8",
|
"sha256": "0fs32adk4x5xg9m00nykhxhka927wrnwkjx59as673swh46hdvck",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://github.com/hexchen/nixpkgs/archive/4b1f1b356d874eae749f7e0d2d9ce9afbe977a88.tar.gz",
|
"url": "https://github.com/nixos/nixpkgs/archive/e4adbfbab8aadf9d80a93d40fb612cb910073af9.tar.gz",
|
||||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"branch": "hexchen-main",
|
"branch": "nixos-unstable",
|
||||||
"description": "Nix Packages collection",
|
"description": "Nix Packages collection",
|
||||||
"homepage": "",
|
"homepage": "",
|
||||||
"owner": "hexchen",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9091f350c69d744aad6d9ab5994446bec9a51567",
|
"rev": "891f607d5301d6730cb1f9dcf3618bcb1ab7f10e",
|
||||||
"sha256": "1s8cw7wvnl0liv5rcs882h74lmqh72f01yrdg1h6kg51iwl7swws",
|
"sha256": "1cr39f0sbr0h5d83dv1q34mcpwnkwwbdk5fqlyqp2mnxghzwssng",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://github.com/hexchen/nixpkgs/archive/9091f350c69d744aad6d9ab5994446bec9a51567.tar.gz",
|
"url": "https://github.com/nixos/nixpkgs/archive/891f607d5301d6730cb1f9dcf3618bcb1ab7f10e.tar.gz",
|
||||||
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||||
},
|
},
|
||||||
"pbb-nixfiles": {
|
"pbb-nixfiles": {
|
||||||
|
|
49
pkgs/blackmagic-desktop-video/default.nix
Normal file
49
pkgs/blackmagic-desktop-video/default.nix
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
{ stdenv, requireFile, lib,
|
||||||
|
libcxx, libcxxabi
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "blackmagic-desktop-video";
|
||||||
|
version = "11.6";
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
libcxx libcxxabi
|
||||||
|
];
|
||||||
|
|
||||||
|
src = requireFile {
|
||||||
|
name = "Blackmagic_Desktop_Video_Linux_11.6.tar.gz";
|
||||||
|
url = "https://www.blackmagicdesign.com/support/download/d399ada95c2b49ffad3031bda413acb5/Linux";
|
||||||
|
sha256 = "0qwm1b3gy0k7j1bimkxwwr77g8hrsybs9jp90b46kzcy06mcp380";
|
||||||
|
};
|
||||||
|
|
||||||
|
setSourceRoot = ''
|
||||||
|
tar xf Blackmagic_Desktop_Video_Linux_11.6/other/x86_64/desktopvideo-11.6a26-x86_64.tar.gz
|
||||||
|
sourceRoot=$NIX_BUILD_TOP/desktopvideo-11.6a26-x86_64
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
mkdir -p $out/{bin,share/doc,lib}
|
||||||
|
cp -r $sourceRoot/usr/share/doc/desktopvideo $out/share/doc
|
||||||
|
cp $sourceRoot/usr/lib/*.so $out/lib
|
||||||
|
ln -s ${libcxx}/lib/* ${libcxxabi}/lib/* $out/lib
|
||||||
|
cp $sourceRoot/usr/lib/blackmagic/DesktopVideo/libgcc_s.so.1 $out/lib/
|
||||||
|
cp $sourceRoot/usr/lib/blackmagic/DesktopVideo/DesktopVideoHelper $out/bin/
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
postFixup = ''
|
||||||
|
patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} \
|
||||||
|
--set-rpath "$out/lib:${lib.makeLibraryPath [ libcxx libcxxabi ]}" \
|
||||||
|
$out/bin/DesktopVideoHelper
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = "https://www.blackmagicdesign.com/support/family/capture-and-playback";
|
||||||
|
maintainers = [ maintainers.hexchen ];
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
}
|
66
pkgs/decklink/default.nix
Normal file
66
pkgs/decklink/default.nix
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
{ stdenv, requireFile, fetchpatch, kernel }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
pname = "decklink";
|
||||||
|
version = "11.6";
|
||||||
|
|
||||||
|
src = requireFile {
|
||||||
|
name = "Blackmagic_Desktop_Video_Linux_11.6.tar.gz";
|
||||||
|
url = "https://www.blackmagicdesign.com/support/download/d399ada95c2b49ffad3031bda413acb5/Linux";
|
||||||
|
sha256 = "0qwm1b3gy0k7j1bimkxwwr77g8hrsybs9jp90b46kzcy06mcp380";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
(fetchpatch {
|
||||||
|
name = "01-fix-makefile.patch";
|
||||||
|
url = "https://aur.archlinux.org/cgit/aur.git/plain/01-fix-makefile.patch?h=decklink&id=8f19ef584c0603105415160d2ba4e8dfa47495ce";
|
||||||
|
sha256 = "1pk8zfi0clmysla25jmcqnq7sx2bnjflrarhqkqbkl8crigyspf5";
|
||||||
|
})
|
||||||
|
(fetchpatch {
|
||||||
|
name = "02-fix-get_user_pages-and-mmap_lock.patch";
|
||||||
|
url = "https://aur.archlinux.org/cgit/aur.git/plain/02-fix-get_user_pages-and-mmap_lock.patch?h=decklink&id=8f19ef584c0603105415160d2ba4e8dfa47495ce";
|
||||||
|
sha256 = "08m4qwrk0vg8rix59y591bjih95d2wp6bmm1p37nyfvhi2n9jw2m";
|
||||||
|
})
|
||||||
|
(fetchpatch {
|
||||||
|
name = "03-fix-have_unlocked_ioctl.patch";
|
||||||
|
url = "https://aur.archlinux.org/cgit/aur.git/plain/03-fix-have_unlocked_ioctl.patch?h=decklink&id=8f19ef584c0603105415160d2ba4e8dfa47495ce";
|
||||||
|
sha256 = "0j9p62qa4mc6ir2v4fzrdapdrvi1dabrjrx1c295pwa3vmsi1x4f";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
KERNELDIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
|
||||||
|
INSTALL_MOD_PATH = placeholder "out";
|
||||||
|
|
||||||
|
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||||
|
|
||||||
|
setSourceRoot = ''
|
||||||
|
tar xf Blackmagic_Desktop_Video_Linux_11.6/other/x86_64/desktopvideo-11.6a26-x86_64.tar.gz
|
||||||
|
sourceRoot=$NIX_BUILD_TOP/desktopvideo-11.6a26-x86_64/usr/src
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
|
||||||
|
make -C $sourceRoot/blackmagic-11.6a26 -j$NIX_BUILD_CORES
|
||||||
|
make -C $sourceRoot/blackmagic-io-11.6a26 -j$NIX_BUILD_CORES
|
||||||
|
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
make -C $KERNELDIR M=$sourceRoot/blackmagic-11.6a26 modules_install
|
||||||
|
make -C $KERNELDIR M=$sourceRoot/blackmagic-io-11.6a26 modules_install
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = "https://www.blackmagicdesign.com/support/family/capture-and-playback";
|
||||||
|
maintainers = [ maintainers.hexchen ];
|
||||||
|
license = licenses.unfree;
|
||||||
|
description = "Kernel module for the Blackmagic Design Decklink cards";
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
|
@ -10,8 +10,29 @@ let
|
||||||
peertube = callPackage ./peertube { mylibs = import "${sources.immae-nix}/lib" { inherit pkgs; }; };
|
peertube = callPackage ./peertube { mylibs = import "${sources.immae-nix}/lib" { inherit pkgs; }; };
|
||||||
alps = callPackage ./alps {};
|
alps = callPackage ./alps {};
|
||||||
|
|
||||||
inherit callPackage;
|
docker = pkgs.docker.overrideAttrs (super: {
|
||||||
appendOverlays = overlays: (pkgs.appendOverlays overlays) // newpkgs;
|
extraPath = super.extraPath + ":${pkgs.zfs}/bin";
|
||||||
|
});
|
||||||
|
|
||||||
|
linuxPackagesFor = kernel: (pkgs.linuxPackagesFor kernel).extend (_: ksuper: {
|
||||||
|
decklink = callPackage ./decklink { kernel = ksuper.kernel; };
|
||||||
|
});
|
||||||
|
|
||||||
|
blackmagicDesktopVideo = callPackage ./blackmagic-desktop-video { };
|
||||||
|
|
||||||
|
obs-studio = pkgs.obs-studio.overrideAttrs (_: rec {
|
||||||
|
wrapLibraries = with (pkgs // newpkgs); [
|
||||||
|
xorg.libX11.out
|
||||||
|
libvlc
|
||||||
|
blackmagicDesktopVideo
|
||||||
|
libcxx
|
||||||
|
libcxxabi
|
||||||
|
];
|
||||||
|
postInstall = ''
|
||||||
|
wrapProgram $out/bin/obs \
|
||||||
|
--prefix "LD_LIBRARY_PATH" : "${pkgs.lib.makeLibraryPath wrapLibraries}"
|
||||||
|
'';
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
in pkgs // newpkgs
|
in pkgs.extend(_: _: newpkgs)
|
||||||
|
|
Loading…
Reference in a new issue