summaryrefslogtreecommitdiff
path: root/modules/root/decklink.nix
blob: d88fbfac63555ced144b4a2a5d736e328672ff36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
{ lib, pkgs, ... }: {
	options = {
		decklink.enable = lib.mkEnableOption "enables decklink support";
	};

	config = {
		# Kernel modules
		hardware.decklink.enable = true;

		# DesktopVideoHelper
		environment.systemPackages = with pkgs; [ blackmagic-desktop-video ];

		# Enable decklinkSupport flag globally for all packages that support it (e.g. obs)
		nixpkgs.overlays = [
			#(final: prev: { decklinkSupport = true; })
			(final: prev: {
				blackmagic-desktop-video = (pkgs.callPackage ./software/derivations/blackmagic-desktop-video-gui/generic.nix {}).override({
					desktopVideoFull = true;
				});
			})
		];

		services.udev.extraRules = ''
			ACTION=="add", KERNEL=="blackmagic/dv[0-9]*", MODE="0666", RUN+="${pkgs.blackmagic-desktop-video}/bin/DesktopVideoNotifier add /dev/%k"
			ACTION=="remove", KERNEL=="blackmagic/dv[0-9]*", RUN+="${pkgs.blackmagic-desktop-video}/bin/DesktopVideoNotifier del /dev/%k"
			ACTION=="add", KERNEL=="blackmagic/ttydv[0-9]*", SYMLINK+="blackmagic/serial%n", MODE="0666"


			ACTION=="add", KERNEL=="blackmagic/io[0-9]*", MODE="0666", RUN+="${pkgs.blackmagic-desktop-video}/bin/DesktopVideoNotifier add /dev/%k"
			ACTION=="remove", KERNEL=="blackmagic/io[0-9]*", RUN+="${pkgs.blackmagic-desktop-video}/bin/DesktopVideoNotifier del /dev/%k"
			ACTION=="add", KERNEL=="blackmagic/ttyio[0-9]*", MODE="0666"


			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="bd90", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="bd97", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="bd98", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="bda1", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="bda9", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="bdab", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="bdaa", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="bdbf", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="bdcc", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="bdd1", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="bdda", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="bddb", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="bddc", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="bdf5", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="bdff", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="be07", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="be13", MODE="0666"
			SUBSYSTEM=="usb", ATTRS{idVendor}=="1edb", ATTRS{idProduct}=="be14", MODE="0666"
		'';
	};
}